Логический тип основан на правилах Булевой алгебры, широко используемой в цифровой электронике. Этот тип определяет всего два значения True (истина) и False (ложь), которые и являются константами. Описывается этот тип словом Boolean, определенным как
Type Boolean = (False,True);
Над значениями логического типа определены следующие операции:
NOT – «НЕ», логическое отрицание или инверсия, в отличие от остальных выполняется над одним операндом (унарная операция);
OR – «ИЛИ», логическое сложение или дизъюнкция;
AND – «И», логическое умножение или конъюнкция;
XOR – «исключающее ИЛИ», сложение по модулю 2 (в стандартном Паскале отсутствует).
Пусть А и В – логические значения, тогда результат операций будет определяться по следующей таблице:
А | В | not A | A or B | A and B | A xor B |
True | True | False | True | True | False |
True | False | False | True | False | True |
False | True | True | True | False | True |
False | False | True | False | False | False |
В Паскале, как и в цифровой электронике, True кодируется единицей, а False – нулем (0 – низкое напряжение, 1 – высокое; при использовании обратной логики – наоборот). Поэтому логические операции разрешены не только над логическими значениями, но и над целыми, представляемыми в двоичной системе счисления. Например, если А=21 (101012), а В=9 (10012), и они описаны как байты, то:
|
|
not A = 111010102 = 23410
A or B = 000111012 = 2910
A and B = 00000001
Обычно их используют над беззнаковыми целыми типа Byte или Word.
Шесть операций отношения или сравнения:
> < = ¹ ³ £,
применимые ко всем простым типам и многим структурированным, всегда дают логический результат. Более того, и над логическими значениями допускается выполнение операций отношения:
True > False ® True,
True < False ® False.
Возможны даже такие записи:
Var i:boolean;
...
For i:=False to True do
<оператор>;
Здесь оператор выполнится два раза, сначала со значением i = False, затем i = True.