Оператор цикла с предусловием

Repeat

Оператор цикла с постусловием

Оператор цикла с параметром

Оператор цикла с параметром имеет два формата:

for<Параметр>:= <Выражение1> to<Выражение2> do<0ператор>;

и

for<Параметр>:= <Выражение1> downto<Выражение2> do<0ператор>;

Параметр цикла представляет собой переменную порядкового типа, которая должна быть определена в том же блоке, где находится оператор цикла; вы­ражение1 и выражение2 являются, соответственно, начальным и конечным значениями параметра цикла и должны иметь тип, совместимый с типом параметра цикла.

Оператор цикла обеспечивает выполнение тела цикла, которым является оператор, расположенный после слова do, до полного перебора всех значе­ний параметра цикла от начального до конечного с соответствующим ша­гом. Шаг параметра всегда равен 1 для первого формата цикла и -1 – для второго формата. То есть значение параметра последовательно увеличивает­ся или уменьшается на единицу при каждом повторении цикла.

Цикл может не выполниться ни разу, если для цикла for ... toзначение начального выражения больше конечного, а для цикла for ...downtoзначение начального выражения меньше конечного.

Примеры. var i, j: integer; ch: char;

begin

for i:=10 to 14 do write(i:4); writeln;

for j:=14 downto 10 do write(j:4); writeln;

for ch:=’a’ to ‘e’ do write(ch:3);

end;

Результат: 10 11 12 13 14

14 13 12 11 10

a b c d e

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

<0ператор1>;

. . .

<0ператор N >;

until<условие>;

Условие – это выражение логического типа. Операторы, заключенные между словами repeatи until, составляют тело цикла и выполняются до тех пор, пока логическое выражение не примет значение true. То есть тело цикла повторяется при значении логического выражения, равном false. Посколь­ку условие проверяется в конце цикла, то операторы тела цикла выполняют­ся, как минимум, один раз.

В теле цикла может находиться произвольное число операторов без опера­торных скобок beginи end. По крайней мере, один из операторов тела цик­ла должен влиять на значение условия, в противном случае произойдет зацикливание.

Примеры.

а ) d:=1; s:=0; б ) d:=1; s:=0;

repeat repeat

s:=s+d s:=s+d;

until ( d >100); d := d +1;

//бесконечный цикл until ( d >100);

Оператор цикла с предусловием целесообразно использовать в случаях, когда число повторений тела цикла заранее неизвестно и тело цикла может не выполняться. Во многом этот оператор аналогичен оператору repeat... until, но проверка условия выполняется в начале оператора. Формат опера­тора цикла с предусловием:

While<условие> do<0ператор>;

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

Пример. i:=30;

While (i<40) do i:=i+1; // если (i>40) ? – ни разу

Write(i); // если (i>10) ? – бесконеч .

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