04. Циклический алгоритм

Алгоритм циклической структуры

Как вы помните, любой алгоритм можно составить из нескольких базовых структур. В простейшей — линейной — команды выполняются однократно в той последовательности, как записаны. Если на каком-то этапе исполнитель должен выбирать один вариант из нескольких, используют разветвленную структуру. Но чаще всего автоматизируют те действия, которые нужно выполнять много раз подряд. И здесь на помощь приходит циклическая структура.

В алгоритме циклической структуры (цикле) серия команд (тело цикла) повторяется многократно. При этом нужно указать, либо сколько раз исполнитель должен выполнить тело цикла, либо при каком условии исполнитель будет повторять тело цикла еще раз.

Разновидности циклической структуры

Задается количество повторений

Цикл с параметром

Задается условие продолжения/окончания повторений

блок-схема

фрагмент программы

Цикл с предусловием

Цикл с постусловием

for i:=1 to 10 do

write(i, ' ');

Результат:

1 2 3 4 5 6 7 8 9 10

for k:=8 downto 1 do

write(k*k, ' ');

n:=1;

while n < 100 do

begin

write(n, ' ');

n:=n*2;

end;

Результат:

1 2 4 8 16 32 64

m:=1;

repeat

write(m, ' ');

m:=m*3;

until m > 500;

Результат:

1 3 9 27 81 243

Результат:

64 49 36 25 16 9 4 1

(В примерах фрагментов программ ключевые слова операторов цикла выделены полужирным шрифтом).

Если тело цикла состоит более чем из одной команды, в операторах for...to...do и while...do ее необходимо, как и в условном операторе, заключать в операторные скобки begin...end (см. пример цикла с предусловием).

При составлении циклического алгоритма, нужно...

    1. Определить, какая последовательность действий должна повторяться.
    2. Выяснить, что будет известно о количестве повторений тела цикла до начала цикла.
        1. Если число повторений известно, можно использовать цикл с параметром.
        2. Если тело цикла обязательно выполняется хотя бы один раз, можно использовать цикл с постусловием.
        3. Если число повторений неизвестно и может быть нулевым, необходимо использовать цикл с предусловием.
    3. Определить пределы изменения параметра (для цикла с параметром) либо условие повторения/окончания (для циклов с условием).
    4. Определить, значения каких переменных должны быть известны до начала цикла (особое внимание обратить на переменные, входящие в условие оператора цикла с предусловием). Операторы для ввода или вычисления этих переменных должны быть записаны до заголовка цикла.
    5. Записать алгоритм на языке программирования.
    6. Подобрать данные для тестирования программы (предусмотреть несколько наборов данных, в том числе для предельных случаев, например, для случая, когда тело цикла с предусловием не должно выполняться ни разу).

Задания