Песни о Паскале | страница 47
> if A or B and C or D
> then S:=’Поезжай на машине!’
> else S:=’Топай пешком!’;
Поскольку логическое умножение выполняется раньше сложения, Паскаль поймет это так: A or (B and C) or D. Но это не то, что мы хотели! Правильно будет записать наше решение со скобками:
> if (A or B) and (C or D)
> then S:=’Поезжай на машине!’
> else S:=’Топай пешком!’;
Наконец, рассмотрим маршрут на рис. 35, где путь преграждает шлагбаум. Договоримся, что закрытому шлагбауму соответствует значение TRUE (то есть, в сравнении с улицами тут все наоборот).
Рассуждая как обычно, скажем так: «проезд возможен, если НЕ закрыт шлагбаум». Здесь применено логическое отрицание НЕ, что по английски значит «NOT». Решение на Паскале будет таким.
> if not A
> then S:=’Поезжай на машине!’
> else S:=’Топай пешком!’;
В отличие от двух предыдущих операций, логическое отрицание – одноместная операция, ей нужен лишь один операнд. Логическое отрицание имеет наивысший приоритет, и выполняется раньше логического умножения и сложения.
Итак, посредством логических операций мы переводим рассуждения с человеческого языка на формальный язык программирования, получая при этом логические (булевы) выражения. Логические данные в Паскале можно сравнивать и выполнять с ними четыре логические операции, три из которых вам уже знакомы. Рассмотрим свойства этих операций.
Логическое отрицание NOT («НЕ»). Имеет наивысший приоритет, то есть, при отсутствии скобок выполняется в первую очередь. Это одноместная операция, поскольку требует лишь одного операнда. По своему действию она напоминает знак «минус» для чисел, поскольку изменяет значение операнда на противоположное. Правила для этой операции таковы.
>NOT FALSE = TRUE
>NOT TRUE = FALSE
Логическое умножение AND («И»). Приоритет ниже, чем у NOT, но выше, чем у логического сложения OR. Требует двух операндов, и в результате дает TRUE, если оба операнда равны TRUE.
>FALSE AND FALSE = FALSE
>FALSE AND TRUE = FALSE
>TRUE AND FALSE = FALSE
>TRUE AND TRUE = TRUE
Логическое сложение OR («ИЛИ»). Приоритет самый низкий, – выполняется в последнюю очередь. Требует двух операндов и в результате дает TRUE, если хотя бы один из операндов равен TRUE.
>FALSE OR FALSE = FALSE
>FALSE OR TRUE = TRUE
>TRUE OR FALSE = TRUE
>TRUE OR TRUE = TRUE
• Информация – это то, что устраняет неопределенность.