Циклом называется многократно выполняемый участок программы.
Обычно для организации циклических программ используют операторы цикла. В Паскале определены три таких оператора: оператор цикла с предусловием, оператор цикла с постусловием и оператор цикла с параметром.
Синтаксическая диаграмма оператора цикла с предусловием:
Схема выполнения оператора While:
Значение выражения должно быть типа boolean. Оператор после слова do выполняется нуль или более раз. Чтобы цикл не был бесконечным (случай "зацикливания"), значение выражения в операторе должно изменяться таким образом, чтобы оно стало равным false.
Пример 1. Зацикливание программы.
x:=10;
While x>0 do
Begin
y:=x+1; z:=y-2;
End;
Пример 2. Алгоритм Евклида.
Program Evklid2;
Var m,n,d,r : word;
Begin
Read(m,n); Writeln('m = ',m,' n = ',n);
If m<n then
Begin{ Обмен значений m и n, }
r:=m; m:=n; n:=r; { если m < n }
End;
Whilen>0 do
Begin
r:=m mod n; m:=n; n:=r;
End;
d:=m; Writeln('d = ',d)
End.
Если в данном примере введено m = 10, n = 0, то цикл While ни разу не выполняется и в результате получаем d = 10.
Пример 3. Модификация алгоритма Евклида.
Program Evklid2а;
Var m,n,d : word;
Begin
Read(m,n); Writeln('m = ',m,' n = ',n);
While(m>0)and(n>0) do
Ifm>n then
m:=m mod n
Else
n:=n modm;
d:=m+n; Writeln('d = ',d)
End.
Программы Evklid2 и Evklid2a можно считать равноценными по быстродействию (компьютерный эксперимент показывает, что программа Evklid2a работает примерно на 7% быстрее по сравнению с программой Evklid2).
Оператор цикла с предусловием наиболее часто применяют при реализации итерационных процессов.