Над аргументами логического типа определены следующие операции:
NOT (Не) - отрицание
AND (и) - конъюнкция (логическое умножение)
OR (или) - дизъюнкция (логическое сложение)
XOR (икс ор) - исключающее или
P
Q
Not P
P And Q
P Or Q
P Xor Q
False
False
True
False
False
False
True
False
False
False
True
True
False
True
True
False
True
True
True
True
False
True
True
False
Все операции сравнения дают результат типа Boolean.
= , < >, < , < = , > , > =.
Например, в результате выполнения оператора
P: = X<= 5;
логическая переменная Р получит значение True, если текущее значение переменной Х меньше или равно 5. При Х>5 P = False.
В языке Паскаль принято следующее старшинство операций:
1) Not
2) And
3) Or, Xor + -
4) Операции сравнения , что это значит?
Not P = Q (Not P) = Q
P < = Q And R P < = (Q And R)
P Or Q And R P Or (Q And Q)
Для задания явного порядка - круглые скобки:
(A - B) AND (C< = D)
Законы алгебры логики в Паскале
1) Закон коммутативности (переместительный)
P Or Q = Q Or P
P And Q = Q And P
2) Закон ассоциативности (сочетательный)
(P Or Q) Or R = P Or (Q Or R)
(P And Q) And R = P And (Q And R)
3) Закон дистрибутивности (распределительный)
(P And Q) Or R = (P Or R) And (Q Or R)
(P Or Q) And R = (P And R) Or (Q And R)
4) Закон де Моргана
Not (P Or Q) = (Not P) And (Not Q)
Not (P And Q) = (Not P) Or (Not Q)
Правила отрицания:
Not (Not P) = P
Not (A = B) = A <>B
Not (A <= B) = A > B
Not (A< B) = A > = B и.т.д.
Пример.
Not ((A < = B) And (c = D)) = (A > B) Or (C < > D)
Обратим внимание на следующий факт. Логический тип в языке Паскаль задается как перечисляемый тип, содержащий лишь 2 стандартных идентификатора: True и False. Элементы перечисляемого типа упорядочены. Поэтому оказывается, что False меньше, чем True. Этим можно воспользоваться:
For P:=False To True Do S;
S - оператор, он будет выполняться сначала для значения Р, равного False, а затем для значения True. Если надо наоборот, то:
For P:= True Downto False Do S;
Пример.
Написать программу для составления таблицы истинности для логической функции F = P And Not (Q Or R) And T. Для каждого из значений логических переменных P, Q, R, T необходимо вычислить и напечатать значение функции F.
Program logic;
Var P,Q,R,T,F:Boolean;
Begin
For P:=False To True Do
For Q:=False To True Do
For R:=False To True Do
For T:=False To True Do
Begin
F:=P And Not (Q Or T) And T
Write(‘P=’,P,’Q=’,Q,’R=’,R,’T=’,T);
Write(‘F=’,F);
writeln;
End;
End.
Логические выражения очень часто используются в программах. Без них трудно обойтись при записи условных операторов, а также циклов While и Repeat.
В языке Паскаль нельзя записать двухстороннее неравенство 1< X <2. Вместо этого надо воспользоваться логическим выражением: (X>1) And (X<2).
Нельзя записать X = Y = Z, а надо: (X = Y) And (X = Z).
Если надо записать, что Х не лежит в диапазоне от - 2 до +2, то:
Not ((X>-2) And (X>=2)) или (X<=-2) Or (X>=2)
Стандартные идентификаторы True и False можно использовать в качестве логических констант. Равноправные операторы.