Тип BOOLEAN

 

Логические операции NOT, AND и OR были введены в главе 3. Эти операции работают с значениями типа BOOLEAN из D Pascal. Несколько иным определением синтаксиса логических выражений мы можем специфицировать ассоциативность и приоритет операций.

 

Тип BOOLEAN использует константные значения FALSE и TRUE и операторы NOT, AND, OR и операторы сравнения. Два константных идентификатора типа BOOLEAN работаю как если бы они были объявлены в перечислимом типе:

TYPE

BOOLEAN = (FALSE, TRUE);

(Но это объявление не присутствует явно.) Операторы сравнения определены на операндах типа BOOLEAN таким образом, что значение

FALSE < TRUE

равно TRUE.

 

NOT – унарный префиксный оператор, а AND и OR – бинарные инфиксные операторы. Функции, вычисляемые AND, OR и NOT, представлены в разделе 3.3.

 

Паскаль гарантирует порядок, в котором применяются операторы, но не для каждого конкретного оператора. Многие Паскаль-машины выполняют «ленивое» (lazy) вычисление логических выражений. Если первый операнд для OR имеет значение TRUE, второй операнд не вычисляется, потому что

TRUE OR x = TRUE

для любого x. Аналогично, если первый операнд для AND имеет значение FALSE, второй операнд не вычисляется, потому что все выражение будет FALSE. Этот метод вычисления возвращает корректные значения для выражений, которые в ином случае могли бы быть не определены.

Переменные типа BOOLEAN могут быть объявлены, и им может быть присвоено значение, являющееся результатом вычисления логического выражения. Например, для данного объявления:

VAR

EndWord: BOOLEAN;

следующее присваивание присваивает EndWord TRUE или FALSE:

EndWord := (Ch = ‘#’) OR (Ch = ‘ ‘)