Логический тип основан на правилах Булевой алгебры, широко используемой в цифровой электронике. Этот тип определяет всего два значения True (истина) и False (ложь), которые и являются константами. Описывается этот тип словом Boolean, определенным как
Type Boolean = (False,True);
Над значениями логического типа определены следующие операции:
NOT – «НЕ», логическое отрицание или инверсия, в отличие от остальных выполняется над одним операндом (унарная операция);
OR – «ИЛИ», логическое сложение или дизъюнкция;
AND – «И», логическое умножение или конъюнкция;
XOR – «исключающее ИЛИ», сложение по модулю 2 (в стандартном Паскале отсутствует).
Пусть А и В – логические значения, тогда результат операций будет определяться по табл. 3.3:
Таблица 3.3. Логические операции
А
В
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.