> | Больше чем | 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.
Таблица 9.6
МАТЕМАТИЧЕСКИЕ ФУНКЦИИ
Вызов функции | Тип аргумента | Тип значения | Назначение функции |
Abs(X) | Целый/вещественный | Как у аргумента | Абсолютное значение X |
Pi | — | Вещественный | Значение числа 'Пи' |
Sin(X) | Вещественный | Вещественный | Синус X радиан |
Cos(X) | Вещественный | Вещественный | Косинус X радиан |
ArcTan(X) | Вещественный | Вещественный | Арктангенс X радиан |
Sqrt(X) | Целый/Вещественный | Как у аргумента | Квадратный корень из X, X>0 |
Sqr(X) | Целый/Вещественный | Как у аргумента | Значение квадрата X |
Exp(X) | Вещественный | Вещественный | Значение e в степени X |
Ln(X) | Вещественный | Вещественный | Натуральный логарифм X, X>0 |
Trunc(X) | Вещественный | LongInt | Целая часть значения X |
Frac(X) | Вещественный | Вещественный | Дробная часть значения X |
Int(X) | Вещественный | Вещественный | Целая часть значения X |
- 176 -
Round(X) | Вещественный | LongInt | 'Правильное' округление X до ближайшего целого |
Random | — | Вещественный | Случайное число (0…1) |
Random(X) | Word | Word | Случайное число (0…X) |
Odd(X) | Целый | Логический | Возвращает True, если X – нечетное число |
Таблица 9.7
МАТЕМАТИЧЕСКИЕ ПРОЦЕДУРЫ