Сторінка
1

ПАСКАЛЬ: лексика, вирази, семантика

Якщо хтось скаже, що йому потрібна мова програмування, в якій достатньо лише сказати, чого він хоче, щоб було зроблено – дайте йому льодяника.

А.Перліс, 1982 р.

1. Лексика мови Паскаль та загальний вигляд програми 2. Вирази з цілими та бульовими сталими 3. Вирази та оператори 4. Семантика програми

1. Лексика мови Паскаль та загальний вигляд програми Кожна мова починається з алфавіту – скінченної множини символів. Алфавіт мови Паскаль складають:

  • великі й малі латинські букви A, B, . , Z, a, b, ., z;
  • десяткові цифри 0, 1, 2, ., 9;
  • інші символи, серед яких + - * / = > < . , ; : ' ( ) [ ] { } ^ (у діалектах можливі й інші – вони тут не згадуються).
З символів алфавіту складаються лексичні одиниці мови – лексеми, свого роду "цеглинки", подібні словам у природних мовах. Множина лексем мови і правил їх запису утворюють його лексику. Лексеми неподільні й самі по собі позначають деякий зміст. Мова Паскаль має п'ять видів лексем: сталі, імена, знаки операцій, роздільники й коментарі. Сталі – це позначення чисел та інших елементів, представних у комп'ютері. Числові сталі (позначення чисел) мають вигляд, прийнятий у математиці, наприклад, 12, 3.1415926, 2.71828 тощо. Відзначимо лише, що цілу й дробову частини числа відокремлюють крапкою, а не комою. Числові й інші види сталих докладніше розглядаються далі. Імена – це послідовності букв і цифр, що починаються з букви, наприклад, A, b52, x8z, jklmn. Великі й малі букви в іменах не різняться: Nam1, nAM1, nam1 суть те саме ім'я. Ім'я завжди позначає "щось", якийсь об'єкт, виділяючи його серед інших, тобто ідентифікуючи. Тому імена ще називаються ідентифікаторами. Деякі імена використовуються спеціальним чином для утворення програми та її складових частин. Ці імена називаються зарезервованими, або ключовими, або службовими словами. Будемо записувати їх жирним шрифтом. Нам уже знайомі слова begin, end, program. У додатку подано службові слова стандарту мови Паскаль – це звичайні англійські слова або їх скорочення. У діалектах їх більше. Знаки операцій – це позначення операцій, виконання яких над числами й іншими значеннями породжує нові значення. Значення, до яких застосовується операція, називаються її операндами, а породжуване значення – її результатом. Вигляд знаків операцій дуже різноманітний. Нам звичний знак "+" і не зовсім звичні знаки "div" і "<=", тобто імена й послідовності символів. Множину знаків операцій уточнимо далі. До роздільників відносяться дужки, символи ",", ";", ":", "(", ")" (тут їх узято в лапки) та деякі інші. Ними відокремлюються лексеми та інші, більш складні елементи програми. У програмах можна записувати додаткові пояснення – коментарі. Вони не задають ніяких дій, при трансляції пропускаються та призначені лише для того, щоб програму було легше зрозуміти. Коментар – це довільна послідовність символів, що починається символом "{", закінчується символом "}" і не містить "}" усередині. Припускається замість "{" записувати пару символів "(*", а замість "}" – пару "*)". Наприклад,

{ this is the comment (це коментар) } (* це теж *) { і це },

а це вже не коментар, а незрозуміло що}. Коментар можна записати між будь-якими двома лексемами, проте краще цим не зловживати, а записувати їх справа від тексту програми або в окремих рядках. Суміжні імена й сталі відокремлюються пропусками – " ". Пропуск між сусідніми лексемами не обов'язковий, якщо хоча б одна з них є роздільником, коментарем або знаком операції (не ім'ям). Наприклад, знаки операцій + або - не є іменами, а знаки div і mod – є. Тому можна написати 1+2 або 1-2, але не можна 1mod2 або 1div2. Програма, записана мовою Паскаль, має такий загальний вигляд: program ім'я(input, output); послідовність означень імен begin послідовність операторів end. Перший рядок програми називається її заголовком і містить ім'я програми (ідентифікатор). Інші рядки утворюють блок програми, що складається з означень імен (їх може і не бути) і тіла beginend. Крапка після останнього слова end обов'язкова. Наприклад, program rrwl(input, output); const p=3.1415927;

var r, lng : real; begin readln(r); lng:=2*p*r; writeln(lng) end. У цій програмі з ім'ям rrwl є два означення. Перше означає ім'я p, яким далі позначається стала 3.1415927. Слово const свідчить про те, що це означення саме сталої, а не чогось іншого. Друге означення означає імена r і lng двох змінних, про що свідчить слово var (скорочення від англійського variable – змінна). Що таке сталі та змінні, ми дізнаємось у двох наступних підрозділах. У тілі програми записано три оператори, відокремлені символом ";". Перший з них задає читання з клавіатури дійсної сталої, що позначає радіус кола, другий – обчислення довжини цього кола та запам'ятання її в змінній lng, третій – друкування на екрані сталої, що позначає довжину кола.

