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

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

Структурные операторы

 

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

 

Составные операторы задают порядок выполнения операторов, являющихся их элементами. Они должны выполняться в том порядке, в котором они записаны. Составные операторы обрабатываются, как один оператор, что имеет решающее значение там, где синтаксис Паскаля допускает использование только одного оператора. Операторы заключаются в ограничители begin и end, и отделяются друг от друга точкой с запятой.

Приведем пример составного оператора:

begin

Z := X; X := Y; Y := Z;

end;

 

 

Иногда бывает необходимо, чтобы некоторая часть программы была выполнена, если некоторое заданное условие имеет значение Тrue или же не имеет, или если некоторое заданное выражение принимает определенное значение. Посмотрим, как это реализуется в Паскале.

В выражении должен получаться результат, имеющий стандартный булевский тип. Если результатом выражения является истинное значение (Тrue), то выполняется оператор, следующий за ключевым словом then. Если результатом выражения является значение False и присутствует ключевое слово else, то выполнятся оператор, следующий за ключевым словом else. Если ключевое слово else отсутствует, то никакой оператор не выполняется.

Необходимо разъяснить два важных момента в использовании операторов if/then/else. Во-первых, оператор else является необязательным; другими словами, является допустимым следующий оператор if:

 

if выражение then оператор1

 

В этом случае оператор1 выполняется в том и только в том случае, если выражение имеет значение Тrue. Если выражение имеет значение False, то оператор1 пропускается и продолжается выполнение программы. Во-вторых, как быть, если необходимо выполнить более одного оператора в случае, когда указанное выражение принимает значение Тrue или False. В этом случае следует использовать составной оператор. В примере с вычислением отношения в предложении if используется одиночный оператор:

 

if B = 0.0 then Writeln('Деление на нуль запрещено.')

 

а в предложении else - составной оператор:

 

else begin Ratio = A / B; Writeln('Отношение равно ',Ratio) end;

 

Оператор варианта (case)

 

Этот оператор позволяет осуществить в программе выбор между альтернативами, не используя большого числа операторов if.

Оператор варианта (casе) состоит из выражения (переключателя) и списка операторов, каждому из которых предшествует одна или более констант (они называются константами выбора) или ключевое слово else. Переключатель должен иметь перечислимый тип и перечислимые значения верхней и нижней границы этого типа должны лежать в диапазоне от -32768 до 32767. Таким образом, строковый тип и длинный целый тип являются недопустимыми типами переключателя. Поддиапазон записывается в виде двух констант, разделенных ограничителем поддиапазона '..'. Тип константы должен соответствовать типу селектора. Оператор, стоящий после метки case, выполняется в том случае, если значение селектора равно значению констант или если оно попадает в один из поддиапазонов.

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

Приведем некоторые примеры оператора варианта:

 

case BirdSight of

'C', 'c' : Curlews := Curlews + 1;

'H', 'h' : Herons := Herons + 1;

'E', 'e' : Egrets := Egrets +1;

'Y', 't' : Terns := Terns +1;

end; { case }