Условные операторы
Составной оператор.
Структурные операторы
Оператор вызова процедуры
Оператор безусловного перехода
Оператор безусловного перехода предоставляет возможность изменять порядок выполнения операторов. С его помощью естественный порядок выполнения программы (т.е. оператор за оператором) прерывается и указывается, что дальнейшее выполнение программы должно продолжаться с оператора, помеченного меткой, которая использована в данном операторе перехода. Формат оператора:
GOTO <метка>
В качестве меток используются целые числа без знака из отрезка от 0 до 9999. В Турбо Паскале в качестве метки может быть использован любой идентификатор.
Примеры операторов перехода и помеченных операторов:
GOTO 25
GOTO M1
25: IF X>0 THEN X:=X*X
M1:I:=0
Каждая метка, прежде чем она используется, должна быть описана в разделе описания меток.
При использовании оператора GOTO необходимо помнить, что областью действия метки является только тот блок, в котором она описана. Передача управления в другой блок запрещена.
Оператор вызова процедуры служит для активизации предварительно определенной пользователем или стандартной процедуры. Например:
ClrScr;
InitWork(True);
Writeln('Hello');
1.4. Пустой оператор.
Пустой оператор никак не обозначается и не вызывает никаких действий. Пустой оператор - это просто лишняя точка с запятой в программе. Чаще всего пустой оператор встречается с меткой и ставится в конце составного оператора или в конце программы.
BEGIN
...
GOTO Metka; {переход в конец блока}
...
Metka: {пустой оператор помечен меткой}
END;
Структурные операторы представляют собой конструкции, построенные из других операторов по строго определенным правилам. Все структурные операторы подразделяются на группы: составные, условные, повтора и присоединения.
Составной оператор объединяет некоторую последовательность операторов в единый оператор путем заключения этой последовательности в операторные скобки - служебные слова BEGIN и END.
Формат оператора:
BEGIN <оператор 1>;<оператор 2>;..(оператор N> END
Операторы, входящие в составной оператор, выполнятся в том порядке, в котором они записаны.
Примеры составных операторов:
BEGIN I:=0 END
BEGIN Y:=X/2; Х:=Х+H END
В Турбо Паскале имеются два условных оператора IF и CASE. Рассмотрим оператор IF. С помощью оператора IF выбирается и выполняется один из операторов, входящих в его состав. Формат оператора: IF <логическое выражение> THEN <оператор1> ELSE <оператор2>
Выполнение такого условного оператора происходит так: если логическое выражение истинно, то выполняется первый оператор, если ложно, то второй.
Условный оператор используется также в сокращенной форме:
IF <логическое выражение> THEN <оператор>
В этом случае, если логическое выражение ложно, то не происходит никаких действий.
По синтаксису после THEN и ELSE может стоять только один оператор, поэтому если необходимо выполнить несколько операторов, то их объединяют в составной оператор.
Примеры условных операторов:
IF X<0 THEN I:=I+1 ELSE K:=K+1
IF (X<Y) AND D THEN BEGIN X:=SIN(X); Y:=Y+1 END
Во втором примере D - логическая переменная.
Рассмотрим оператор CASE.
Часто в программе бывает необходимо проверять достаточно много условий и в зависимости от них выполнять те или иные действия. Для этого можно использовать многократно вложенные друг в друга условные операторы. Однако в этом случае программа становится громоздкой и ее трудно понимать. Считается, что число уровней вложения не должно превышать двух-трех. Если же необходимо выбирать из большего числа условий, то целесообразным становится применение оператора варианта.
Формат оператора:
CASE <селектор варианта> OF
<константа варианта 1>:<оператор 1>;
<константа варианта 2>:<оператор 2>;
'...
<константа варианта n>:<оператор n>
END
Селектор варианта может быть любого простого типа, за исключением типа REAL. Константы варианта должны быть того же типа, что и селектор варианта.
При выполнении оператора варианта сначала вычисляется значение селектора варианта, а затем выполняется тот оператор, который отмечен константой варианта, имеющей данное значение. Если подходящей константы нет, то возникает ошибка. Чтобы избежать этого в Турбо Паскале предусмотрена следующая конструкция:
CASE <селектор варианта> OF
<константа варианта 1>:<оператор 1>;
...
<константа варианта n>:<оператор n>;
ELSE <оператор>
END
Теперь, если значение селектора варианта не совпало ни с одной константой, то будет выполняться оператор, записанный после служебного слова ELSE.
Для того чтобы пометить оператор в списке выбора, можно использовать несколько констант варианта, а также диапазоны. Например:
CASE CH OF
'A','B','E','I':CH1:=SUCC(CH1);
'K'..'R':CH1:=PRED(CH1)
END;
Отметим, что если после константы варианта нужно выполнить не один, а несколько операторов, то необходимо использовать составной оператор.