Операторы повторения

Else

Begin

Else

End

Begin

Else

z:=(r1+r2)/(r1*r2);

Точка с запятой, стоящая перед ключевым словом else заканчивает текст оператора if. А это приводит к синтаксической ошибке, поскольку оператора, начинающегося с ключевого слова else не существует.

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

Пример условного оператора, включающего составные операторы:

A:=2; B:=8: C:=0;

if A<B then

C:=A+B;

C:=C+12;

writeln('C=',C:2)

C:=B-A;

C:=C*12;

writeln('C=',C:2)

end;

Допускается вложение условных операторов друг в друга:

if Условие_1 then

if Условие_2 then

Оператор_1

else Оператор_2;

При вложенности операторов соблюдается правило: каждое else соответствует тому then, которое непосредственно ему предшествует, например,

if A<20 then

if A>=15 then

writeln('A v diapazone 15-20')

writeln('A v diapazone 10-14');

Оператор выбора case является обобщением условного оператора и позволяет сделать выбор из произвольного числа имеющихся вариантов.

Формат оператора выбора в полной форме:

case Селектор of

Список_1: Оператор_1;

Список_2: Оператор_2;

...

Список_N: Оператор_N

else Оператор_Е

end;

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

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

Выполняется оператор case следующим образом (рис. 2.2):

· Сначала вычисляется значение выражения-селектора.

· Значение выражения-селектора последовательно сравнивается с константами из списков констант.

· Если значение выражения совпадает с константой из списка, то выполняется соответствующая этому списку группа операторов. На этом выполнение инструкции саsе завершается.

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


Синтаксис case позволяет не писать else и соответствующую последовательность операторов. В этом случае, если значение выражения не совпадает ни с одной константой из всех списков, то выполняется следующий за case оператор программы.

Примеры использования операторов выбора:

var Symbol: Char;

...

case Symbol of // Селектор интервального типа

'0'..'9': writeln('Eto cifra');

'a'..'z': writeln('Eto strochnaya bukva');

'A'..'Z': writeln('Eto propisnaya bukva');

#10,#13,#26: writeln('Eto upravliauchiy simvol')

else writeln('Eto drygoy simvol')

end;

var i,z: integer;

...

case i of //Селектор целочисленного типа

1: z:=i+10;

2: z:=i+100;

3: z:=i+1000

end;

var Season: (Winter, Spring, Summer, Autumn);

...

case Season of // Селектор перечисляемого типа

Winter: writeln('Zima');

Spring: writeln('Vesna');

Summer: writeln('Leto');

Autumn: writeln('Osen')

end;

Алгоритмы решения многих задач являются циклическими, т.е. для достижения результата определенная последовательность действий должна быть выполнена несколько раз. Например, для того чтобы найти фамилию человека в списке, надо проверить первую фамилию списка, затем вторую, третью и т. д. до тех пор, пока не будет найдена нужная фамилия или не будет достигнут конец списка.

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

Для организации цикловиспользуютсяоператоры повторения. Если количество повторов известно заранее, используется оператор цикла со счетчиком (for), если количество повторов заранее неизвестно, то используется либо оператор цикла с предусловием (while), либо оператор цикла с постусловием (repeat).

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

В общем виде оператор while записывается следующим образом:

while Условие do