Операторы
Оператор — это конструкция языка Object Pascal, выполняющая определенную операцию. Все операторы можно разбить на несколько категорий.
Оператор присваивания
Слева от оператора присваивания := указывается переменная или свойство объекта, а справа — некоторое значение или выражение. Тип значения или результат выражения должен соответствовать типу переменной или свойства.
Арифметические операторы
Арифметические операторы возвращают значения, соответствующие типам числовых операндов:
• + — сложение;
• – — вычитание;
• * — умножение;
• / — деление чисел с плавающей запятой;
• div — целочисленное деление с отбрасыванием остатка;
• mod — получение остатка от целочисленного деления.
Булевы операторы
Булевы операторы возвращают значения типа Boolean:
• not — отрицание;
• and — логическое "И";
• or — логическое "ИЛИ";
• xor — логическое исключающее "ИЛИ".
Операторы сравнения
Операторы сравнения возвращают значение типа Boolean:
• = — равно;
• <> — не равно;
• < — меньше;
• > — больше;
• <= — меньше или равно;
• >= — больше или равно.
Побитовые операторы
Побитовые операторы выполняют действия с операндами с учетом их двоичного представления:
• not — побитовое отрицание (not 0 = 1; not 1 = 0);
• and — побитовое умножение (0 and N = 0; 1 and 1 = 1);
• or — побитовое сложение (1 or N = 1; 0 or 0 = 0);
• xor — побитовое исключающее сложение (0 xor 0 = 0; 0 xor 1 = 1; 1 xor 1 = 0);
• shl — побитовый сдвиг влево;
• shr — побитовый сдвиг вправо.
Строковые операторы
Строковые операторы применяются к операндам строкового или символьного типа:
• =, <>, <, >, <=, >= — операторы сравнения;
• + — оператор конкатенации (слияния операндов).
Операторы, применяемые к множествам
К множествам применяются следующие операторы:
• + — объединение (результат — множество);
• – — вычитание (результат — множество);
• * — пересечение (результат — множество);
• <= – подмножество (результат — множество);
• >= — супермножество (результат — множество);
• = — равенство (результат — значение типа Boolean);
• <> — неравенство (результат — значение типа Boolean);
• in — вхождение множества, указанного слева от оператора, во множество, указанное справа (результат — значение типа Boolean).
Операторы, применяемые с объектами
С объектами применяют следующие операторы:
• as — приведение к производному классу. Пример использования:
var Obj: TObject; //объект класса TObject
…
with Obj as TButton do //приводим к классу TButton
Caption:= 'Кнопка'; //то же, что Obj.Caption
• is — сравнение с классом. Пример использования:
var Obj: TObject; //объект класса TObject
…
if Obj is TButton then //если Obj – объект класса
//TButton, то…
Obj.Caption:= 'Кнопка';
• =, <> — операторы сравнения.
Группировка операторов
Операторы можно группировать, заключая их в круглые скобки.
Порядок выполнения операторов
В сложных выражениях операторы выполняются в следующем порядке:
1. ( ).
2. not.
3. *, /, div, mod, and, shl, shr, as.
4. +, –, or, xor.
5. =, <>, <, >, <=, >=, in, is.
Блоки программного кода
Два и более операторов присваивания, а также вызовов процедур или функций можно выделять в блоки программного кода при помощи ключевых слов begin и end. Такие блоки используются в конструкции with-do, а также в рассматриваемых ниже циклических конструкциях и конструкциях ветвления.
Конструкции ветвления
Конструкции ветвления осуществляют переход к одному из блоков программного кода на основании проверки некоторого условия. К ним относятся операторы if и case.
Оператор if
Оператор if имеет синтаксис двух видов:
if выражение then блок_кода;
if выражение then блок_кода else блок_кода;
Если выражение возвращает значение True, то выполняется блок кода, расположенный после ключевого слова then, в противном случае выполняется или программный код, расположенный после конструкции if-then (в случае отсутствия ветки else), или же код, расположенный после ключевого слова else.
Оператор case
Конструкция case используется для ветвления, когда может существовать более двух возможных результатов условного выражения. Она также имеет синтаксис двух видов:
case выражение of
значение1: блок_кода1;
…
значениеN: блок_кодаN;
end;
или
case выражение of
значение1: блок_кода1;
…
значениеN: блок_кодаN;
else блок_кода;
end;
Если результат выражения совпадает со значением1, то выполняется блок_кода1; если со значением2 — 6лок_кода2 и т.д. Если результат выражения не совпадает ни с одним значением, то выполняется блок кода в ветке else, а при ее отсутствии — код после ключевого слова end, завершающего конструкцию case.
Примечание
Результат выражения, который сопоставляется со значениями в ветках конструкции case, может быть только целочисленного или символьного типа.
Циклические конструкции
Для организации циклического выполнения программных блоков в языке Object Pascal используют циклические конструкции трех типов: for-do, while-do и repeat-until. Они отличаются характером начала и завершения цикла.
Конструкция for-do
Синтаксис конструкции for-do для цикла с увеличением значения счетчика:
for идентификатор_счетчика := начальное_значение to конечное_эначение do блок_кода;
Синтаксис конструкции for-do для цикла с уменьшением значения счетчика: