Иллюстрированный самоучитель по Turbo Pascal

Преобразованя типов и действия над ними

И, наконец, об операциях отношения и логических операциях.

Над данными типа REAL, INTEGER, CHAR, STRING определены следующие операции отношения (сравнения):

  • = – равно;
  • <> – не равно;
  • < – меньше;
  • > – больше;
  • <= – меньше или равно,
  • >= – больше или равно.

В операциях сравнения должны участвовать однотипные операнды. Исключение сделано опять-таки в отношении REAL и INTEGER, которые могут сравниваться друг с другом. Результат применения операции отношения к любым операндам имеет тип BOOLEAN.

Сравнение двух строк осуществляется следующим образом. Символы строк сравниваются попарно друг с другом так, что первый символ первой строки сравнивается с первым символом второй строки, второй символ первой строки – со вторым символом второй и т.д. Символы сравниваются путем сравнения их кодов во внутреннем представлении (см. гл. 4). Если одна строка короче другой, недостающие символы заменяются нулем. Отношение первой несовпадающей друг с другом пары символов и принимается за отношение двух строк.

При сравнении данных типа BOOLEAN учитывается внутреннее соглашение Турбо Паскаля, в соответствии с которым FALSE есть нулевой байт, a TRUE – байт с единицей в младшем разряде. Заметим, что функция ORD преобразует к целому не только символы, но и логические величины, поэтому:

ord(false) = 0,
ord(true) = 1.

В Турбо Паскале определены следующие логические операции:

  • not – логическое НЕ;
  • or – логическое ИЛИ;
  • and – логическое И;
  • хоr – исключающее ИЛИ.

Логические операции применимы к операндам целого и логического типов. Если операнды – целые числа, то результат логической операции есть тоже целое число (подробнее об этом сказано в гл.4). Логические операции над логическими данными дают результат логического типа.

При вычислении выражений любого типа приоритет вычислений определяется расставленными скобками, а при их отсутствии – по табл. 2.1 (в порядке убывания приоритета).

Таблица 2.1. Приоритет операций.

Приоритет Операция
1 not, @
2 *, /, div, mod, and, shl, shr
3 +, -, or, xor
4 =, <>, >, >=, <, <=, in

Примечание
Операции @ (получение адреса), shl (сдвиг влево), shr (сдвиг вправо) и in (принадлежность к множеству) описаны в гл.4
.

Следует учесть, что в отличие от многих других языков программирования в Турбо Паскале логические операции имеют более высокий приоритет, чем операции отношения. В связи с этим, в сложных логических выражениях обычно необходимо расставлять скобки. Если, например, b и с имеют тип INTEGER, то выражение:

а = b and с < d

Вызовет сообщение о синтаксической ошибке, так как сначала выполнится операция b and с. Правильным будет выражение:

(а = b) and (с < d)
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.