2. Вирази з цілими та бульовими сталими

Цілі числа створив Господь Бог, решта є справою рук людських.

Л.Кронекер 2.1. Значення та сталі У комп'ютер закладено способи подання чисел, символів і значень "істина" й "хибність". Ми розглянемо їх докладніше в розділі 7, а поки скажемо лише, що є два способи подання чисел – один для цілих і зовсім інший для дійсних. Далі будемо ототожнювати число та його подання в комп'ютері, хоч насправді це зовсім не те саме. Отже, в комп'ютері обробляються значення чотирьох видів – цілі й дійсні числа, символи та значення "істина" й "хибність", які називаються бульовими. У мові Паскаль вони позначаються сталими. Тут ми розглянемо лише цілі й бульові сталі. Ціла стала – це, як і в математиці, послідовність десяткових цифр, можливо, із знаком "+" або "-" попереду: 0, +1024, -273 тощо. У комп'ютері можна подати не всю множину цілих чисел, а деяку її скіненну підмножину, що залежить від комп'ютера й системи програмування. Найбільше з цілих чисел позначається ім'ям maxint. Однією з особливостей машинного подання чисел є те, що найбільше за модулем від'ємне число, представне в комп'ютері, можна задати виразом вигляду -maxint-1. Бульові сталі мають вигляд false і true та позначають відповідно значення, про які ми звикли говорити "хибність" та "істина". Отже, стала позначає значення. Уживемо вперше загадкове слово "семантика", що тлумачиться як "зміст": семантикою сталої є відповідне значення (число або щось інше). Взагалі, семантикою якогось позначення є те, що ним позначено. У цьому розділі ми дістанемося й до поняття "семантики програми", тобто опишемо те, що вона задає. 2.2. Тип цілих чисел Комп'ютер "уміє" виконувати операції з цілими числами. Знаки двомісних (бінарних) операцій +, -, * позначають додавання, віднімання та множення, наприклад, 2+3, 2-3, 2*3 (результатом чого будуть цілі 5, -1, 6). Знаками div і mod задається породження цілих частки й залишку від ділення цілих: результатом 7 div 2 є 3, а результатом 7 mod 2 – 1. Знак / також задає ділення, але результатом його є число в його "дійсному" поданні, тобто 4/2 – це не ціле, а "дійсне число 2" (докладніше про це в розд. 7). В усіх трьох діленнях дільник не може бути нулем – інакше результат не визначений. Знак "-" задає застосування одномісної (унарної) операції "мінус": -2, -(2+3). Порівняння цілих чисел задається знаками =, <>, >, <, >=, <= ("дорівнює", "не дорівнює", "більше", "менше", "не менше", "не більше"). Результатом є "істина" або "хибність": 1=2 – false, 1<>2 – true, 1>=1 – true тощо. Операції порівняння називаються відношеннями. Є кілька операцій, що задаються дещо незвично, у вигляді f(…), де f – ім'я. Вирази такого вигляду називаються викликами функцій. Наприклад, вираз вигляду odd(x) задає обчислення ознаки непарності: значенням odd(7) є true, odd(12) – false. До цілих чисел застосовні й інші операції (розд. 10). Через скінченність множини цілих чисел, представних у комп'ютері, багато операцій із цілими визначені частково. Так, не всякі два числа можна додати або умножити, оскільки результат може виявитися не представним у комп'ютері. Наприклад, maxint+1 або maxint*2. Отже, ми визначили, хоча і не точно, множину "цілих чисел" Z і множину операцій O, застосовних до них. Пара (МНОЖИНА ЕЛЕМЕНТІВ, МНОЖИНА ОПЕРАЦІЙ ІЗ НИМИ) у математиці називається типом. Множина елементів називається носієм типу, а множина операцій – його сигнатурою. Тип (Z, O) називається типом цілих і в мові Паскаль позначається ім'ям integer. Тип цілих значень називається скалярним, оскільки ці значення розглядаються як неподільні, тобто такі, що не складаються з окремих частин. Далі ми познайомимося з іншими скалярними типами мови Паскаль. Вони називаються базовими типами цієї мови. Ми також познайомимося із структурними типами. Їх елементи, на відміну від скалярних, складені з частин, які можна позначати окремо. Задача 2.1.* Указати всюди і не всюди визначені операції над цілими. Відповідь обгрунтувати. 2.3. Булів тип

A B

A and B

A or B

not A

false false

false

false

true

false true

false

true

true

true false

false

true

false

true true

true

true

false

Перейти на сторінку номер:
 1  2  3  4  5 


Інші реферати на тему «Інформатика»: