Логічний тип даних часто називають булевим по імені англійського математика Буля, який створив науку мат. логіку. В мові Pascal є 2-і логічні константи True та False.
Логічна зміна приймає одне із цих значень і має тип Boolean. Логічні дані широко використовуються при перевірці вірності деяких умов та при порівнянні величин. Результат може бути істинним чи хибним. Для порівняння даних існують наступні операції відношень <, >, <=, >=, =, < >. Якщо операцію відношення прикласти до арифметичних даних, то отримаємо логічне значення: відношення істине чи хибне. Наприклад, 7>4 дає істиний результат, а 19>25 - хибний. Над логічними даними можливі такі операції:
OR - логічне додавання; (або)
AND - логічне множення; (і)
NOT — логічне заперечення, (ні)
Логічні операції OR та AND виконуються над 2-а величинами, а NOT над однією.
Логічне додавання дає істиний результат, якщо хоча б одна із логічних величин А та В мають істине значення. Якщо обидві величини А та В мають хибне значення, то результат буде хибним.
Логічне множення дає істиний результат тільки в тому випадку, коли обидві величини істині. Якщо хоч би одна із величин хибна, то результат буде хибним.
Логічне заперечення дає хибний результат, якщо величина має істине значення і навпаки. Логічний тип визначається таким чином, що
False<True.
Результати операцій над логічними даними:
A
| B
| Not A
| A OR B
| A And B
|
TRUE
TRUE
FALSE
FALSE
| TRUE
FALSE
TRUE
FALSE
| FALSE
FALSE
TRUE
TRUE
| TRUE
TRUE
TRUE
FALSE
| TRUE
FALSE
FALSE
FALSE
|
Логічні дані і операції над ними мають важливе значення, так як дозволяють ввести елементи логіки (в логіці оперують константами 1 - істина, 0- хибна).
Логічні вирази будуються із логічних даних, логічних операцій та операцій відношень. В операціях відношень можуть зустрічатися арифметичні та логічні вирази, а також символьні дані. Результатом логічного виразу є значення True або False.
В логічних виразах прийнятий такий пріоритет операцій:
1. NOT
2. *,/,DIV,MOD,AND
3. +,- OR
4.<,<=, = ,<>, >= ,>
(Операції, що вказані в одному рядку мають однаковий пріоритет).
В логічних виразах допускається використання тільки круглих
дужок. При наявності дужок спочатку виконуються дії в дужках (в першу
чергу в самих внутрішніх), а потім за дужками. В круглі дужки
обов'язково заключаються частини виразів, що знаходяться зліва та
- справа від логічних операцій AND та OR.
Приклад: Визначити результат логічного виразу:
(А>3) AND (B-A+6) OR NOT (C-4)
при А=2,В=8,С=5 (False)
(False) And (True) Or (False) (False) Or (False)
False
Приклад: Записати на Pascal відношення істине при виконанні указаної умови та хибне в протилежному випадку:
a) ціле k ділиться на 7
k mod 7=0
b) рівняння a+bx+c=0 не має дійсних коренів
SQR(b) - 4*а*с<0
c) натуральне п є повним квадратом
SQR(round(SQRT (п))) =п
Приклад: Обчислити значення виразів:
a) ((x*y)<>0)and(y>x) npu x=2,y=l (False)
b) ((x*y)<>0)or (y>x) npu x=2,y=l (True)
c) a or (not b) npu a=false, b=true (False)
Приклад: Пояснити помилки в наступних записах:
a) true <0 (операції різних типів)
b) not 2-5 (відношення не взято в дужки)
c) ,x>0 or y =4 (відношення не взято в дужки)
d) not not b or or d (2-а знака операції поряд)
Приклад: Вказати порядок виконання операцій при обчисленні виразів:
a and b or not c and d
(a and b)or((not c) and d)
Приклад: Записати приведені нище висловлювання у вигляді виразів:
a) значення А не належить відрізку (0,3)
(A<=0)OR(A>=3)
b) значення А належить відрізку [-2, 0]
(A>=-2)AND(A<=0)
Приклад: Визначити, чи належить точка з координатами х,у прямокутнику з координатами x1,y1,x2,y2. Координати точки та прямокутника дійсного типу (точка належить прямокутнику, якщо
х> =x1 х< =х2
y>=y1 у<=у2)
Program kl;
Var x, x1, x2, у, y1, y2:Real;
Begin
Writeln (’ Введіть координати x1, y1, x2, y2);
Read(x1, y1 ,x2, y2) ;
Writeln('Bведіть координати х,у');
Read(x,y);
If (x> =x1)and(x< =x2)and(y> =y1)and(y< =y2)then
Write ('Точка належить прямокутнику)
Else write (’Точка не належить прямокутнику);
End.
Змінні типи
До цього часу ми працювали із стандартними типами даних. Змінні типи даних дозволяють створювати нові типи даних крім стандартних. В цю групу входять перелічувальний та обмежений типи. Перелічувальний тип називається так тому, що задається у вигляді переліку в строго визначеному порядку та в строго обмеженій кількості всіх значень, які можуть приймати дані того типу, що розглядаються. Перелічувальний тип може бути заданий користувачем в залежності від того, яку задачу він розв’язує. Перелічувальний тип складається Із списку констант. Змінні цього типу можуть приймати значення будь-якої із даних констант. Перелічувальний тип має такий вигляд:
Туре ім 'я_типу=(список констант);
Var ім'я_змін : ім'я типу;
Під константою тут розуміється особливий вид констант, що задається користувачем. Під списком констант розуміється перелік констант, що розділені комами. Сам список береться в круглі дужки.
Приклад: Туре рік = (зима,весна,літо,осінь);
Var А: рік;
Де рік — ім'я перелічувального типу;
Зима, весна, літо, осінь — константи
А - зміна, що може приймати значення будь-якої константи. В Pascal можливо задавати константи перелічувального типу безпосередньо в розділі змінних без використання Туре.
Наприклад: Var А: (Зима, весна, літо, осінь);
Але хорошим стилем програмування є опис даних з використанням розділу Туре, так як це допомагає скоротити кількість помилок та полегшує відлагодження програми. Кожна із констант має порядковий номер, відлік починається з 0. (Зима - 0 , весна - 1, ...). Впорядкованість констант дозволяє застосовувати до них операції відношення (<, <= , >, >=, 0), а також стандартні функції:
ODD - визначення парності числа;
CHR(і ) - визначення символу із набору символів по порядковому номеру і;
ORD(x)- знаходження порядкового номеру елемента х із переліку
допустимих значень;
PRED(x)- знаходження елемента, який є попереднім для даного в переліку допустимих значень;
SUCC(x)- знаходження елементу, який є наступним для даного в переліку допустимих елементів,
Приклад: Є опис
0 1 2 3
Туре сезон = (зима, весна, літо, осінь);
Var x,y: сезон; Т: (тепло, холодно);
а) чи правильні такі присвоєння:
+ + + - -
х;=весна; у:=х; t:=meплo; y:=t; і:=жарко;
б) обчислити значення виразів:
True true false
весна < літо; зима<літо : осінь<зима; succ (весна) =літо;
True
pred (весна) =зима; ord(веснa)=2; ord(ociHb)+ord(xoлоднo)=4;
Приклад:
Дано type колір = (червоний, білий, зелений);
Var c: колір;
Надрукувати значення змінної с.
Program PR3;
Type vet=(red, white, green);
Var c: vet;
n: Integer;
Begin
Writeln(’Введіть порядковий номер кольора');
Read(n);
Case n of
0: c:=red;
1: c:=white;
2: c:=green;
end;
case c of
red: write ('червоний');
white: write ('зелений');
green: write ('зелений ');
end;
end.