При реализации многократного повторения некоторых операций линейной конструкцией необходимо снова и снова повторять одни и те же операторы. Для более компактной реализации этих операций во всех языках используются циклические конструкции, суть которых заключается в том, что вместо многократного переписывания одних и тех же строк программы управление в нужном месте передается предыдущим операторам с тем, чтобы они повторялись.
Имеется два вида циклических алгоритмов: цикл с предусловием (цикл ПОКА) и цикл с постусловием (цикл ДО). Оператор цикла REPEATорганизует выполнение цикла, состоящего из любого числа операторов, с неизвестным заранее числом повторений. Тело цикла выполняется хотя бы один раз. Выход из цикла осуществляется при истинности некоторого логического выражения. Структура оператора:
repeat <тело цикла> until<условие>;
Оператор цикла WHILEорганизует выполнение одного оператора неизвестное заранее число раз. Выход из цикла осуществляется, если некоторое логическое выражение окажется ложным. Так как истинность логического выражения проверяется в начале каждого повтора, тело цикла может не выполняться ни разу. Структура оператора цикла имеет вид:
while <условие> do <тело цикла>;
Блок-схемы циклических конструкций могут быть изображены следующим образом:
Оператор цикла FORорганизует выполнение одного оператора заранее известное число раз. Существует два варианта оператора.
for <переменная>:=<нач. значение> to <кон. значение> do<оператор>;
for <переменная>:=<нач. значение> downto <кон. значение> do<оператор>;
Выполнение очередного повтора включает в себя сначала выполнение оператора, а затем присваивание переменной цикла следующего большего значения (в первом случае) или следующего меньшего (во втором варианте). Особенностью арифметического цикла является то, что число повторений операторов цикла должно быть известно заранее.
Примеры решений задач.
1. Вычислить N! (факториал).
Program Faktorial;
Var n, i, f: integer;
Begin
f:=1;
Write('Введите n=');
Readln(n);
For i:=2 to n do
f:=f*i;
Writeln(n,'!=',f);
End.
2. Найти сумму цифр в записи данного натурального числа;