Переменным логического типа можно присвоить результаты операций отношений. Результат операций отношений всегда равен True или False. Как уже было отмечено выше, в качестве условия могут использоваться логические операции. Помимо операций отношений в Pascal существует четыре вида логических операций, которые применимы к переменным логических типов.
Значения логического выражения при использовании бинарной логической операции конъюнкции (And) приведены в таблице 1.
Таблица 1 - Логическая операция конъюнкция
Значение операндов
Результат операции
A
B
A and B
True
True
True
True
False
False
False
True
False
False
False
False
Значения логического выражения при использовании бинарной логической операции дизъюнкции (Or) приведены в таблице 2.
Таблица 2 - Логическая операция дизъюнкция
Значение операндов
Результат операции
A
B
A or B
True
True
True
True
False
True
False
True
True
False
False
False
Значения логического выражения при использовании бинарной логической операции дизъюнкции (Xor) приведены в таблице 3.
Таблица 3 - Логическая операция исключающее ИЛИ
Значение операндов
Результат операции
A
B
A xor B
True
True
False
True
False
True
False
True
True
False
False
False
Четвёртая унарная логическая операция отрицания (Not) инвертирующая (изменяющая на противоположное) значение операнда приведена в таблице 4.
Таблица 4 - Логическая операция отрицания
Значение операндов
Результат операции
A
not A
True
False
False
True
Поскольку у операций сравнения приоритет выполнения ниже, чем у логических операций, при комбинированной записи логического выражения их необходимо брать в скобки.
Например:
(A<=B) and (B>C) or (A<>D). При значении переменных A=10, B=15, C=20, D=25 значение всего выражения равно True. (A<=B) - истинно, (B>C) - ложно, (A<=B) and (B>C) - ложно, (A<>D) - истинно.
(A<=B) or (B>C) xor (A<>D). При значении переменных A=10, B=15, C=20, D=25 значение всего выражения равно False. (A<=B) - истинно, (B>C) - ложно, (A<=B) or (B>C) - истинно, (A<>D) - истинно.
not (A<=B) or (B>C). При значении переменных A=10, B=15, C=20 значение всего выражения равно False.
(A<=B) or not(B>C). При значении переменных A=10, B=15, C=20 значение всего выражения равно True.
В логических выражениях принят следующий порядок выполнения операций:
- Not;
- And, *, Div, Mod, /;
- Or, Xor, +, - ;
- все операции сравнения.
ПРИМЕРЫ
Пример 4.1. Определить большее из двух целых чисел A и B.
Блок-схема алгоритма решения задачи:
Program Example_4_1;
Var A, B : Integer;
Max : Integer;
Begin
Write ('Введите значение A = '); ReadLn (A);
Write ('Введите значение B = '); ReadLn (B);
If A>=B then Max:=A else Max:=B;
WriteLn ('большее из двух целых чисел A и B: ',Max)
End.
Пример 4.2. Определить принадлежит ли вводимое с клавиатуры значение A интервалу [0..9].
Блок-схема алгоритма решения этой задачи аналогична примеру 4.1.
Program Example_4_2;
Var A : Real;
Max : Integer;
Str : String;
Begin
Write ('Введите значение A = '); ReadLn (A);
If (A>=0) and (A<=9) then Str:='принадлежит'
else Str:='не принадлежит';
WriteLn ('Значение A ',Str,' отрезку [0..9]')
End.
Пример 4.3. Значения переменных X, Y, Z вводятся с клавиатуры. Если X Y Z, то все значения возвести в квадрат, при X >Y >Z каждое из них разделить на 2, в противном случае изменить знаки чисел. Изменённые значения переменных вывести на экран.
Обратите внимание, что при решении данной задачи в каждой ветви условного оператора необходимо использовать составной оператор.