Глава 5. ОПЕРАТОРЫ

Содержание

5.1. ПРОСТЫЕ И СОСТАВНЫЕ ОПЕРАТОРЫ. ПОСЛЕДОВАТЕЛЬНОСТИ ОПЕРАТОРОВ
5.2. ОПЕРАТОРЫ ПРИСВАИВАНИЯ
5.3. УСЛОВНЫЕ ОПЕРАТОРЫ
5.4. ОПЕРАТОРЫ ВЫБОРА
5.5. ОПЕРАТОРЫ ЦИКЛА
5.6. ОПЕРАТОРЫ БЛОКА
5.7. ОПЕРАТОРЫ ВЫХОДА
5.8. ОПЕРАТОРЫ ВОЗВРАТА
5.9. ОПЕРАТОРЫ ПЕРЕХОДА

Оператор определяет действие, которое предстоит выполнить; процесс реализации этого действия называется выполнением оператора.

В данной главе описываются общие правила, применимые ко всем операторам, и некоторые операторы. Оператор вызова процедуры описывается в гл. 6. Операторы вызова входа, задержки, принятия, отбора и прекращения описываются в гл. 9, оператор возбуждения — в гл. 11, а оператор кода — в гл. 13.

Ссылки: оператор возбуждения 11.3, оператор вызова входа 9.5, оператор вызова процедуры 6.4, оператор задержки 9.6, оператор кода 13.8, оператор отбора 9.7, оператор прекращения 9.10, оператор принятия 9.5.

5.1. ПРОСТЫЕ И СОСТАВНЫЕ ОПЕРАТОРЫ. ПОСЛЕДОВАТЕЛЬНОСТИ ОПЕРАТОРОВ

Оператор может быть или простым, или составным. Простой оператор не содержит других операторов. Составной оператор содержит простые операторы и другие составные операторы.

последовательность-операторов ::= оператор (оператор) оператор ::= {метка} простой-оператор           | {метка} составной-оператор простой-оператор ::= пустой-оператор   | оператор-присваивания | оператор-вызова-процедуры    | оператор-выхода       | оператор-возврата    | оператор-перехода     | оператор-вызова-входа    | оператор-задержки     | оператор-прекращения    | оператор-возбуждения  | оператор-кодасоставной-оператор ::=     условный-оператор | оператор-выбора    | оператор-цикла    | оператор-блока   | оператор-принятия | оператор-отбораметка ::= << простое-имя-метки >>пустой-оператор ::= null:

Говорят, что имя каждой метки, стоящей перед оператором, помечает этот оператор. Имя метки (а также имя цикла или блока) неявно описано в конце раздела описаний самого внутреннего блока, тела подпрограммы, тела пакета, тела задачи или настраиваемого тела, которые содержат данный помеченный оператор (именованный оператор цикла или именованный оператор блока). При отсутствии в операторе блока раздела описаний подразумевается, что оператор блока содержит неявный раздел описаний (с предшествующим declare).

Имена меток, циклов и блоков неявно описываются в порядке появления в тексте программы начал соответствующих помеченных операторов, операторов цикла и операторов блока. Для имен меток, циклов и блоков, неявно описанных в теле программного модуля, включая вложенные в это тело операторы блока, но исключая другие вложенные программные модули (т. е. подпрограммы, пакеты, задачи или настраиваемые модули), должны использоваться различные идентификаторы.

Выполнение пустого оператора заключается в переходе к выполнению следующего оператора.

Выполнение последовательности операторов состоит в поочередном выполнении отдельных операторов последовательности, пока они все не будут закончены или пока не произойдет передача управления. Передача управления вызывается выполнением операторов выхода, возврата или перехода, выбором альтернативы завершения, возбуждением исключения или (неявно) выполнением оператора прекращения.

Примеры помеченных операторов:

<<HERE>> <<ICI>> <<AQUI>> <<HIER>> null;

<<AFTER>> X := 1;

Примечание. Область действия описания начинается самим описанием (см. 8.2). Область действия неявного описания имени метки, цикла или блока начинается до первого явного появления соответствующего имени, поскольку это появление возможно лишь в качестве метки оператора, в операторе блока, операторе цикла или операторе перехода. Неявное описание в операторе блока может скрыть описание, данное во внешнем программном модуле или операторе блока (согласно обычным правилам скрытия, изложенным в разд. 8.3).

Ссылки: альтернатива завершения 9.7.1, возбуждение исключений 11, завершенная задача 9.4, задача 9, задачный модуль 9.1, идентификатор 2.3, имя блока 5.6, имя цикла 5.5, исключение 11, настраиваемое тело 12.1, настраиваемый модуль 12, неявное описание 3.1, область действия 8.2, оператор блока 5.6, оператор возбуждения 11.3, оператор возврата 5.8, оператор выбора 5.4, оператор вызова входа 9.5, оператор вызова процедуры 6.4, оператор выхода 5.7, оператор задержки 9.6, оператор кода 13.8, оператор отбора 9.7, оператор перехода 5.9, оператор прекращения 9.10, оператор принятия 9.5, оператор, присваивания 5.2, оператор цикла 5.5, описание 3.1, пакет 7, подпрограмма 6, программный модуль 6, простое имя 4.1, раздел описаний 3.9, скрытие 8.3, тело задачи 9.1, тело пакета 7.1, тело подпрограммы 6.3, условный оператор 5.3.