Циклы — одна из основных конструкций в программировании, на базе которой работают сотни алгоритмов. Они есть почти в каждой программе — от самых простых учебных проектов до сложных продуктов на сотни миллионов строк кода. Сегодня разбираем в картинках, что такое цикл, зачем он нужен и что с ним можно делать.
Что такое цикл
Цикл в программировании — это повторение одних и тех же действий какое-то количество раз. Чтобы было проще разобраться, сразу пример из жизни.
Допустим, мы днём решили помыть посуду, которая накопилась у раковины. Если разбить этот процесс на шаги и немного упростить, всё будет выглядеть примерно так:
- Включаем воду.
- Намыливаем губку для мытья.
- Берём первый прибор (посуду) из немытого.
- Намыливаем и чистим.
- Смываем воду.
- Ставим прибор на сушилку.
- Берём второй прибор из немытого.
- Намыливаем и чистим.
- Смываем воду.
- Ставим на сушилку.
- Берём третий прибор…
Смотрите, что тут происходит: мы сначала сделали подготовительные действия, а потом раз за разом делаем одно и то же — меняется только посуда, которую мы моем. Если перевести это на язык компьютера, то будет как-то так:
- Настраиваем всё, что нужно для мойки посуды.
- Складываем всю грязную посуду слева от раковины.
- Если слева от раковины есть ещё немытая посуда — берём оттуда одну вещь, моем и ставим сушиться, потом возвращаемся к п. 3.
- Если слева от раковины больше нет немытой посуды — вытираем руки и выключаем воду.
Ключевой момент тут находится в третьем пункте, когда в конце мы добавляем, что снова возвращаемся к началу этой части. Именно здесь и рождается цикл: пока есть посуда, моем её по очереди, прибор за прибором.
Что нужно для организации цикла
Чтобы сделать цикл, нужны два компонента: условие и тело цикла.
Условие — это то, что проверяется до начала цикла, а потом постоянно проверяется во время работы цикла. Есть несколько вариантов организации цикла, но в привычном виде правило выглядит так: пока условие выполняется — выполняем, что написано в цикле, и возвращаемся проверять условие заново. И так делаем до тех пор, пока условие не станет ложным. Мы уже разбирали условие отдельно — почитайте, если кажется, что всё сложно.
Главное правило с условием: то, что происходит внутри цикла, должно как-то влиять в итоге на условие, чтобы цикл когда-нибудь закончился. Например, в нашем примере с посудой условием цикла является вопрос: «А есть ли ещё немытая посуда в левой части?» Внутри цикла мы постепенно уменьшаем количество этой посуды, в итоге ответ на изначальный вопрос станет отрицательным, и цикл перестанет выполняться.
Тело цикла — то, что выполняется внутри цикла. Именно ради него и создаётся цикл, чтобы выполнить нужную часть кода много раз подряд. Тело цикла — это обычные команды в языке программирования. Внутри цикла нет ограничений на количество команд, которые будут выполняться раз за разом: там может быть одна строка кода, а может быть миллион. И во время работы цикла весь этот миллион строк каждый раз будет выполняться заново.
Если что — циклы ещё можно сделать без специальных команд цикла, но это уже развлечение для тех, кто шарит.
Какие бывают циклы
Чаще всего в большинстве языков программирования можно встретить три вида циклов:
- Цикл с известным числом повторений.
- Цикл с предусловием (сначала условие, потом тело цикла).
- Цикл с постусловием (сначала тело цикла, потом условие).
Программисты выбирают конкретный вид цикла в зависимости от задачи, которую нужно решить. Но вообще при желании можно взять любой из циклов и превратить его в другой — этим займёмся в следующий раз.
Где применяются циклы
Сила циклов — в повторении одного и того же столько раз, сколько это нужно. Например, нам нужно обработать файлы с входящими заявками на конкурс. Можно это делать вручную, а можно один раз объяснить компьютеру в коде, что нужно сделать с письмом, а потом обернуть всё это в цикл. В итоге получится, что нам неважно, сколько у нас будет неразобранных писем — программа справится с любым количеством. Но самое главное — мы пишем логику обработки только один раз, а дальше она повторяется и применяется к другим письмам.
Вообще, в программировании циклы используются во многих алгоритмах:
- сортировки,
- поиска,
- хеширования,
- шифрования,
- обработки строк и так далее.
👉 Если нужно что-то повторить какое-то количество раз — используют циклы.
А есть бесконечные циклы?
Да. Самый простой способ сделать бесконечный цикл — написать такое условие, которое всегда выполняется и не меняется во время работы цикла. В итоге мы постоянно будем выполнять одно и то же и проверять одно и то же, потому что условие для выхода из цикла никогда не наступит.
Иногда такие циклы делают специально, например чтобы движок простой игры постоянно отрисовывал кадры анимации и отрабатывал нажатия на клавиши.
Можно ли принудительно выйти из цикла?
Можно — для этого во многих языках программирования предусмотрена специальная команда, которая останавливает выполнение цикла и идёт к следующей команде в программе. Такое бывает полезно, если мы в условии не можем предусмотреть, когда цикл должен закончиться, но можем заранее понять ситуации, когда нужно остановиться. В этом случае мы добавляем проверку этого условия, и если оно выполняется — выходим из цикла.
Что дальше
В следующих частях разберём три классических вида цикла: с известным числом повторений, цикл с предусловием и цикл с постусловием. С картинками, примерами кода и объяснениями. Подпишитесь, чтобы не пропустить продолжение.