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


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

Операторы перехода. Метки

Управляющие операторы

Эти операторы регулируют последовательность действий в программе, а именно:

— изменяют естественный порядок действий;

— выбирают одно из нескольких возможных направлений продолжения вычислений в зависимости от соотношения обрабатываемых данных;

— организуют многократное повторение выделенного участка программы;

— организуют выполнение подпрограммы и последующий возврат к месту ее вызова;

— приостанавливают или завершают вычисления.

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

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

Условный оператор организует проверку истинности некоторого условия, разветвление программы на две ветви в зависимости от исхода проверки, выполнение выбранной ветви и переход к последующему оператору программы, общему для обеих ветвей.

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

При этом реализуется следующая конструкция:

1) проверяется истинность условия Н;

2) при истинности Н выполняется оператор P, иначе выполняется R;

3) осуществляется переход к выполнению оператора Q.

Неполный условный оператор включает условие Н и только один оператор Р; здесь при ложности Н переход к Q осуществляется немедленно, а именно:

1. проверяется истинность условия Н;

2. при ложности Н сразу же осуществляется переход к Q;

3. при истинности Н выполняется оператор P, затем переход к Q.

Если один из операторов (P или R) или оба сами являются условными, говорят о вложенных условных операторах.

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

В Паскале и Си для этой цели есть особая конструкция составного оператора, то есть группы операторов, заключенных в операторные скобки (в Паскале это BEGIN — левая скобка и END — правая скобка; в Си — пара фигурных скобок). Пусть в двух ветвях стоят группы Р1, Р2, Р3 и R1, R2.

Схематически фрагмент программы на Паскале будет таков:

IF H THEN BEGIN Р1; Р2; Р3; P4 END ELSE BEGIN R1; R2; R3 END; Q;

(напомним перевод английских терминов Паскаля: IF — если; THEN — тогда, в таком случае; ELSE — иначе, в противном случае; BEGIN — начало; END — конец).

В реальной программе вместо символических обозначений условия Н и операторов Р2, Р3, P4, R1, R2, R3, Q должны быть записаны реальные конструкции операторов.

В Бейсике составные операторы отсутствуют и приходится использовать оператор перехода для создания конструкций, искусственно формирующих составные (если версия Бейсика позволяет размещать в одной строке несколько операторов, то они трактуются как составной).