Сторінка
1
Якщо хтось скаже, що йому потрібна мова програмування, в якій достатньо лише сказати, чого він хоче, щоб було зроблено – дайте йому льодяника.
А.Перліс, 1982 р.
1. Лексика мови Паскаль та загальний вигляд програми 2. Вирази з цілими та бульовими сталими 3. Вирази та оператори 4. Семантика програми
1. Лексика мови Паскаль та загальний вигляд програми Кожна мова починається з алфавіту – скінченної множини символів. Алфавіт мови Паскаль складають:
- великі й малі латинські букви A, B, . , Z, a, b, ., z;
- десяткові цифри 0, 1, 2, ., 9;
- інші символи, серед яких + - * / = > < . , ; : ' ( ) [ ] { } ^ (у діалектах можливі й інші – вони тут не згадуються).
{ this is the comment (це коментар) } (* це теж *) { і це },
а це вже не коментар, а незрозуміло що}. Коментар можна записати між будь-якими двома лексемами, проте краще цим не зловживати, а записувати їх справа від тексту програми або в окремих рядках. Суміжні імена й сталі відокремлюються пропусками – " ". Пропуск між сусідніми лексемами не обов'язковий, якщо хоча б одна з них є роздільником, коментарем або знаком операції (не ім'ям). Наприклад, знаки операцій + або - не є іменами, а знаки div і mod – є. Тому можна написати 1+2 або 1-2, але не можна 1mod2 або 1div2. Програма, записана мовою Паскаль, має такий загальний вигляд: program ім'я(input, output); послідовність означень імен begin послідовність операторів end. Перший рядок програми називається її заголовком і містить ім'я програми (ідентифікатор). Інші рядки утворюють блок програми, що складається з означень імен (їх може і не бути) і тіла begin … end. Крапка після останнього слова 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 |