Логические выражения (PascalABC.NET)
Логическое выражение, подобно арифметическому, является неким аналогом математической формулы и результатом его вычисления будет одна из двух логических констант – True или False.
Логические выражения могут строиться:
- на основе логического выражения с предшествующей ему унарной операцией логического отрицания;
- на основе двух арифметических выражений, связанных операцией отношения;
- на основе двух логических выражений, связанных логической операцией.
Операции отношения
Операции отношения хорошо известны из математики. Их шесть: равно « = », не равно « <> », меньше « < », меньше или равно « <= », больше « > » и больше или равно « >= ». Если с помощью одной из этих операций связать два арифметических выражения, мы получим утверждение, которое будет истинным, либо ложным.
- 6 < 9.2 – истинное утверждение и значением логического выражения будет True.
- 3 = 5 – ложное утверждение; значением логического выражения будет False.
- 2 * 2 = 5 – ложное утверждение, False.
- 5 * 8 > (10 - 7) * 8 – True. 5 * 8 = 40, (10 – 7) * 8 = 24, 40 > 24 истинно.
Приоритет операций отношения ниже, чем у арифметических операций, что позволяет записывать утверждения без дополнительных скобок. Всегда сначала будут вычислены значения арифметических операций, а потом выполнится операция отношения.
Логические операции
В Паскале определена унарная логическая операция и три бинарных.
- унарная not –логическое отрицание («НЕ», инверсия);
- or – логическое сложение («ИЛИ», дизъюнкция);
- and – логическое умножение («И», конъюнкция);
- xor – сложение по модулю два, «исключающее ИЛИ»
Ниже приведена таблица истинности для перечисленных операций.
A | B | not A | A and B | A or B | A xor B |
False | False | True | False | False | False |
False | True | True | False | True | True |
True | False | False | False | True | True |
True | True | False | True | True | False |
Логические операции имеют свои уровни приоритета.
- функции, в том числе Sqr( ), имеют наивысший приоритет;
- унарные операции +, –, not, операция ** имеют приоритет 1;
- операции *, /, div, mod, and имеют приоритет 2;
- бинарные операции + и –, а также or и xor, имеют приоритет 3;
- операции отношения =, <>, >, >=, <, <= имеют приоритет 4.
О «короткой схеме»
Выражение P or Q истинно, если хотя бы P или Q истинно. Выражение P and Q ложно, если хотя бы P или Q ложно. Короткая схема вычисления значения логического выражения PascalABC.NET предполагает, что если значения P достаточно для решения вопроса об истинности выражения, значение Q не вычисляется. Короткая схема может быть полезна, давая возможность не выполнять операцию, которая может привести к возникновению ошибки в программе.