ОПЕРАЦИИ
В Object Pascal определены следующие операции: унарные not, @; мультипликативные *, /, div, mod, and, shi, shr; аддитивные +, -, or, xor; отношения =, <>, <, >, <=, >=, in. Приоритет операций убывает в указанном порядке, т. е. наивысшим приоритетом обладают унарные операции, низшим - операции отношения. Порядок выполнения нескольких операций равного приоритета устанавливается компилятором из условия оптимизации кода программы и не обязательно слева направо. При исчислении логических выражений операции равного приоритета всегда вычисляются слева направо, причем будут вычисляться все или только достаточные операции в зависимости от установленного в среде Delphi переключателя Project | Options | Compiler | Complete Boolean eval: при установленном переключателе вычисляются все операции отношения, при неустановленном - только те, что необходимы для однозначного определения результата исчисления. Правила использования операций с операндами различного типа приводятся в табл. 6.1. Таблица 6.1
Унарная операция @ применяется к операнду любого типа и возвращает результат типа pointer (см. гл. 9), в котором содержится адрес операнда. Если операция @ применяется к процедуре, функции или методу в объекте, ее результатом будет адрес точки входа в эту процедуру (функцию, метод). Этот адрес можно использовать только в подпрограмме, написанной на Ассемблере, или во фрагментах INLINE. В Object Pascal определены следующие логические операции: not - логическое НЕ; and - логическое И; or - логическое ИЛИ; xor - исключительное ИЛИ. Логические операции применимы к операндам целого и логического типов. Если операнды - целые числа, то результат логической операции есть тоже целое число, биты которого (двоичные разряды) формируются из битов операндов по правилам, указанным в табл. 6.2. Таблица 6.2
К логическим же в Object Pascal обычно относятся и две сдвиговые операции над целыми числами: i shl j - сдвиг содержимого / на j разрядов влево; освободившиеся младшие разряды заполняются нулями; i shr j - сдвиг содержимого i на j разрядов вправо; освободившиеся старшие разряды заполняются нулями. В этих операциях i и у - выражения любого целого типа. Логические операции над логическими данными дают результат логического типа по правилам, указанным в табл. 6.3. Таблица 6.3
Операция отношения in применяется к двум операндам. Первым (левым) операндом должно быть выражение любого порядкового типа, вторым - множество, состоящее из элементов того же типа, или идентификатор множественного типа. Результат операции будет True, если левый операнд принадлежит множеству.
Любые данные, т. е. константы, переменные, свойства, значения функций или выражения, в Object Pascal характеризуются своими типами. Тип определяет множество допустимых значений, которые может иметь тот или иной объект, а также множество допустимых операций, которые применимы к нему. Кроме того, тип определяет также и формат внутреннего представления данных в памяти ПК. Object Pascal характеризуется разветвленной структурой типов данных (рис. 7.1). В языке предусмотрен механизм создания новых типов, благодаря чему общее количество используемых в программе типов может быть сколь угодно большим. В этой и четырех последующих лекциях приводится подробное описание всех типов.
|