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

В зависимости от способа организации повторений различают три типа циклов:

1) цикл с заданным условием продолжения работы;
2) цикл с заданным условием окончания работы;
3) цикл с заданным числом повторений.

Цикл с заданным условием продолжения работы (цикл-ПОКА, цикл с предусловием)

Логика работы этой конструкции описывается схемой, показанной на рис. 2.10.

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

На алгоритмическом языке эта конструкция записывается так:

нц пока <условие>
    <тело цикла (последовательность действий)>
кц

Выполняется цикл-ПОКА следующим образом: 1) проверяется условие (вычисляется значение логического выражения); 2) если условие удовлетворяется (Да), то выполняется тело цикла и снова осуществляется переход к проверке условия; если же условие не удовлетворяется, то выполнение цикла заканчивается. Возможны случаи, когда тело цикла не будет выполнено ни разу.

Пример 1

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

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

Пример 2

Правее Робота (клетка со звёздочкой) расположен коридор неизвестной длины. Необходимо, чтобы Робот закрасил все клетки этого коридора.

Пока будет выполняться условие справа свободно, Роботу следует выполнять команды:

вправо
закрась

Соответствующий алгоритм для Робота будет иметь вид:

нц пока справа свободно
  вправо
  закрась
кц

Пример

Требуется, не пользуясь операцией деления, получить частное q и остаток r от деления натурального числа х на натуральное число у.

Представим операцию деления как последовательные вычитания делителя из делимого. Причём вычитать будем до тех пор, пока результат вычитания не станет меньше вычитаемого (делителя). В этом случае количество вычитаний будет равно частному от деления q, а последняя разность — остатку от деления r.

Исполним этот алгоритм для х = 23 и у = 5.

Цикл с заданным условием окончания работы (цикл-ДО, цикл с постусловием)

Логика работы этой конструкции описывается схемой, показанной на рис. 2.11.

На алгоритмическом языке эта конструкция записывается так:

нц
  <тело_цикла (последовательность действий)>
кц при <условие>

Выполняется цикл-ДО следующим образом: 1) выполняется тело цикла; 2) проверяется условие (вычисляется значение логического выражения); если условие не удовлетворяется («Нет»), то снова выполняется тело цикла и осуществляется переход к проверке условия; если же условие удовлетворяется, то выполнение цикла заканчивается. В любом случае тело цикла будет выполнено хотя бы один раз.

Пример 4

Алгоритм по выучиванию наизусть четверостишия.

алг четверостишие
нач
  нц
    прочитать четверостишие по книге 1 раз
    рассказать четверостишие
  кц при не сделал ошибку кон

Пример 5

Вычислим значение переменной b согласно следующему алгоритму:

Составим таблицу значений переменных, задействованных в алгоритме:

Ответ: b = 255.

Пример 6 

Спортсмен приступает к тренировкам по следующему графику: в первый день он должен пробежать 10 км; каждый следующий день следует увеличивать дистанцию на 10% от нормы предыдущего дня. Как только дневная норма достигнет или превысит 25 км, необходимо прекратить её увеличение и далее пробегать ежедневно ровно 25 км. Начиная с какого дня спортсмен будет пробегать 25 км?

Пусть х — количество километров, которое спортсмен пробежит в некоторый i-й день. Тогда в следующий (i + 1)-й день он пробежит х + 0,1х километров (0,1х — это 10% от х).

Цикл с заданным числом повторений (цикл-ДЛЯ, цикл с параметром)

Логика работы этой конструкции описывается схемой, показанной на рис. 2.12.

На алгоритмическом языке эта конструкция записывается так:

нц для i от i1 до i2 шаг R
  <тело цикла (последовательность действий)>
кц

В цикле-ДЛЯ всегда есть параметр цикла — величина целого типа, изменяющаяся в ходе выполнения цикла от своего начального значения il до конечного значения i2 с шагом R.

Выполняется цикл-ДЛЯ следующим образом: 1) параметру цикла присваивается начальное значение; 2) параметр цикла сравнивается с конечным значением; если параметр цикла не превышает конечное значение, то выполняется тело цикла, увеличивается значение параметра цикла на шаг и снова осуществляется проверка параметра цикла; если же параметр цикла превышает конечное значение, то выполнение цикла заканчивается.

Если величина шага в цикле с параметром равна единице, то шаг не указывают. Мы ограничимся рассмотрением именно таких циклов.

В отличие от двух предыдущих конструкций (цикл-ПОКА, цикл-ДО) цикл-ДЛЯ имеет строго фиксированное число повторений, что позволяет избежать зацикливания, т. е. ситуации, когда тело цикла выполняется бесконечно.

Пример 7 

Алгоритм переправы через реку воинского отряда из пяти человек. Солдаты могут воспользоваться помощью двух мальчиков — хозяев небольшой лодки, в которой может переправиться или один солдат, или два мальчика.

алг переправа
нач
  нц для i от 1 до 5
    два мальчика переправляются на противоположный берег
    один мальчик высаживается на берег, другой плывёт обратно
    солдат переправляется через реку
    мальчик возвращается на исходную позицию
  кц
кон

Пример 8

Составим алгоритм вычисления степени с натуральным показателем n для любого вещественного числа а.

По определению:

При составлении алгоритма воспользуемся единой формулой, в которой число умножений равно показателю степени:

Исполним этот алгоритм для а = 4 и n = 3.

Пример 9

Для исполнителя Робот цикл с известным числом повторений реализуется с помощью следующей конструкции:

нц <число повторений> раз
  <тело цикла>
кц

Так, если правее Робота не встретится препятствий, то, выполнив приведённый ниже алгоритм, он переместится на пять клеток вправо и закрасит эти клетки:

алг
нач
  нц 5 раз
    вправо; закрасить
  кц
кон

Задание:

Приведите пример циклического алгоритма:

а) из повседневной жизни;
б) из литературного произведения;
в) из любой предметной области, изучаемой в школе.

Записать в тетрадь и отправить фото в VK

Практические задания будут на следующем уроке!