Программирование в среде Турбо Паскаль (Поляков, Круглов) - страница 112

<>

Не равно

X1 <> X2

Логическое значение True, если значения X1 и X2 различны, и False в противном случае

<

Меньше чем

X1 < X2

Логическое значение True, если значение X1 меньше значения X2 в смысле, определенном для типа этих значений, и False в противном случае

- 174 -

>

Больше чем

X1 > X2

Логическое значение True, если значение X1 больше значения X2 в смысле, определенном для типа этих значений, и False в противном случае

<=

Меньше или равно

X1<=X2

Логическое значение True, если значение X1 не больше значения X2 в смысле, определенном для типа этих значений, и False в противном случае

>=

Больше или равно

X1>=X2

Логическое значение True, если значение X1 не меньше значения X2 в смысле, определенном для типа этих значений, и False в противном случае

Когда операции отношения применяются для операндов простых типов, то это должны быть совместимые типы. Однако, если один операнд имеет вещественный тип, то другой может быть целого типа. Можно сравнивать и логические значения. Всегда выполняется True>False.

Обычно логические выражения встречаются в программе либо в операторах управления с условием (IF, WHILE, REPEAT...UNTIL и др.), либо в присваивании значений в логические переменные. С помощью приведения типов можно вставлять логические выражения прямо в числовые. Например, если надо ограничить величину X, например, значением 15, то обычно строится конструкция

if X>15 then X:=X-15;

Но если учесть, что False хранится как байт со значением 0, a True — как байт со значением 1, то можно обойтись без if:

X := X - 15 * Byte( X>15 );

Здесь 15 вычтется только, если (X>15)=True, что значит 1. Иначе же, вычтется 15*0. Можно и из байтов делать логические значения приведением к типу Boolean. Но тут надо помнить, что

Boolean( X ) = False, если X=0,

Boolean( X ) = True , если X<>0.

Значение X должно иметь тип Byte. Как видно, ненулевое значение всегда «истинно».

- 175 -

Еще одно замечание: при сравнении вещественных значений нельзя быть уверенным в его корректности. Например, выражения X и ( 2.23 * X / 2.23 ) формально тождественны, но из-за ошибок округления в вещественном типе будут различаться. Еще большие проблемы возникают при работе с расширенным набором вещественных типов, разрешенных при наличии математического сопроцессора 80X87. Советуем посмотреть разд. 9.5, посвященный использованию сопроцессора, где рассказывается, как бороться с подобными трудностями.

9.4. Математические процедуры и функции


Системная библиотека математических процедур и функций Турбо Паскаля приведена в таблицах 9.6 и 9.7.