У мові Паскаль вони позначаються сталими. Тут ми розглянемо лише цілі й бульові сталі.
Ціла стала – це, як і в математиці, послідовність десяткових цифр, можливо, із знаком "+" або "-" попереду: 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
Сталі false і true позначають бульові значення "хибність" і "істина". До них застосовні операції "та", "або", "не", що називаються відповідно бульовим множенням (кон'юнкцією), бульовим додаванням (диз'юнкцією) і запереченням. В мові Паскаль вони позначаються знаками and, or і not. Результати застосування цих операцій до бульових значень подано в табл.2.1.
Крім бульових операцій, означено операцію "порядковий номер" ord: ord(false)=0, ord(true)=1. Порядковим номерам бульових значень відповідає результат їх порівняння: false < true. Очевидним чином означено й інші операції порівняння: =, <>, >, <=, >=.
У діалекті Турбо Паскаль додатково означено корисну операцію "виключне або", знак якої xor:
false xor false = true xor true = false,
false xor true = true xor false = true.
Її ще називають "додавання за модулем 2" – якщо подати false і true числовими значеннями 0 і 1 відповідно, а знак xor замінити знаком ? , то
0 ? 0 = 1 ? 1 = 0, 0 ? 1 = 1 ? 0 = 1.
Отже, ми означили тип, що називається бульовим і позначається ім'ям Boolean на честь видатного англійського математика й логіка Джорджа Буля, засновника математичної логіки.
Задачі
2.2.* Виразити операцію xor через інші бульові операції.
2.3.* Указати значення, що утворюються в результаті застосування операцій:
а) (2*2=4) and true; б) (2*2=4) or false;
в) (not true) or false; г) (ord(true)=1) xor (ord(false)=0).
2.4. Вирази: процес обчислення та значення
Ціла або бульова стала є виразом. Складніший вираз утворюється з простішого або простіших як
вираз у дужках;
два вирази й знак бінарної операції між ними;
вираз із знаком унарної операції перед ним;
виклик функції з виразом у дужках.
Ось приклади виразів: ((1)), true and false, 1-(2+3), (1-2)+3, (1+2)<>3, -(5+3), odd(2), ord(odd(15)).
Те значення, до якого застосовується операція, називається її операндом. Операнди позначаються виразами. Найпростішими з них є сталі. Вираз задає застосування операцій до операндів – значень простіших виразів. Послідовність виконання