Логическое сложение (дизъюнкция)
Рассмотрим утверждение: x > 100 или x < 10
Выражения можно связывать союзом «или» (or). Логическое выражение, связанное союзом «или», всегда ложно (false), если ложны обе его части. Во всех других случаях результатом будет «истина» (true).
Эта операция называется логическим сложением, или дизъюнкцией. На Паскале она обозначается как or.
Таблица 4.3. Таблица истинности для операции логического сложения
Операнд 1 |
Операция |
Операнд 2 |
Результат |
True |
Or |
True |
True |
True |
Or |
False |
True |
False |
Or |
True |
True |
False |
Or |
False |
False |
Исключающее или (сложение по модулю 2)
Рассмотрим утверждение: либо x > 5, либо x < 0
Выражения связаны парой «либо-либо».
Такое утверждение истинно, когда истинно только одно из двух составляющих его утверждений.
Можно сформулировать это иначе: логическое выражение истинно (true), если его операнды различны.
Данная операция называется исключающим ИЛИ. На Паскале она обозначается как хог.
Таблица 4.4. Таблица истинности для операции исключающего ИЛИ
Операнд 1 |
Операция |
Операнд 2 |
Результат |
True |
Xor |
True |
False |
True |
Xor |
False |
True |
False |
Xor |
True |
True |
False |
Xor |
False |
False |
Как еще можно получить эти результаты? Представим значение true как 1 (логическую единицу), a false — как 0 (логический ноль).
Теперь сложим эти значения и возьмем остаток от деления полученного результата нацело на 2 (mod 2). Эта операция называется также сложением по модулю 2. Ясно, что результат будет всегда меньше двух.
Логическое отрицание (инверсия)
Рассмотрим утверждение: не (x > 100)
Выражение отрицается частицей «не».
Результат операции противоположен отрицаемому утверждению. Если утверждение было истинным (true), результатом будет «ложь» (false). И наоборот, если утверждение было ложным (false), то получится «истина» (true).
Эта операция называется логическим отрицанием, логическим НЕ или инверсией. На Паскале она обозначается как not.
Таблица 4.5. Таблица истинности для операции логического НЕ
Операнд |
Результат операции not |
True |
False |
False |
True |
Применение логических операций в программе
Пример 4.3. Логические операции в программе
Program Bool_1;
Var
X: Integer;
Bol, OnBol, Rez: Boolean;
Begin
X:=4;
Bol:=X>3;
0пВо1:=Х<3;
Writeln ('Bol = ', Bol);
writeln('OnBol = ', OnBol);
Rez:=Bol and OnBol;
Writeln (‘Bol and OnBol = ’, Rez);
Rez:=Bol or OnBol;
Writeln (‘Bol or OnBol = ', Rez);
Rez:=not Bol;
Writeln ('not Bol = ', Rez);
Readln
end.
При выполнении программы имеем на экране следующее:
Bol=TRUE
OnBol=FALSE
Bol and OnBol=FALSE
Bol or OnBol=TRUE
not Bol=FALSE
Пример 4.4. Составление логических выражений
Program Bol_2;
{ Введем логические переменные, которые будут определять характеристики студента. Составим выражения, определяющие, является ли студент первокурсником и получающим стипендию }
var
Price:Boolean; { Определяет наличие стипендии у студента }
Kursl:Boolean; { Определяет, является ли студент первокурсником }
Rezult:Boolean; { Определяет результат}
begin
Price:=True; {Пусть наш студент получает стипендию }
Kurs1:=True; { Пусть студент – первокурсник}
Rezult:=Price and Kurs1;
Writeln ('Студент - первокурсник со стипендией? – ‘, Rezult);
Price:= False; { Пусть наш студент не получает стипендию }
Rezult:=Price and Kurs1;
Writeln ('Студент - первокурсник со стипендией? - ', Rezult);
Readln
end.
При выполнении программы имеем на экране следующее:
Студент - первокурсник со стипендией? – TRUE
Студент - первокурсник со стипендией? - FALSE
Задание 4.1. Определите в программе 4 логических переменных, которые содержат следующую информацию о людях:
Married — «истина», если человек женат (замужем);
Blond — «истина», если у человека светлые волосы;
Male — «истина», если человек — мужчина;
Employed — «истина», если человек работает.
Составьте логические выражения, с помощью которых можно определить, является ли человек:
замужней женщиной;
неженатым мужчиной;
незамужней блондинкой;
безработной незамужней женщиной;
либо неженатым, либо безработным, либо и тем и другим.
