Отметим основное отличительное свойство циклических алгоритмов: количество действий, исполняемых в процессе выполнения алгоритма, может существенно превышать количество команд, из которых организован цикл. Чтобы в этом убедиться, достаточно алгоритм "проиграть", то есть выполнить его шаг за шагом при некоторых наборах допустимых исходных данных, перевоплотившись в предполагаемого педантичного исполнителя. (Отметим также, что перед началом этапа программирования полезно проводить указанным образом "проигрывание" любого алгоритма, так как эта процедура позволяет легко обнаружить ошибки, допущенные в логической организации алгоритма).
Для примера напишем блок-схему алгоритма вычисления суммы всех натуральных чисел от 1 до введенного пользователем N. Надо отметить, что можно было бы обойтись линейным алгоритмом, используя формулу суммы n членов арифметической прогрессии. Однако нам интересно именно на этом простом примере проиллюстрировать работу циклического алгоритма.
Дано n=10.
Найти S=1+2+…+10.
Учитывая то, что Si+1= Si+i+1, где Si =1+2+…+i.
Наша цель – получить тело цикла, т.е. блок команд, который будет повторяться несколько раз.
Шаг
S:=0;
Усовершенствуем, программу, введя новую переменную i, которая пробегала бы все числа от 1 до 100.
S:=0;
S:=0;
i:=0;
S:=S+1;
i:=1;
S:=S+i;
i:=i+1;
S:=S+i;
S:=S+2;
i:=2;
S:=S+i;
i:=i+1;
S:=S+i;
S:=S+3;
i:=3;
S:=S+i;
i:=i+1;
S:=S+i;
…
…
…
S:=S+100;
i:=100;
S:=S+i;
i:=i+1;
S:=S+i;
Итак, тело нашего цикла:
Найдем условие продолжения цикла. Так как перед входом в цикл значение переменной i равно 0. Поставим условие продолжения <100, т.е. i =0,1,2,…,99.