Логический тип (boolean) ::= false true ::= ::= = > = <> in - любое виражение Паскаля, за исключением отношений Отрицание Обозначение операции: not (не) Запись операции: not a (читается: «не а», «не верно, что а») Семантика: операция not меняет логическое значение на противоположное. Это можно описать в виде такой таблицы: anot a truefalse true
Конъюнкция (логическое умножение) Обозначение операции: and (и) Запись операции: a and b (читается «a и b») (Замечание: операнды конъюнкции называются конъюнктами.) Семантика: конъюнкция дает истину только в одном случае - когда оба ее операнда истинны; если хотя бы один операнд ложен, то и конъюнкция ложная. (Это основное значение союза и: «и то и другое»). Точное определение конъюнкции дает следующая таблица: aba and b true false truefalse
Дизьюнкция (логическое сложение) Обозначение операции: or (или) Запись операции: a or b (читается «а или b») (Замечание: операнды дизъюнкции называются дизъюнктами.) Семантика: дизъюнкция истинна, если истинен хотя бы один ее операнд; дизъюнкция дает ложь только в одном случае - когда оба операнда ложны. (Это основное значение союза или: «то или другое»). Точное определение дизъюнкции дает следующая таблица: aba or b true falsetrue falsetrue false
1) При вычислении ЛВ действует следующий порядок вычисления: - сначала вычисляются простейшие ЛВ и подвиражения в скобках - затем выполняется not - потом выполняется and - далее выполняется or - и в конце выполняются операции отношения И, как обычно, операции одного старшинства выполняются слева направо. Например, в указанном ЛВ порядок вычисления следующий: not(x>y) or odd(k) and true or b ) Если ЛВ - это просто отношение, то оно пишется без круглых скобок b:=x>y, хотя можно использовать и скобки b:=(x>y). Но если отношение входит в состав какого-то другого виражения, то оно обязательно заключается в круглые скобки. Например, нельзя писать x=1 and z<0 Операция and имеет более высокий приоритет, чем операции сравнения, поэтому она выполняется в первую очередь: x=(1 and z)<0, т.е. получается, что здесь конъюнкция применяется к числам, что запрещено. Правильная запись этого виражения такова: (x=1) and (z<0)
3) в Паскале запрещено писать двойные неравенства типа 0<x<2. Дело в том, что эта запись означает (0<x)<2, т.е. здесь логическая величина (значение отношения 0<x) будет сравниваться с числом 2, что запрещено. Такие неравенства надо писать в виде конъюнкции двух отношений: (0<x) and (x<2). 4) Допускается выписывание нескольких not подряд: not not not a. Однако два соседних not уничтожают друг друга, поэтому редко пишут более одного not. 5) Возможно непосредственное соседство or и and с not, например: a and not b. Однако для наглядности лучше ставить скобки: a and (not b). 6) Нельзя рядом указывать and и/или or: a or and b – ошибка.
логическое виражение простое логическое виражение отношение простое логическое виражение логическое слагаемое or
логическое слагаемое логический множитель and логический множитель константа переменная функция логический множитель логическое виражение )( not
{константа, переменная, функция – логического типа} отношение скалярное отношение строковое отношение множественное отношение прост. лог. вираж.оп.сравн. прост. лог. вираж вираж.перечьь.типаоп.сравн. вираж.перечьь.типа арифм. виражениеоп.сравн. арифм. виражение литерное виражен.оп.сравн. литерное виражен. ссылочное виражен. =
оп. сравн. < >