Циклические алгоритмы - Урок информатики для 8 класса
📚 Информатика 8 класс

§ 3.6. Циклы в алгоритмах: когда действия повторяются

Привет! Сейчас мы с тобой разберём циклические алгоритмы — это тема, которая может показаться сложной, но на самом деле она крутая и очень полезная. Представь, что ты учишь компьютер делать что-то много-много раз, не повторяя одну и ту же команду сто раз. Звучит удобно, правда?

Циклы помогают компьютеру делать повторяющиеся действия эффективно

Что такое повторение и зачем оно нужно?

Сейчас мы узнаем, как заставить компьютер повторять действия, не прописывая их десятки раз вручную.

💡 Определение

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

🏋️ Пример из жизни

Давай представим: ты качаешь пресс. Ты делаешь одно и то же движение 20 раз подряд. Вот это и есть цикл! Только в программировании компьютер будет «качать пресс» — то есть выполнять команды столько раз, сколько ты скажешь.

Какие бывают циклы?

Существует четыре основных типа циклов. Каждый из них применяется в зависимости от задачи:

Тип 1

Цикл-ПОКА

Цикл с заданным условием продолжения работы — выполняется, пока выполняется какое-то условие (например, «пока есть деньги на счёте»).

Тип 2

Цикл-ДО

Цикл с заданным условием окончания работы — выполняется до тех пор, пока условие не станет истинным (например, «пока не наберёшь 100 баллов в игре»).

Тип 3

Цикл с числом повторений

Цикл с заданным числом повторений — выполняется строго определённое количество раз (например, «повтори 10 раз»).

Тип 4

Цикл-ДЛЯ

Цикл с переменной — параметр цикла меняется с каждым шагом (например, считаем от 1 до 100).

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

Это цикл, который работает ПОКА выполняется какое-то условие. Его ещё называют цикл-ПОКА или цикл с предусловием.

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

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

⚙️ Как это работает

Логика простая: сначала проверяется условие. Если оно истинно («Да»), выполняется тело цикла, и снова идёт проверка. Если условие ложно («Нет»), цикл завершается.

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

🔴 Важно!

Возможны случаи, когда тело цикла не будет выполнено ни разу! Если с самого начала условие ложно, цикл просто пропускается.

📝 Пример 1: Сортировка кирпичей

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

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

Цикл будет выполняться, пока есть кирпичи. Как только они закончатся, алгоритм завершится.

🤖 Пример 2: Робот закрашивает коридор

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

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

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

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

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

➗ Пример 3: Деление с остатком

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

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

Деление через повторяющееся вычитание

Деление через повторяющееся вычитание

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

Это цикл, который выполняется хотя бы один раз, а потом проверяет условие. Его называют цикл-ДО или цикл с постусловием.

Цикл-ДО проверяет условие после каждого повторения

Цикл-ДО проверяет условие после каждого повторения

⚙️ Как это работает

Логика: сначала выполняется тело цикла, потом проверяется условие. Если условие НЕ выполняется («Нет»), снова выполняется тело цикла. Если условие выполняется («Да»), выполнение цикла заканчивается.

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

🔴 Важно!

В любом случае тело цикла будет выполнено хотя бы один раз.

📝 Пример 4: Четверостишие наизусть

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

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

🔢 Пример 5: Вычисление переменной b

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

Таблица трассировки показывает пошаговое выполнение для a = 4 и условия a = 128:

Трассировка алгоритма вычисления степени

Трассировка алгоритма вычисления степени

Ответ: b = 255

3.6.3. Цикл с заданным числом повторений

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

⚙️ Синтаксис

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

🏃 Пример 6: Спортсмен и дистанция

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

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

Постепенное увеличение дистанции до целевого значения

Постепенное увеличение дистанции до целевого значения

🤖 Пример 7: Робот закрашивает 5 клеток

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

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

✏️ Пример 8: Исполнитель Чертёжник

Исполнитель Чертёжник предназначен для построения рисунков на координатной плоскости. Исходное положение исполнителя — начало координат.

Система команд Чертёжника:

  • поднять перо — Чертёжник поднимает перо
  • опустить перо — Чертёжник опускает перо
  • сместиться в точку (a, b) — перемещается в точку с координатами (a, b)
  • сместиться на вектор (a, b) — перемещается в точку с координатами (x + a, y + b)

Пусть Чертёжник находится в точке с координатами (x0, y0). Выясним, в какой точке он окажется после выполнения программы:

нц k раз
  сместиться на вектор (a, b)
кц

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

x := x0 + k * a
y := y0 + k * b

Таким образом, Чертёжник, находившийся в точке с координатами (x0, y0), после выполнения программы окажется в точке с координатами (x0 + k * a, y0 + k * b).

🐢 Пример 9: Квадрат для Черепахи

Алгоритм изображения квадрата со стороной a для исполнителя Черепаха имеет следующий вид:

