Операторы

Операторы определяют последовательность действий, совершаемых в программе. Операторы могут быть элементарными и составными. Элементарные операторы не имеют в своем составе других операторов. Элементарными операторами являются операторы присваивания, вызовы процедур, операторы Break, Continue, Raise, Return и Dispose. Составные операторы включают в себя другие операторы. Также имеется один условный оператор ?:.

$ Statement = { Empty | BreakStatement | ContinueStatement | DisposeStatement | RaiseStatement | ReturnStatement | ForStatement | ForEachStatement | IfStatement | RepeatStatement | CaseStatement | TryStatement | WhileStatement | WithStatement | Assignment | ProcedureCall }

Присваивание

$ Assignment = designator ":=" expression

Оператор присваивания заменяет текущее значение переменной, поля или свойства объекта новым значением, которое определяется заданным выражением. Тип переменной, поля или свойства должен быть совместим с типом выражения.

Вызовы подпрограмм

$ ProcedureCall = ( [ INHERITED ] designator ) “(“ [ActualParameters] “)”

Вызов подпрограммы (процедуры, функции или метода объекта) активирует ее выполнение. Также вызов подпрограммы может содержать список фактических параметров. Допустимы две схемы сопоставления формальных и фактических параметров: «позиционные параметры» и «именованные параметры».

При использовании позиционных параметров, фактические параметры формируются в виде списка параметров, разделенных запятыми. Каждый фактический параметр сопоставляется тому формальному, которому соответствует его позиция. При этом допустимо использование необязательных параметров, которым может соответствовать значение по умолчанию. Тогда список фактических параметров должен обязательно включать в себя обязательные параметры и может включать необязательные параметры. При этом, не допускается пропуск параметров. Таким образом, если процедура имеет 8 (3 обязательных и 5 необязательных) параметров, и Вы хотите определить 7-ой параметр, то Вам придется определить все 6 предшествующих.

При использовании именованных параметров, фактические параметры формируются в виде списка пар: <имя формального параметра>:=<фактический параметр>. При такой схеме можно задавать все обязательные и только необходимые фактические параметры.

Примеры вызовов процедур

Пусть у нас описана следующая процедура:

Sub SomeProc(p1, p2: Integer; p3: Integer = 0; p4: Integer = 1);

Begin

// список операторов

End Sub SomeProc;

p1, p2 – обязательные параметры.

p3, p4 – необязательные параметры.

Следующие вызовы процедуры являются корректными:

SomeProc(1, 2, 3, 4);

SomeProc(1, 2, 3);

SomeProc(1, 2);

SomeProc(p1 := 1, p2 := 2, p4 := 4);

SomeProc(p2 := 2, p1 := 1);

А вот примеры некорректных вызовов:

SomeProc(1, 2, , ); SomeProc(1, 2, , 4); - пустые опущенные параметры недопустимы.

SomeProc(1); SomeProc(p1:=1, p3:=3); - указаны не все обязательные параметры.

Параметры в подпрограмму могут передаваться как по ссылке, так и по значению. В том случае если формальный параметр описан как параметр по ссылке, фактический параметр должен являться переменной или полем объекта. В том случае если формальный параметр описан как параметр по значению, фактический параметр должен являться выражением.

В определении тела метода может встретиться специальный вызов INHERITED предназначенный для вызова реализации данного метода в родительском классе.

Последовательность операторов

Последовательность операторов определяет последовательность действий, заданных отдельными операторами из последовательности. Операторы разделяются спецсимволом “;”.

$ StatementSequence = statement [";"] | ({statement ";"} statement [";"])

Составные операторы

Условные операторы

Пустой оператор

$ Empty :

 

Пустой оператор используется когда не требуется выполнять каких-либо операторов в контексте где с точки зрения синтаксиса языка требуется оператор. В качестве пустого оператора указывается пустая строка.