Оператор цикла с предусловием
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), то тело цикла вообще не выполняется и происходит переход на оператор, следующий за оператором цикла.