bobalo(1)
.pdf13. |
(1+ x)−3 =1− |
|
1 |
|
(2 3x −3 4x2 + 4 5x3 −5 6x4 +...); |
|
x |
|
<1. |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
1 2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
14. |
(1+ x) |
−4 |
= 1− |
|
|
1 |
|
|
|
|
(2 3 4x − 3 4 5x |
2 |
+ 4 5 6x |
3 |
− 5 6 7x |
4 |
+ ...); |
|
x |
|
< 1 |
||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||
|
|
1 2 3 |
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||
|
−1 |
|
|
|
|
|
1 |
|
|
|
1 3 |
|
|
|
2 |
|
|
1 3 5 |
|
3 |
|
1 3 5 7 |
|
4 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
.15. (1+ x) |
2 =1 |
− |
x + |
|
x |
− |
|
x |
+ |
x |
−...; |
|
|
x |
|
<1. |
|
|
|
|
|
|
|||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||
|
2 |
2 4 |
|
|
2 |
4 6 |
|
2 |
4 6 8 |
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||
16. |
(1+ x) |
− |
1 |
3 |
=1− |
1 |
|
x |
+ |
1 4 |
|
x |
2 |
− |
1 4 7 |
x |
3 |
+ |
1 4 7 |
10 |
x |
4 |
−...; |
|
x |
|
<1. |
||||||||||||||||||||||||||
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
3 |
3 |
6 |
|
|
3 |
6 9 |
|
3 6 |
9 |
12 |
|
|
|
||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
17. (1+ x)−14 =1−
18. shx = x + x3 +
3!
19. chx =1+ x2 +
2!
∞
20. ex2 = ∑(−1)k
k =0
|
1 |
x + |
|
1 5 |
x2 |
− |
1 5 9 |
x3 |
+ |
|
1 5 9 13 |
x4 −...; |
|
x |
|
<1. |
||||||||||||||||||
|
|
|
|
|||||||||||||||||||||||||||||||
4 |
|
4 8 |
4 8 12 |
4 8 12 16 |
||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||
|
x5 |
+ |
|
x7 |
+.. + |
|
|
|
x2n+1 |
|
±...; |
|
|
|
x |
|
< ∞. |
|
|
|
|
|
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||
5! |
|
7! |
|
(2n +1)! |
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||
x4 |
|
+ |
x6 |
|
+... + |
|
|
x2n |
|
±...; |
|
x |
|
<∞. |
|
|
|
|
|
|||||||||||||||
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||
4! |
|
|
6! |
|
|
(2n)! |
|
|
|
|
|
|
|
|||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
x2k |
; |
|
|
|
x |
|
<∞. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||
|
k! |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
∞ |
|
|
|
|
|
|
|
|
2 |
2k |
−1 |
x |
2k |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
21. |
sin2 x = ∑(−1)k +1 |
|
|
|
|
; |
|
x |
|
|
|
< ∞. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||
|
(2k)! |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||
|
|
|
|
k =1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
22. |
(1− x) |
12 =1− |
|
x |
|
− |
1 1 |
x2 |
− |
1 1 3 |
|
|
x3 − |
|
1 1 3 5 |
|
x4 |
−...; |
|
|
x |
|
|
|
≤1. |
|
||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
2 4 |
2 4 6 |
|
|
|
2 4 6 8 |
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||
23. |
(1− x) |
13 =1− |
x |
|
− |
1 2 |
x2 − |
1 2 5 |
x3 − |
|
1 2 5 8 |
|
x4 |
−...; |
|
|
|
|
x |
|
|
|
≤1. |
|
||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
3 |
|
|
|
3 6 |
|
|
|
|
3 6 9 |
|
|
|
|
|
3 6 9 12 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||
24. |
(1− x) |
14 =1− |
x |
|
− |
1 3 |
x2 |
− |
1 3 7 |
|
|
x3 |
− |
|
1 3 7 11 |
|
x4 −...; |
|
x |
|
≤1. |
|
||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
4 8 |
4 8 12 |
|
4 8 12 16 |
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
4 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||
25. |
(1− x)−2 =1+2x +3x2 +4x3 +5x4 +...; |
|
|
x |
|
<1. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||
26. |
(1− x)−3 =1+ |
1 |
|
(2 3x +3 4x2 + 4 5x3 +5 6x4 +...); |
|
x |
|
<1. |
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1 2 |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
27. |
(1− x) |
−4 |
= 1+ |
|
1 |
|
|
(2 3 4x |
+ 3 4 |
5x |
2 |
+ |
4 5 6x |
3 |
+ 5 |
6 7x |
4 |
+ ...); |
|
x |
|
< 1 |
. |
|||||||||||||||||||||||||||||||||||||
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
1 2 3 |
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
91 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
28. |
(1− x) |
− 1 |
2 |
=1+ |
1 |
x + |
1 3 |
x |
2 |
+ |
|
1 3 5 |
x |
3 |
+ |
|
1 3 5 7 |
|
x |
4 |
|
+...; |
|
|
x |
|
<1. |
|||||||||||||||
|
|
|
|
|||||||||||||||||||||||||||||||||||||||
|
2 |
2 4 |
|
|
2 4 6 |
|
|
2 4 6 8 |
|
|
|
|
|
|
||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
29. |
(1− x) |
− 1 |
3 |
=1+ |
1 |
x + |
1 4 |
|
x |
2 |
+ |
1 4 7 |
|
x |
3 |
+ |
1 4 7 10 |
x |
4 |
+...; |
|
|
x |
|
<1. |
|||||||||||||||||
|
|
|
||||||||||||||||||||||||||||||||||||||||
|
3 |
3 6 |
|
|
3 6 9 |
|
|
3 6 9 12 |
|
|
|
|
|
|||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
30. |
(1− x) |
− 1 |
4 |
=1+ |
1 |
x + |
1 5 |
x |
2 |
+ |
|
1 5 9 |
|
|
x |
3 |
+ |
|
1 5 9 13 |
|
|
x |
4 |
+...; |
|
|
|
|
|
|
x |
|
<1. |
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||
|
4 |
4 8 |
|
|
|
4 8 12 |
|
|
4 8 12 16 |
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
92
Лабораторна робота № 5
ТИПИ ДАНИХ У МОВІ ПАСКАЛЬ ТА РОБОТА З МАСИВАМИ
93
1. МЕТА РОБОТИ
Мета роботи – ознайомитись з типами даних у мові Паскаль, методами їхнього опису і застосування, набути навичок роботи з масивами.
2. ТЕОРЕТИЧНІ ВІДОМОСТІ
Концепція мови Паскаль передбачає широкі можливості як у застосуванні стандартних типів, так і у створенні нових типів. Усі типи даних можна поділити на дві групи:
1)прості, або скалярні;
2)складні, або структуровані.
Класифікацію типів даних мови Паскаль наведено на рис. 1. Прості типи знову поділимо на дві групи :
1. Стандартні типи, до яких належать чотири стандартні типи:
REAL;
INTEGER;
BOOLEAN;
CHAR;
Типи даних
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Прості типи |
|
|
|
|
|
|
|
|
|
|
Складні типи |
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Тип масиву |
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ARRAY |
||
|
Стандартні |
|
|
|
|
|
|
Змінні |
|
|
|
|
|
|
|
|
|||||||
|
|
типи |
|
|
|
|
|
|
типи |
|
|
|
|
|
Тип запису |
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
RECORD |
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
Дійсний |
|
|
|
|
Перелічуваний |
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
(REAL) |
|
|
|
|
|
|
|
типи |
|
|
|
|
|
|
у E |
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Типфайла FILE |
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
Цілий |
|
|
|
|
|
Обмежений |
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
|
|
(INTEGER) |
|
|
|
|
|
|
|
типи |
|
|
|
|
|
Тип множини |
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SET |
|
|
|
Логічний |
|
|
|
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
(BOOLEAN) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Вказівниковий |
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
тип |
|||
|
|
Символьний |
|
|
|
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
(CHAR) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Рис. 1. Типи даних у мові Паскаль
2. Змінні типи, до яких належать перелічуваний та інтервальний (або обмежений) типи.
94
Структуровані типи визначають спосіб утворення нових типів з уже існуючих. Кожен елемент цього типу, своєю чергою, може бути як простим, так і структурованим. Отже, мова Паскаль дає змогу створювати структуру даних довільної складності ( ієрархічну структуру даних ).
До структурованих типів у стандарті мови Паскаль належать:
1)регулярні типи (масиви);
2)комбіновані типи (записи);
3)файлові типи;
4)множинні типи;
5)об’єктові (вказівникові) типи;
УTurbo Pascal-і є ще один додатковий клас типів: 6) рядкові типи.
2.1.СТАНДАРТНІ ТИПИ ДАНИХ
Упопередніх темах ми вже використовували стандартні типи: INTEGER, REAL, CHAR і BOOLEAN. Систематизуємо ці поняття.
Цілий тип INTEGER. Значеннями цілого типу є елементи підмножини цілих чисел, які задовольняють умову:
− MAXINT ≤ N ≤ MAXINT .
Для нашого класу машин:
− 32768 ≤ N ≤ 32767 .
Якщо під час обчислень результат виходить за межі цього інтервалу, можливі два варіанти:
1)виконання програми припиняється і видається повідомлення про помилку (переповнення порядку);
2)виконання програми продовжується, але результат є неправильним (наприклад, сума двох додатних чисел може дати від’ємний результат).
Устандарт мови Паскаль був закладений перший варіант. Робота машини переривалася. У сучасних компіляторах, на жаль, переважає другий варіант, тому програміст повинен сам слідкувати за коректністю обчислень.
Змінні цілого типу описуються так:
VAR
I, J, K: INTEGER; A, B: INTEGER;
Ціле число представляється в пам’яті машини дискретно (однозначно), тому цілий тип є впорядкованим типом. Над змінними цілого типу можуть виконуватись п’ять арифметичних операцій:
•Додавання + (a+b);
•Віднімання - (a-b);
•Множення * (a*b);
95
•Ділення цілих чисел DIV (7 DIV 2 = 3);
•Обчислення залишку від ділення цілих чисел MOD (7 MOD 2 = 1). Результат виконання цих операцій буде цілого типу. 7+4=11, 7DIV4=1,
7MOD4=3, але не може виконуватись операція ділення ‘/’, оскільки це операція ділення дійсних чисел. 7/4 хоч операндами є цілі числа, але результат буде дійсного типу 1.75. Числа 7 і 4 спочатку переводяться до дійсного типу, а потім здійснюється ділення 7.0/4.0.
Над змінними цілого типу можуть виконуватись операції порівняння: >, >=, <, <=, =, <>. Змінні цілого типу можуть використовуватися в операндах логічних операцій: (a > 5) AND(I < 10) .
Змінні цілого типу можуть бути аргументами всіх стандартних математичних функцій, але ціле значення при цілочислових аргументах повертають лише дві стандартні функції: ABS(x) і SQR(x). ABS(-9)=9, SQR(4)=16. Результат цілого типу повертають функції TRUNC(x) і ROUND(x), але аргумент х буде дійсного типу:
ROUND(x) – заокруглення дійсного числа х до цілого: ROUND(3.75)=4; ROUND(3.45)=3. TRUNC(x) – виділення цілої частини дійсного числа х: TRUNC(3.75)=3; TRUNC(3.45)=3.
Оскільки змінні цілого типу є впорядкованими, то до них можуть застосовуватись стандартні функції PRED(x), SUCC(x):
PRED(9)=8; SUCC(9)=10.
Функція ORD(x) – (порядок) дає значення цілого числа
ORD(7)=7.
Функція ODD(x) – (парність числа) дає значення TRUE, якщо ціле число х непарне і значення FALSE, якщо ціле число х парне.
ODD(9)= TRUE; ODD(2)= FALSE.
Дійсний тип REAL. Змінна дійсного типу не представляється в пам’яті машини дискретно (однозначно). Число 0.48 може бути представлено як 0.4799, як 0.480001, як 0.476899, залежно від того, яку точність обчислень дає ЕОМ, або яку точність вибирає програміст і представляється дійсне число. Тобто дійсне число – це не одне число, а ціла підмножина значень. Дійсне число – це приблизне число, а операції над дійсними числами виконуються за правилами приблизних чисел. Тому використання операції ‘=’ рівності до дійсних чисел не коректне. Наприклад, умова IF a = 0.48 THEN … може ніколи не виконатись, оскільки а в пам’яті машини може бути представлене як 0.4799674. Змінні дійсного типу описуються:
VAR
A, B, C: REAL;
X, Y, Z: REAL;
96
Над змінними дійсного типу можуть виконуватись чотири арифметичні операції:
•Додавання + (a+b);
•Віднімання - (a-b);
•Множення * (a*b);
•Ділення / (a/b).
Над змінними дійсного типу можуть виконуватися операції порівняння: >, >=, <, <=, <>, але бажано не використовувати операцію “=”.
Значення дійсного типу можуть використовуватись в операндах логічних операцій:
(a+b/c>7.94) OR (x>0).
Змінні дійсного типу можуть бути аргументами всіх стандартних математичних функцій, при цьому результат такої функції буде дійсного типу.
Оскільки значення змінних дійсного типу не є дискретним, то до них не можуть застосовуватись функції PRED(X), SUCC(X), ORD(X), ODD(X).
Символьний тип CHAR. Значеннями символьного типу CHAR є множина символів, впорядкованих відповідно до таблиці кодів ASCII (табл. 5.1) і визначена алфавітом мови Паскаль. Деякі елементи цієї множини можуть не мати графічного відображення – це керівні символи (перехід на наступний рядок, перемикання регістрів та інші).
Таблиця 5.1
97
Елементи множини CHAR нумеруються, починаючи з нуля. Змінні символьного типу описуються:
VAR CL, SL, SYM, AS: CHAR;
Над змінними символьного типу не виконують жодних операцій, які дають результат цього самого типу.
Змінні символьного типу можуть бути операндами операцій порівняння:
’A’ > ’B’ = FALSE;
’5’ > ’2’ = TRUE;
’A’ = ’C’ = FALSE;
При виконанні операцій порівняння порівнюються коди символів. Значення символьного типу можуть використовуватись в операндах логічних операцій:
NOT (’A’ > ’B’ ) = TRUE
(’A’ < ’B’ ) AND ( SL > SYM );
До значень символьного типу застосовуються такі стандартні функції: ORD(Х) – дає код символу Х в таблиці кодів;
CHR(Х) – дає символ, код якого в Х:
ORD(’A’)=65 |
CHR(65)=’A’ |
ORD(’0’)=48 |
CHR(49)=’1’ |
PRED(Х) – попередній символ; |
|
SUCC(Х) – наступний символ: |
SUCC(’1’)=’0’. |
PRED(’C’)=’B’ |
Логічний тип BOOLEAN. Змінні логічного типу можуть набувати лише одне із двох значень: TRUE – істина, FALSE – не істина. Логічний тип є дискретним типом і його значення упорядковані, при цьому FALSE – відповідає ціле число 0, TRUE – відповідає ціле число 1.
Змінні логічного типу описуються так:
VAR
L1, L2: BOOLEAN;
Над змінними логічного типу виконуються три логічні операції: NOT – логічне заперечення;
AND – логічне множення ( кон’юнкція );
OR – логічне додавання ( диз’юнкція ).
(A>5) AND (B<9).
Значення логічної змінної не можна ввести за допомогою операторів введення READ або READLN, але його можна вивести за допомогою операторів виведення WRITE або WRITELN. Надати значення логічній змінній можна в операторі присвоювання:
L1:=TRUE;
98
Над логічними змінними можуть виконуватись операції порівняння: >, >=, <, <=, =, <>:
L1>L2,
при цьому FALSE<TRUE.
Логічні змінні можуть бути операндами таких стандартних функцій: ORD(x), SUCC(x), PRED(x):
ORD(TRUE)=1
ORD(FALSE)=0
SUCC(FALSE)=TRUE
PRED(TRUE)=FALSE
Оскільки значення логічного типу пронумеровані як FALSE = 0; TRUE = 1,
то в стандарті мови Паскаль закладено ситуацію, що FALSE не має попереднього, а TRUE не має наступного.
Крім стандартних, до простих типів належать перелічуваний та інтервальний типи.
2.1. ПЕРЕЛІЧУВАНИЙ ТИП
Перелічуваний тип – це впорядкована множина значень, які задаються певними ідентифікаторами, що означають ці значення. Визначення нового типу передбачає послідовне перелічення всіх його значень. Значення нового типу будуть константами цього типу.
Перелічуваний тип вводиться в програму в розділі опису типів:
TYPE <ім’я типу> = (<константи типу>);
Синтаксична діаграма наведена на рис. 2.
TYPE |
Ідентифікатор |
= |
( |
Ідентифікатор |
) |
|
|
|
|
, |
|
Рис. 2. Синтаксична діаграма опису перелічуваного типу
Наприклад:
TYPE DAYS=(Mon, Tue, Wed, Thu, Fri, Sat, Sun); COLOR=(RED, GREEN, YELLOW);
Після того, як новий тип даних визначено, можна описати змінні цього типу в розділі описів змінних:
VARD1, D2:DAYS; SW:COLOR;
99
Можна об’єднати ці два описи і описувати змінні нових типів у розділі опису змінних:
VARDNI:(Mon, Tue, Wed, Thu, Fri, Sat, Sun). SIZ:(SPRING, SUMMER, AUTUMN, WINTER);
Константи, що входять у визначення перелічуваного типу, є впорядковані; та їм відповідає послідовність цілих чисел, починаючи від нуля.
VAR SW:(RED, GREEN, YELLOW);
0 |
1 |
2 |
Тому до змінних перелічуваного типу можна застосувати стандартні функції:
ORD(RED)=0;ORD(Thu)=3
PRED(GREEN)=RED;SUCC(Thu)=Fri
Треба пам’ятати, що у стандарті мови Паскаль перший елемент не має попереднього, а останній наступного, тобто
PRED(RED) і SUCC(YELLOW)
не визначені.
Над змінними перелічуваного типу можуть виконуватись лише операції порівняння, наприклад:
RED>YELLOW=FALSE;
Wed>Tue=TRUE;
Змінні перелічуваного типу не можна вводити за допомогою процедури READ і виводити за допомогою процедури WRITE. Їхні значення можна тільки
присвоювати в операторі присвоювання:
SIZ:=SUMMER;
SW:=GREEN;
DNI:=Tue;
а також використовувати у різних операторах.
Можна записати оператор циклу, де параметр циклу змінюється від понеділка до п’ятниці:
For DNI:=MON to FRI do {оператори тіла циклу}
Для виведення значень змінних перелічуваного типу використовується оператор вибору CASE:
CASE DNI OF
MON: WRITELN(’Понеділок’);
TUE: WRITELN(’Вівторок’);
WED: WRITELN(’Середа’);
THU: WRITELN(’Четвер’);
FRI: WRITELN(’П’ятниця’);
END;
100