Логические выражения
Логическими являются такие данные и выражения, которые могут
принимать только два значения – True и False.
Переменные логического типа описываются с использованием
стандартного типа Boolean. Например:
Логическая переменная может принимать одно из двух значений:
True (истина), False (ложь).
Причем True и False – заранее определенные именованные константы
(их можно использовать без предварительного описания). Размер
выделяемой памяти под логическое данное – 1 байт. Диапазон
логических значений упорядочен так, что False < True.
Логические выражения – это выражения, значения которых
принадлежат к типу Boolean. Состоят из условий и логических
переменных, соединенных между собой логическими операциями. В них
может использоваться унарная логическая операция отрицания NOT
expression-1 с бинарными логическими операциями expression-1
operator expression-2, где expression-1, expression-2 – простые
условия или логические переменные; operator – одна из логических
операций (AND, OR, XOR).
Пример. Зная, что условие (9>3) является истинным, а
(3>9) - ложным - ложным, присвойте им значения двух переменных.
Ответьте, каков будет результата выполнения программы:
Var tr,fal: Boolean;
Begin
tr:=(9>3) ; fal:=(3>9);
Writeln('истина tr=',tr);
Writeln(' ложь fal=',fal);
End.
Результат выполнения программы:
истина tr= True
ложь fal= False
Операции отношения
Операции отношения действуют между парами выражений и не могут
указываться последовательно:
A >=
B – правильно;
A >=
B = C –
неправильно.
Операции отношения по старшинству одинаковы. Приоритет операций
отношения считается меньшим, чем у операций арифметических действий.
То есть значения выражений A >
B + 2 и
A > (B + 2)
совпадают, ведь операция сложения выполняется первой и без скобок.
В качестве условий в Паскале можно использовать выражения
А<В |
А меньше В |
А< = В |
А меньше или равно В |
А = В |
А равно В |
А> = В |
А больше или равно В |
А>В |
А больше В |
А<>В |
А не равно В |
Логические операции
Унарная логическая операция – отрицание.
Смысл этой операции по-русски можно выразить «Неверно, что», то
есть она меняет значение True на False и наоборот.
Пример:
NOT A > 0
Это логическое выражение означает то же самое, что и
A <= 0.
Бинарные логические операции
Логическое умножение (конъюнкция) AND
Смысл этой операции по-русски можно выразить словом И, то есть
она дает значение True только в том случае, если оба условных
выражения имеют значение True.
Пример:
(A > 0) AND (A
< 5)
Это логическое выражение реализует условие, математическая запись
которого такова: 0 < A < 5.
Логическое сложение (дизъюнкция) OR
Смысл этой операции по-русски можно выразить словом ИЛИ, то есть
она дает значение True во всех случаях, кроме ситуации, когда оба
условных выражения имеют значение False.
Пример:
(A < 0) OR (A
> 5)
Это логическое выражение реализует составное условие
A < 0 или A>
5.
Таблица истинности операции
AND:
P |
Q |
P AND Q |
истина |
истина |
истина |
истина |
ложь |
ложь |
ложь |
истина |
ложь |
ложь |
ложь |
ложь |
Таблица истинности операции
OR:
P |
Q |
P OR Q |
истина |
истина |
истина |
истина |
ложь |
истина |
ложь |
истина |
истина |
ложь |
ложь |
ложь |
Используется также логическая неравнозначность (исключающее
ИЛИ) – XOR.
Смысл этой операции по-русски можно выразить словом ЛИБО, то есть
ее применение к условиям, имеющим одинаковое значение, приводит к
результату False, а к условиям, имеющим различное значение, – к
результату True.
Пример:
(Х < 0) XOR (Y < 0)
Это логическое выражение имеет значение True, если точка с
координатами (Х,
Y) лежит во II или IV четверти.
Таблица истинности операции
XOR:
P |
Q |
P XOR Q |
истина |
истина |
ложь |
истина |
ложь |
истина |
ложь |
истина |
истина |
ложь |
ложь |
ложь |
В языке Паскаль нет возможности ввода логических данных с
помощью процедуры Read. Однако предусмотрен вывод значений
переменных логического типа с помощью процедуры Write.
Самостоятельная работа
1. Наберите, запишите на диск и запустите программу:
Program Log;
Uses Crt;
Var a,b: Boolean;
Begin
ClrScr;
a: = True; b: = True; Writeln (a:6,b:6, a and b:6);
a: = True; b: = False; Writeln (a:6,b:6, a and b:6);
a: = False; b: = True; Writeln (a:6,b:6, a and b:6);
a: = False; b: = False; Writeln (a:6,b:6, a and b:6);
Readln;
End.
2. Измените программу для проверки остальных рассмотренных выше
логических операций.
Составные условия
В логических выражениях логические операции могут связывать
несколько логических переменных или условий, например:
(Х < 0) AND (Y < 0) AND (Z
< 0)
(Х < 0) OR (Y < 0) AND (Z
< 0)
Порядок выполнения логических операций следующий:
-
унарная операция NOT имеет первый (высший) приоритет;
-
операция логического умножения AND имеет второй приоритет,
как и другие мультипликативные операции *, /, div, mod;
-
операция логического сложения OR и исключающее или XOR имеют
третий приоритет, как другие аддитивные операции +, –;
-
четвертый (низший) приоритет имеют операции отношения >, >=,
<, <=, <>, =;
-
последняя операция (‘=’) называется проверкой на
эквивалентность.
Условие X < 0 или X > 100 можно записать так:
(X < 0) OR (X
> 100)
Это же условие можно сформулировать словами: «X
не принадлежит отрезку [0, 100]» и записать следующим образом:
NOT ((0 <= X) AND (X
<= 100))
Условие «X,
Y, Z
одновременно обращаются в 0» можно записать так:
(X = 0) AND (Y
= 0) AND (Z = 0)
Пример. Запишите логические выражения для следующих условий:
1) Х удовлетворяет неравенству
Y<X<Z;
2) Х не принадлежит интервалу
(C,D);
3) число Х отрицательно и
отлично от -1;
4) хотя бы одно из чисел
Y,X,Z равно 0;
5) все числа Y,X,Z
отличны от 0.
РЕШЕНИЕ:
1) (Y<X) AND (X<Z);
2) (X<C) OR (D<X);
3) (X<0) AND (X<>-1);
4) (X=0) OR (Y=0) OR (Z=0);
5) (X<>0) AND (Y<>0) AND (Z<>0)
Вывод:
Логическое выражение – это выражение, которое может
принимать одно из двух значений False или True. В него могут входить
выражения, логические переменные, отношения, соединенные логическими
операциями.
Очередность логических операций:
-
NOT;
-
AND;
-
OR, XOR.
Операции отношения имеют низший (4-й) приоритет и
выполняются в последнюю очередь.
Вопросы для повторения:
• Что
такое простое условие? Какие операции отношения
используются в нем?
• Что является
результатом выполнения операции отношения?
• Что такое
составное условие? Какие логические операции используются в нем?
Каков приоритет их выполнения? Как изменить
этот приоритет?
• В логическом
выражении (составном условии) используются две величины логического
типа (два простых услчовия) — А и В. Сколько
возможно различных вариантов сочетаний значений А и В?
• В логическом
выражении (составном условии) используются три величины логического
типа (три простых условия) — А, В и С. Сколько возможно различных
вариантов сочетаний значений А, В и С?
Решение задач
Пример
1.
Вычислить значение логического выражения, если А = Истина, В —
Ложь, С = Ложь:
а) А или С; б)
(А и С) или В
Этапы выполнения
задания.
I. Определение исходных данных: переменные
А, В, С типа
Boolean.
II. Определение результатов: переменные
rezA, rezB.
III. Алгоритм решения задачи.
1. Ввод исходных данных
2. Вычисление значений rezA, rezB..
3. Вывод результата.
IV. Описание переменных:
Все переменные, определенные для решения
задачи, имеют тип Boolean.
V. Программа:
var A,B,C,rezA,rezB:Boolean;
Begin
A:=true;
B:=false;
C:=false;
rezA:= A OR C;
rezB:= (A AND C) or B;
writeln('rezA=',rezA);
writeln('rezB=',rezB);
End.
Можешь
загрузить!
Пример 1
VI. Тестирование
1. Запустите программу.
2. Проверьте, результат должен быть следующим:
rezA=True
rezB=False
Пример
2.
Вычислить значение логического выражения , если
Х=Ложь, Y=Ложь, Z=Истина:
a)
Х или У
и не
Z; б) не(Х и Z)или У.
Этапы выполнения
задания.
I. Определение исходных данных: переменные
Х,Y,Z
типа
Boolean.
II. Определение результатов: переменные
r1, r2.
III. Алгоритм решения задачи.
1. Ввод исходных данных
2. Вычисление значений
r1, r2.
3. Вывод результата.
IV. Описание переменных:
Все переменные, определенные для решения
задачи, имеют тип
Boolean.
V. Программа:
var X,Y,Z,r1,r2:Boolean;
Begin
X:=false;
Y:=false;
Z:=true;
r1:= X OR Y AND (NOT Z);
r2:= NOT(X AND Z) or Y;
writeln('r1=',r1);
writeln('r2=',r2);
End.
Можешь
загрузить!
Пример 2
VI. Тестирование
1. Запустите программу
2.
Проверьте, результат должен быть следующим:
r1=False
r2=True
2. Заполните таблицу
|
X |
Y |
Z |
r1 |
r2 |
1 |
Ложь |
Истина |
Ложь |
|
|
2 |
Истина |
Истина |
Истина |
|
|
3 |
Ложь |
Истина |
Ложь |
|
|
Пример 3.
Вычислить значение логического
выражения: х2+у2≤4
Этапы выполнения
задания.
I. Определение исходных данных: переменные
х,у.
II. Определение результата: переменная
z.
III. Алгоритм решения задачи.
1. Ввод исходных данных.
2. Вычисление значения
z.
3. Вывод результата.
IV. Описание переменных:
Переменные х, у типа
integer, z - Boolean.
V. Программа:
var x,y:integer;z:Boolean;
Begin
write('x=');readln(x);
write('y=');readln(y);
z:= sqr(x)+sqr(y)<=4;
writeln('z=',z);
End.
Можешь
загрузить!
Пример 3
VI. Тестирование
1. Запустите программу и введите значения
х=1,у=-1
Проверьте, результат должен быть следующим:
z=True
2. Заполните таблицу
Проверка знаний
Тест: Вычисление логических
выражений
Задачи
для самостоятельного решения
1. Вычислить значение логического выражения, если
X = Ложь, У = Истина, Z = Ложь:
а) X или Z;
б) X и У;
в) X и Z.
2.
Вычислить значение логического выражения, если
А = Истина, В = Ложь, С = Ложь:
а) не А и В;
б) А или не В;
в) А и В или С.
3.
Вычислить значение логического выражения, если
X = Истина, У = Истина, Z = Ложь:
а) не X и У;
б) X или не У;
в) X или У и Z.
4. Вычислить значение логического выражения, если
А = Истина, В = Ложь, С = Ложь:
а) А или Б и не С;
г) А и не В или С;
б) не А и не В;
д) А и (не В или С);
в) не (А и С) или В;
е) А и (не (В или С)).
5. Вычислить значение логического выражения, если
X = Ложь, У = Ложь, Z = Истина:
а) X или У и не Z;
г) X и не У или Z;
б) не X и не У;
д) X и (не У или Z);
в) не (X и Z) или У;
е) X и (не (У или Z)).
6.
Вычислить значение логического выражения, если
А — Истина, В = Ложь, С = Ложь:
а) А или не (А и В) или С;
б) не А или А и (В или С);
в) (А или В и не С) и С.
7. Вычислить значение логического выражения, если
X = Ложь, У = Истина, Z = Ложь:
а) X и не (Z или У) или не Z;
б) не X или X и (У или Z);
в) (X или У и не Z) и Z.
8. Вычислить значение логического выражения, если
X = Истина, У = Ложь, Z = Ложь:
а) не X или не У или не Z;
б) (не X или не У) и (X или У);
в) X" и У или X и Z или не Z.
9. Вычислить значение логического выражения, если
А = Ложь, В = Ложь, С = Истина:
а) (не А или не В) и не С;
б) (не А или не В) и (А или В);
в) А и В или А и С или не С.
10. Вычислить значение логического выражения:
а) х2 + у2 ≥ 14
при х = 3, у = -3;
б) (х ≥ 0) или (у2 ≠ 4) при х = 1, у = 2;
в) (х ≥ 0) и (у2 ≠ 4 ) при х = 1, у = 2;
г) (х • y ≠ 0) и (у > х) при х = 2, у = 1;
д) (х • y ≠ 0) или (y < х) при х = 2, y = 1;
е) (не (х•у < 0)) и (у > х) при х = 2, г/ = 1;
ж) (не (х • у < 0)) или (у > х) при х = 1, у = 2.
11. Вычислить значение логического
выражения:
а) х2 - у2 < 0 при х = 1, y = -1;
б) (х ≥ 2) или (у2 ≠ 4) при х = 2, y = -2;
в) (х ≥ 0) и (у2 > 4) при х = 2, у = 2;
г) (х • у ≠ 4) и (y > х) при х = 1, у = 2;
д) (х • у ≠ 0) или (у < х) при х = 2, y = 1;
е) (не (х • у < 1)) и (y > х) при х = 1, у = 2;
ж) (не (х • y < 0)) или (y > х) при х = 2, y = 1.
12. Вычислить значение логического
выражения при всех
возможных значениях логических величин А и В:
а) не (А и В);
б) не А или В;
в) А или не В.
13. Вычислить значение логического
выражения при всех
возможных значениях логических величин X и У:
а) не (X или У);
б) не X и У;
в) X и не У.
14. Вычислить значение логического
выражения при всех
возможных значениях логических величин А и В:
а) не А или не В;
б) А и (А или не В);
в) (не А или В) и В.
15. Вычислить значение логического
выражения при всех
возможных значениях логических величин X и У:
а) не X и не У;
б) X или (не X и У);
в) (не X или У) и У.
16. Вычислить значение логического
выражения при всех
возможных значениях логических величин А и В:
а) не А и не В или А;
б) В или не А и не В;
в) В или не (А и не В).