Если вычислительный процесс содержит многократные вычисления по одним и тем же математическим зависимостям, но для различных значений входящих в них величин (переменных), то его называют циклическим. Многократно повторяемые участки вычислений называются циклами, а переменные изменяющиеся в цикле – переменными цикла. Алгоритм циклической структуры в наиболее общем виде должен содержать:
1 . Подготовку цикла: задание начальных значений переменными цикла перед первым его вычислением;
2 . Тело цикла: действия, повторяемые в цикле для различных значений переменных цикла;
3 . Модификацию (изменение) значений переменных цикла перед каждым новым его повторением;
4 . Управление циклом: проверку условия продолжения (или окончания) цикла, переход на начало цикла (или выход из цикла по его окончании).
На рис.показан общий вид циклического алгоритма.
Различают циклы с заданным и заранее неизвестным числом повторений. Циклы первого типа называют циклами со счетчиком. Число повторений тела цикла в этом случае подсчитывается с помощью специальной переменной (счетчика), для которой известны только начальное и конечное (пороговое) значение, шаг ее изменения. Управление циклом осуществляется на основании сравнения текущего значения счетчика с заданным порогом. Переменную – счетчик часто именуют параметром цикла, а сам цикл – циклом с параметром.
Оператор цикла с параметром имеет следующий вид:
FOR N:=A TO B DO C или FOR N:=A DOWNTO D DO C
Оператор цикла с предусловием имеет следующую общую форму записи:
WHILE <условие> DO <оператор>
Оператор выполняется в цикле WHILE до тех пор, пока УСЛОВИЕ истинно (имеем значение TRUE). Если условие ложно (имеем значение FALSE), то выполняется оператор, следующий за WHILE. Если условие
ложно с самого начала, то оператор не вычисляется ни разу. Условие
вычисляется и анализируется перед каждым выполнением цикла, отсюда
и термин "предусловие".
PROGRAM SUMMA ;
VAR X, SUM: REAL;
BEGIN
SUM: = 0;
X: = 10;
WHILE X > 5.5 DO
BEGIN
SUM: = SUM + X;
X: = X – 1
END.
WRITELN (' Сумма =' , SUM);
WRITELN (X =,X)
END.
Оператор цикла с постусловием имеет следующий вид:
REPEAT
<оператор 1>;
<оператор 2>;
............
<оператор N>
UNTIL <УСЛОВИЕ>,
Действие оператора REPEAT подобно действию оператора WHILE, но проверка условия производится после очередного цикла, что обеспечивает его выполнение хотя бы один раз. Служебные слова REPEAT,
UNTIL по действию похожи на операторные скобки BEGIN – END: между ними можно поместить группу операторов, отделяя их друг от друга точкой с запятой. Оператор 1,..., оператор N выполняется в цикле REPEAT до тех пор, пока условие ложно.
Пример: Программа SUMMA_1 имеет ту же цель, что и программа рассмотренная выше, что делает удобным их сравнение.
PROGRAM SUMMA_1;
VAR X,SUM:REAL;
BEGIN
SUM:=0;
X: =10;
REPEAT
SUM :=SUM+X;
X: =X-1;
UNTIL X<5.5;
WRITELN ('SUM =' , SUM);
WRITELN ('X=',X);
END.
Если телом цикла является циклическая структура, то такие циклы называются вложенными или сложенными. Цикл, содержащий в себе другой цикл, называют внешним. Цикл, содержащийся в теле другого цикла называют внутренним.
Внутренний и внешний циклы могут быть любыми из трех рассмотренных видов: циклами с параметром, циклами с предусловием, циклами с постусловием. Правила организации как внешнего, так и внутреннего циклов такие же, как и для простого цикла каждого из этих видов. Однако при построении вложенных циклов необходимо соблюдать следующее дополнительное условие: все операторы внутреннего цикла должны полностью лежать в теле внешнего цикла.