Б С Бусигін - Прикладна інформатика - страница 25

Страницы:
1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36  37  38  39  40  41  42  43  44  45  46  47  48  49  50  51  52  53  54  55  56  57  58  59  60  61  62  63  64  65  66  67  68  69  70  71  72  73  74  75  76  77  78  79  80  81  82  83 

in

packed

to

 

Ідентифікатори виступають іменами констант, типів даних, змінних (об'єктів для зберігання даних різних типів), процедур, модулів, програм і полів записів. Ідентифікатор може мати довільну довжину, але для ТП значення мають тільки перші 63 символи. Решта символів значення не має, але зберігається. Ідентифікатор повинен починатися з літери або знака підкреслення ( _ ) і не може містити розподілювачів (пробілів, коментарів). Після першого символу ідентифікатора можна використовувати літери, цифри, символи підкреслення (доречи, у кодуванні ASCII значення коду цього символу: десятинне - 95, шістнадцятирічне - $5F, тобто у байті розміщуються слідуючи вісім бітів 01011111, див. Додаток 6). І у зарезервованих словах, у ідентифікаторах можна використовувати як строкові, так і прописні літери (компілятор їх не розрізнює). Для уточнення деяких ідентифікаторів потрібне посилання на той ідентифікатор, від якого перший залежить. Наприклад, для уточнення ідентифікатора Ident за допомогою ідентифікатора UnitName

17 18

потрібно писати UnitName.Ident   у рамках існуючого контексту . Наведемо декілька прикладів ідентифікаторів:

Writeln Dos_Exec Int22String5

Exit Crt.Windows NameOfTheGame

Real2String F1.txt System.MemAvail

First_Name

15 Ідентифікатор - неподільна (рос. - неделимая) послідовність символів алфавіту, яка утворює (рос. - образо­вывает) ім'я об'єкту, що використовується.

16 Ім'я є символічним уявленням "сутності" (рос. - сущность). Сутність може являтися об'єктом або деякою дією, що виконується. Сутність може мати велику кількість найменувань. Кожне ім'я має сенс тільки в границях деякого іменного контексту.

17 Зв'язування (рос. - связывание) є відображенням імені на відповідну сутність. В рамках контексту ім'я може мати не більше одного зв'язування. Можна посилатися за допомогою іншого імені на контекст. Структуроване або складене (рос. - составное) ім'я формується у вигляді комбінації імені контексту з ім'ям сутності у цьому контексті, які розподілені крапкою.

18 Контекст - фрагмент документу, у межах якого можна уяснити значення окремого слова або об'єкту, які в нього входять. Тільки у контексті слово або об'єкт отримують конкретне значення.

Таким чином, при реалізації алгоритмів на мові ТП важливо пам'ятати наступне.

О Імена (ідентифікатори) не можуть починатися з цифри і містити у собі російські чи українські літери та символ пробілу.

ФУ іменах допускається використання великих (прописних) та малих англійських літер, цифр від 0 до 9 та символу підкреслення (_), що має ЛЗСІІ-код 95 (Додаток 6).

Ф Кількість символів у ідентифікаторах (іменах) обмежується редактором ТП до 127, а сам компілятор ТП відрізняє один ідентифікатор від іншого по першим 63-м символам.

ФДля підвищення змістовності ідентифікаторів у мові ТП прийнято конструювати їх за принципом, коли декілька слів пишуться одне за одним, але кожне з великої букви.

ZarazWyBachyteIdentificatorDlaZberiganniaRechovoyiZminnoi:=0.2 65; ZarazWyBachyteIdentificatorDlaZberiganniaRechovoyiZminnoi1:=54.3;

Вищенаведені ідентифікатори розрізнюються компілятором ТП, оскільки перший містить 60 символів, а другий - 61, з яких перші 60 співпадають.

Zaraz_Wy_Bachyte_Identificator_Rechovoyi_Zminnoyi := 0.265; Zaraz_Wy_Bachyte_Identificator_Rechovoyi_Zminnoyi_1   := 1.3;

Нагадуємо, що вищенаведені ідентифікатори містять у середині символи підкреслювання.

Вправи

1. Поясніть поняття «Базові елементи мови Турбо Паскаль». Навести приклади.

2. Поясніть поняття: алфавіт мови програмування, ключове слово, мінімальна значеннєва одиниця мови. Яке призначення цих понять у тексті програми? Навести приклади.

3. Поясніть поняття ідентифікатора. Сформулюйте правила написання ідентифікатора. Поясніть призначення ідентифікатора в програмі.

4. Що таке розподілювач (роздільник) у тексті програми, для чого служать роздільники? Навести приклади.

5. Поясніть поняття «коментар» та його призначення в тексті програми.

6. Чим прості символи відрізняються від складених символів?

7. Якими символами може починатися ідентифікатор, а якими не може?

8. Яка може бути мінімальна кількість символів у ідентифікаторі?

9. Яка може бути максимальна кількість символів у ідентифікаторі, що її розрізняє транслятор?

8.4. Константи, змінні та їх типи

Усі дані (числа, значення обчислених виразів, тексти, результати порівнянь та ін.) у програмі інтерпретуються як константи і змінні.

Константи у процесі роботи програми ніколи не змінюють своє значення. Будь яке число, котре з'являється у програмі у звичайному вигляді (наприклад: 6.0 або 20) зветься константою. Величина, котрій привласнюється найменування і котра може приймати у процесі обчислень різні числові значення, зветься змінною. У відповідності до того, які дані розміщуються у змінних, ті можуть мати різні типи, що визначає припустимі з ними операції (табл. 8.5).

Таблиця 8.5

Найменування типу

Спосіб представлення (приклади даних відповідного типу)

Допустимі до цього типу даних операції

Real (дійсні числа)

1.0

0.0012 1Е-6

-2.639Е4

+ -/*

•>   у •> ■

Integer (цілі числа)

1

-56

2892

+,-, *, DIV, MOD.

Char (символи)

A, 'A', 1, '1'

операції порівняння, зціплення (+) конкатенації

String (стрічки)

'Type mismutch!' 'Українська мова' 'Не забудьте ввести!'

операції порівняння, зціплення (+) конкатенації, перетворення

Boolean (логічні значення)

false, true (неправда), (правда)

операції порівняння, логічні операції

Array (масиви)

Послідовність значень вищевказаних чи інших типів

всі операції, що допустимі для відповідних типів

Примітка: 1) До операцій порівняння належать наступні: = - дорівнює; <> - не дорівнює; > - більше; < - менше; >= - більше або дорівнює, <= -менше або дорівнює.

2) Логічні операції включають: OR - логічне додавання, AND -логічне множення, NOT - операція заперечення (рос. - отрицания), XOR -виключне АБО (рос. - или).

Цілі і дійсні константи розрізняються наявність або відсутністю десятинної точки. Так, 3 - ціла константа, а 3.0 або 3.000000 - дійсні константи і спосібзапису їх у пам'яті ПК та арифметичні операції, що з ними можна виконувати абсолютно різні.

Щоб спростити запис дуже великих та дуже малих чисел, використовується наступний спосіб. Після дійсної константи розташовується літера Е та одно- або двозначне ціле число з відповідним знаком (+ чи -). Такий запис вказує на те, що початкова константа повинна бути помножена на 10 у вказаній степені.

Наприклад, константи:

+15.016 (можна записати у вигляді 1.5016Е01 або 1.5016Е+01); 5.0Е+6 (можна записати у вигляді 5000000.0); 0.0000173 (можна записати у вигляді 1.73е-5).

Термін "змінна" використовується у мові ТП для позначення величини, звернення до якої призводиться через її найменування і котра може приймати різні значення, а не обмежена якимось одним.

Змінні свої значення і стан можуть змінювати багаторазово. Як відзначалося раніше вони мають ім'я і тип. Ці типи (цілі, дійсні, логічні, символьні, текстові та ін.) користувач повинен описати на початку програми за допомогою спеціальних зарезервованих слів (див табл. 8.5).

Тип даних визначає:

1. Спосіб представлення елементів сукупності (цифровий, текстовий, логічний та ін.);

2. Множину (рос. - множество) допустимих значень;

3. Множину припустимих операцій, котрі використовуються до даного типу.

У таблиці 8.6 наведені приклади опису констант і змінних при використанні їх у програмах на мові Турбо Паскаль.

Таблиця 8.6

_Опис змінних і констант у програмах ТП_

Опис констант (перед знаком "=" вказується ім'я константи)

Опис змінних (після двокрапки позначений тип змінної)

Const

Var

Rand = 5.2E-5;

R,t,p  : real;

Norma = - 54;

I,j,k : integer

T = FALSE;

a  : Boolean;

Symbol='R';

c  : char;

My Name = 'Alex';

S1  : string;

Змінні і константи усіх типів використовуються у виразах (рос. -выражениях).

Вирази задають порядок виконання дій над елементами даних і складаються з операндів (констант, змінних, звернень до функцій), круглих дужок та знаків операцій. Операції, у свою чергу, визначають дії, котрі треба виконувати з операндами (дивись таблицю 8.7).

Таблиця S.7

Приклади реальних виразів і їх запису на ТП_

Тип виразу і змінних у ньому

Математичний (чи реальний) вираз

Реалізація на Турбо Паскалі

Дійсний

б * 4

І

2   ( Ь )

c

6*sqrt(sqrt((a*a*(b/c))/ ((b+c)/2))

 

 

Ь + c 2

 

Цілий

a , 2 a + Ьч 2'(Х    c )

a div 2 * (sqr(x) *((a+b)   div c)

Логічний

-(A v Б) л (C v -D)

NOT   (A OR B)  AND   (C OR NOT D)

Символьний

Д + А = ДА

'Д' + 'A' = 'ДА'

Строковий

Сьогодні вівторок

'Сьогодні вівторок'

Примітка: sqrt(x)   - функція добування квадратного  кореня зі значення х; sqr(x) - зведення (рос. - возведение) значення х у другу степінь; div - математична операція ділення цілковито одного цілого числа на інше;

NOT, OR, AND - логічні операції (відповідно:  заперечення (рос. -отрицания), логічне підсумовування та логічне множення).

Операції, що застосовуються до операндів бувають унарні (одномісцеві) та бінарні (двомісцеві) (див. таблицю 8.8).

Таблиця 8.8

__Одномісні та двомісні операції у ТП_

Тип виразу і змінних у ньому

Тип операції

Математичний (чи реальний) вираз

Реалізація на Турбо Паскалі

Дійсний, цілий

Одномісна

- 1.35; -ЗО

- 1.35; -ЗО

 

Двомісна

5.1-25

5.1 * 25

Логічний

Одномісна

-D A v Б

NOT D

 

Двомісна

 

A OR B

Термін "вираз" використовується у мові ТП у тому ж значенні, що у звичайному математичному запису. Вираз може конструюватися з констант, змінних і функцій (вбудованих або створених користувачем), що об'єднуються поміж собою символами операцій, комами та дужками.

Дійсні і цілі числа можна "змішувати" у дійсних виразах і не можна у цілочисельних виразах., бо арифметика цих двох типів базується за абсолютно різними способами.

Для дійсних типів Real кількість цифр, що може зберігатися у пам'яті комп'ютера дорівнює 11-12-ти. Тому арифметичні операції, до того ж, з дробами кінцевої довжини не завжди точно відповідають звичайним правилам арифметики. Щоб це зрозуміти розглянемо наступний вираз:

0.40000000000 + 12345б789778.0 - 12345б789777.0

11 цифр 11 цифр 11 цифр

Оскільки операції будуть виконуватися зліва на право, то результат додавання з точністю 11 знаків буде дорівнювати 1234567S977S.O і O.4 безповоротно загублене. Після віднімання 1234567S9777.O кінцевий результат буде дорівнювати 1.OOOOOOOOOOO. Але, якщо вираз записати з дужками 0.40000000000 + (12345б78978.0 - 12345б78977.0)

то виконання операції віднімання попередньо у дужках , а потім тільки додавання першого числа дасть вірний результат 1.4.

Невірний порядок виконання дій може призвести не тільки до втрати точності, але взагалі до повної невдачі. Припустимо, необхідно обчислити

30

вираз А*В/С, у якому величини А, В і С усі рівні 10 . Спочатку буде виконано множення, яке дасть 10б0, що дуже велике для тієї величини, що може міститься у змінній типу real. Тому система ТП виведе попередження:

Error 2Q5: Floating point ouerflou._

(Помилка 205: Переповнення числа з плаваючою точкою)

і вирішення задачі буде припинено. Але, якщо ті ж самі дані описати типом extended, який вміщує значно більші значення, обчислення будуть проведені коректно. На рисунку S.14 показано як взаємодіють цілі числа з різними типами операцій у виразах, які привласнюються змінним різних типів.

var    x,  y  : real;

i,  j   : integer;

Begin

x := 5 / 2; {операція дійсного ділення дасть дійсне значення 2.5, а оператор привласнення занесе його у дійсну змінну х}

y := 5 div 2; {операція цілочисельного ділення за умови наявності зліва від оператора привласнення дійсної змінної y, компілятором замінюється оператором дійсного ділення та у змінну y заноситься дійсне значення 2.5}

i := 5 div 2; {операція цілочисельного ділення дасть ціле значення 2, що буде занесено у цілочисельну змінну i}

j := 5 / 2; {операція дійсного ділення не буде виконана і компілятор видасть наступну діагностику }

Error 26:  Type mismatch.

{що переводиться, як неспівпадання типів справа і зліва від оператора привласнення}

Рисунок S.14. Взаємодія типів операцій з типами змінних

При діленні цілих чисел виникають свої особливі проблеми. Коли ціле число ділиться на ціле, то результат у загальному випадку буде дрібним (рос. -дробным) числом. Але тому що результат повинен бути цілим, число, що буде отримане, буде перетворено на ціле шляхом відкидання дробової частини.

5/З = l (5 ділиться на З цілковито! У ТП це запишеться 5 div З),

б/ї = O (б ділиться на ї цілковито! У ТП це запишеться б div ї) і т.д.

Однак потрібно добре розуміти особливості обчислень окремо з дійсними і окремо з цілими значеннями, а також їх взаємодію зі змінними, у які вони повинні бути розміщені. Краще за все це можна уяснити з приклада, наведеного на рис. 8.l4.

Несподіванки можуть робитися і з дійсними числами. Розглянемо наступну суму:

1.O І 3.O + 1.O І 3.O + 1.O І 3.O.

Результат ділення l.O І 3.O дорівнює з точністю до ll знаків 0.33333333333. Загальна сума буде дорівнювати O.99999999999, а ніяк не l.OOOOOOOOOOO!

Таким чином потрібно дуже обережно конструювати вирази з даними і операціями з погляду на іх типи.

Вправи

і^питінь мовою ТП слідуючи вирази з початку з припущенням що усі змінні дійсні (real), а потім, що усі змінні цілі (integer):

3 A + C

а) X + Y3 б) j+D

в)

(X + Y )2

д)

A + B C

ж)

A+

B

C+D

г)

е)

з)

A + D

C+

B

A+

F+G B

C

f X ї

3

2.Виконайте дії на сумісність типів:

а) Х:=45; У:=578; 7:=Х+У. Який може бути тип величин X, У і 7?

б) Х:=6546; У: =5655.665; 2:=Х-У. Який може бути тип величин X, У і 7?

в) Х:=65; У:=5; 2:=Х/У. Який може бути тип величин X, У і 7?

г) Х=567687687; У=5.89; 7=Х+У. Який може бути тип величин X, У і 7?

8.5. Загальна структура програм на Турбо Паскалі

Страницы:
1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36  37  38  39  40  41  42  43  44  45  46  47  48  49  50  51  52  53  54  55  56  57  58  59  60  61  62  63  64  65  66  67  68  69  70  71  72  73  74  75  76  77  78  79  80  81  82  83 


Похожие статьи

Б С Бусигін - Прикладна інформатика