Теория:
Мы уже прибегали к циклическому алгоритму в предыдущих упражнениях. Такой вид алгоритма характеризуется повторениями, и мы организовывали его с помощью блока «Повторять всегда». Это бесконечный цикл, который мы использовали, но не управляли им.
Как же можно управлять циклом?
Как же можно управлять циклом?
Вспомним, что циклические алгоритмы могут повторяться определённое количество раз или количество повторений может зависеть от некоторого условия.
Цикл с заданным числом повторений
Например, при изображении квадрата достаточно повторить группу команд \(4\) раза. Выберем для примера исполнителя Стрелочку (\(Arrow1\)), перенесём центр вращения в «носик» стрелочки и выполним \(4\) раза команды: идти \(120\) шагов; повернуть на \(90\) градусов.
Наверное, не ускользнуло от твоего внимания, что удобно иметь под рукой программу-ластик, которая при нажатии на клавишу пробела стирает всё, что было нарисовано.

Рис. \(1\). Код для квадрата
Цикл с условием
Рассмотрим цикл с условием. Допустим, на нашей сцене нужно нарисовать фигуру, состоящую из повторяющихся одинаковых элементов, например, забор. Но изобразить его нужно только до определённой линии. Составим команды, изображающие повторяющийся элемент забора — одну доску:
повернуться в направлении \(0\)
идти \(120\) шагов
повернуться в направлении \(45\)
идти \(20\) шагов
повернуться в направлении \(135\)
идти \(20\) шагов
повернуться в направлении \(180\)
идти \(120\) шагов
повернуться в направлении \(90\)
идти \(2\) шагов
Включим этот элемент в цикл с условием «Повторять, пока не».
В качестве условия, останавливающего цикл, выберем из группы сенсоров (голубые блоки) «Касается цвета?». Теперь на сцене нужно провести линию, коснувшись которой исполнитель, а у нас это снова будет стрелочка \(arrow1-a\) со смещённым в «носик» центром вращения, остановится.
Определить цвет линии, останавливающей цикл, можно при редактировании сцены и этот же цвет указать в условии. Для примера это синий цвет.
Пример можно посмотреть в файле: «цикл с условием.sb3».
Цикл с постусловием
А теперь ещё раз реализуем бесконечный цикл и посмотрим, можно ли им управлять, если это нужно по условию задачи.
Пример. По саванне (Savanna) важно шествует лев (lion-a, lion-b, lion-c). Когда лев доходит до края картинки, он поворачивается и идёт в противоположном направлении. Это бесконечное движение. Но стоит нам навести на льва указатель мыши, как лев останавливается.

Рис. \(2\). Код для льва
В некоторых языках программирования есть такой вид цикла — цикл с постусловием. То есть условие проверяется каждый раз после того, как выполнятся команды, включённые в цикл (тело цикла).
Важной особенностью будет то, что цикл с постусловием выполняет команды тела цикла обязательно до того, как условие проверится. Попробуй установить указатель мыши на льва и запустить код нажатием на клавишу пробела. Лев выполнит смену костюмов и пройдёт указанное число шагов.
Пример можно посмотреть в файле: «лев_бесконечный.sb3».
Если же в проекте с рисованием забора установить стрелочку на синюю линию и запустить выполнение кода — ни одной дощечки забора нарисовано не будет.
Эти особенности при использовании циклов позволяют эффективно решать разные задачи.
Источники:
Рис. 1. Код для квадрата. © ЯКласс.
Рис. 2. Код для льва. © ЯКласс.
Рис. 2. Код для льва. © ЯКласс.