Отметим основное отличительное свойство циклических алгоритмов: количество действий, исполняемых в процессе выполнения алгоритма, может существенно превышать количество команд, из которых организован цикл. Чтобы в этом убедиться, достаточно алгоритм "проиграть", то есть выполнить его шаг за шагом при некоторых наборах допустимых исходных данных, перевоплотившись в предполагаемого педантичного исполнителя. (Отметим также, что перед началом этапа программирования полезно проводить указанным образом "проигрывание" любого алгоритма, так как эта процедура позволяет легко обнаружить ошибки, допущенные в логической организации алгоритма).
Для примера напишем блок-схему алгоритма вычисления суммы всех натуральных чисел от 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.
[gl]ЛЕКЦИЯ 11. ОСНОВЫ ЯЗЫКА ПАСКАЛЬ[:]