Глава 9. Цикл n раз

9.1 Пример алгоритма с циклом n раз

При составлении алгоритмов довольно часто встречаются случаи, когда некоторую последовательность команд нажно выполнить несколько раз подряд (см., например, алгоритм А3). Для упрощения записи алгоритма в таких случаях можно использовать специальную составную команду алгоритмического языка - цикл n раз

А15:
алг из А в Б
нач
. нц
5 раз
. .
вверх; вверх; вправо; вниз; вниз; вправо;
. кц
кон

При выполнении этого алгоритма компьютер 5 раз повторит последовательность вызовов вверх; вверх; вправо; вниз; вниз; вправо и Робот окажется в клетке Б.

9.2 Общий вид цикла n раз

В общем виде цикл n раз записывается так:

нц число повтореий раз
.
тело цикла (последовательность команд)
кц

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

Число повторений - произвольное целое число.

При выполнеии алгоритма последовательность команд в теле цикла повторяется указанное число раз. Правила алгоритмического языка допускают задание любого целого числа повторений. Оно может быть нулевым и даже отрицательным. Эти случаи не считаются ошибочными, просто тело цикла не будет выполнено ни разу, а компьютер сразу перейдет к выполнению команд, записанных после кц

9.3 Короткие алгоритмы могут описывать длинные последовательности действий

Использование цикла позволяет очень коротко записать довольно длинные последовательности действий. Рассмотрим пример

А16:
алг закрасить ряд из 10 клеток
нач
. нц
10 раз
. .
закрасить; вправо
. кц
. нц 10 раз
. . влево
. кц
кон

При выполнении этого короткого алгоритма компьютер даст Роботу 30 команд: сначала 10 раз будет выполнена пара команд закрасить; вправо, а затем 10 команд влево.

Если вместо числа 10 поставить 100, Робот выполнит уже 300 команд, а ведь длина алгоритма при этом не увеличится!

Таким образом, короткие алгоритмы могут описывать очень длинные последовательности действий.

9.4 Внутри цикла можно вызывать вспомогательные алгоритмы

А17:
алг закрасить прямоугольник
нач
. нц
6 раз
. .
закрасить ряд из 10 клеток
. . вниз
. кц
. нц 6 раз
. .
вверх
. кц
кон

9.5 Внутри цикла могут быть другие циклы

Задачу из алгоритма А17 можно решить и без использования вспомогательного алгоритма, вставив текст алгоритма "закрасить ряд из 10 клеток" (А16) непосредственно в текст основного алгоритма.

А18:
алг закрасить прямоугольник
нач
. нц
6 раз
. . нц
10 раз
. . .
закрасить; вправо
. . кц
. . нц
10 раз
. . .
влево
. . кц
. .
вниз
. кц
. нц
6 раз
. .
вверх
. кц
кон

Цикл, который находится внутри другого, называется вложенным циклом.

В данной задаче использование вложенных циклов не очень удобно: алгоритм А18 выглядит более громоздким и менее понятным, чем А17