алг квадрат (цел a)
нач
  нц 4 раз
    вперед (a); вправо (90)
  кц
кон

Подумай: Как модифицировать представленный выше алгоритм в алгоритм рисования универсального правильного многоугольника (правильного треугольника, пятиугольника, шестиугольника и т. д.)? Проверьте свои предположения в среде КуМир.

3.6.4. Цикл с переменной (Цикл-ДЛЯ)

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

Цикл с переменной: шаг за шагом от начала до конца

Цикл с переменной: шаг за шагом от начала до конца

⚙️ Синтаксис

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

📋 Как это работает

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

Выполняется цикл-ДЛЯ следующим образом:

  1. Параметру цикла присваивается начальное значение.
  2. Параметр цикла сравнивается с конечным значением; если он не превышает конечного значения, то выполняется тело цикла, увеличивается значение параметра цикла на величину шага и снова осуществляется проверка параметра цикла; если же параметр цикла превышает конечное значение, то выполнение цикла заканчивается.

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

⛵ Пример 10: Переправа через реку

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

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

🔢 Пример 11: Возведение в степень

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

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

a1 = a, an = a·a·...·a (n сомножителей), a ∈ R, n ∈ N, n ⩾ 2

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

an = 1·a·a·...·a (n умножений)

Алгоритм возведения в степень

Блок-схема и таблица трассировки для a = 4 и n = 3

🤔 Вопрос для размышления

При каких условиях работа цикла с переменной будет аналогична работе цикла с заданным числом повторений?

🎯 Самое главное

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

🤔 Проверь себя

Проверьте, как хорошо вы усвоили материал!

1. Вспомни реальную ситуацию из жизни, где используется повторение

Может быть, это твоя утренняя рутина? Или тренировка? Или процесс загрузки фотки в Инстаграм (повтор, пока не загрузится)? Придумай свой пример!

2. Представь, что ты объясняешь другу, чем цикл-ПОКА отличается от цикла-ДО

Как бы ты это сказал простыми словами? В чём главная разница?

3. Почему цикл с заданным числом повторений удобен для повторяющихся задач?

Придумай три примера из своей жизни, где ты делаешь что-то строго определённое количество раз.

4. Как ты думаешь, когда лучше использовать цикл с переменной, а когда — цикл-ПОКА?

Обсуди это с одноклассниками. В каких задачах каждый тип цикла будет наиболее эффективным?

5. Попробуй составить алгоритм для Робота или Чертёжника в среде КуМир

Например, пусть Робот нарисует квадрат 5x5 или Чертёжник построит лесенку из линий. Какой тип цикла ты выберешь?

6. Приведите пример циклического алгоритма из повседневной жизни

Подумай о действиях, которые ты повторяешь каждый день или в определённых ситуациях.

7. Приведите пример циклического алгоритма из литературного произведения

Вспомни сказки, где герои повторяют одни и те же действия (например, «Колобок», «Репка»).

8. Приведите пример циклического алгоритма из любой предметной области, изучаемой в школе

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

9. Какие ещё операторы цикла, кроме изученных, существуют в языках программирования?

Попробуй найти информацию о других конструкциях циклов в популярных языках программирования.

10. В чём разница между коротким и длинным алгоритмом?

Краткость алгоритма и скорость его выполнения совпадают?

✏️ Задания для практики

Попробуйте применить полученные знания на практике!

📝 Задание 1

Составьте в среде КуМир алгоритм, под управлением которого Робот обойдёт прямоугольную область, обнесённую стеной, по периметру и закрасит угловые клетки. Размеры области неизвестны.

🐟 Задание 2

Запас рыбы в пруду оценён в A тонн. Ежегодный прирост рыбы составляет 15%. Ежегодный план отлова — B тонн. Наименьший запас рыбы составляет C тонн. (Запас ниже C тонн уже не восстанавливается.) Составьте блок-схему алгоритма для подсчёта количества лет, в течение которых можно выдерживать заданный план.

🔢 Задание 3

Дана последовательность 5, 9, 13, 17, ... . Составьте блок-схему алгоритма для определения числа слагаемых (первых членов последовательности), сумма которых равна 324.

💰 Задание 4

Составьте алгоритм для определения количества цифр в записи произвольного натурального числа.

🏦 Задание 5

Сумма 10 000 рублей положена в банк, при этом прирост составляет 5% годовых. Составьте алгоритм, определяющий, через какой промежуток времени первоначальная сумма увеличится в два раза.

🧬 Задание 6

Одноклеточная амёба каждые три часа делится на 2 клетки. Составьте алгоритм вычисления времени, через которое будет X амёб.

Теперь ты знаешь, как работают циклы!

Теперь ты знаешь, как работают циклы!

🚀 Отличная работа! Теперь ты знаешь, как работают циклы, и можешь заставить компьютер делать что-то много раз, не повторяясь в коде. Практикуйся в среде КуМир и создавай свои алгоритмы!

Информатика — твой билет в цифровое будущее