Циклы в программировании: что это, виды и как работают

Циклы в программировании: что это, виды и как работают Полезное

Цикл в программировании — конструкция, которая многократно выполняет блок кода. В статье разберём, что такое цикл, какие бывают виды, чем for в Python отличается от классического «цикла со счётчиком», как работают break и continue, и покажем типичные ошибки на коде — с фактическим результатом и исправлением.

Что такое цикл простыми словами

Цикл позволяет выполнить блок кода несколько раз: для каждого элемента последовательности, заданное число раз или пока выполняется условие. Тело цикла — повторяемый блок; одно повторение называют итерацией. Цикл может выполнить тело и ноль раз — например, while с изначально ложным условием или for по пустой коллекции.

Виды циклов

for — перебор элементов

В Python for перебирает элементы итерируемого объекта и заканчивается, когда элементы исчерпаны:

for participant in participants:
    print(participant)

range() создаёт числовую последовательность — это частный случай перебора, а не определение for:

for i in range(1, 6):
    print(i)   # 1, 2, 3, 4, 5

Управление переходом к следующему элементу спрятано в протоколе итерации — в Python его не видно как явный «шаг».

while — цикл с условием

n = 1
while n <= 5:
    print(n)
    n += 1

Три явных элемента — начальное состояние, условие продолжения и шаг — хорошо видны в while и в C-подобном for со счётчиком. Это модель цикла со счётчиком, а не свойство любого цикла: в Python for по коллекции такого явного шага нет.

do-while и его аналог в Pascal

В C, C++ и Java есть do … while: тело выполняется хотя бы раз, а условие проверяется в конце и означает продолжение. В Pascal близкую роль играет repeat … until, но условие у него задаёт момент выхода (цикл завершается, когда условие становится истинным) — это противоположная полярность. В Python отдельного do-while нет, его эмулируют через while с проверкой в конце.

Управление циклом: break и continue

break — немедленно выходит из цикла. continue — пропускает остаток тела и переходит к следующей итерации.

for x in range(1, 100):
    if x % 7 == 0:
        print(x)   # 7
        break

Пример continue: вывести только нечётные числа.

for x in range(1, 6):
    if x % 2 == 0:
        continue      # пропускаем чётные
    print(x)          # 1, 3, 5

Типичные ошибки — на коде

1. Бесконечный цикл из-за забытого шага.

n = 1
while n <= 5:
    print(n)   # печатает 1 бесконечно: n не меняется

Исправление: добавить n += 1 в тело. При этом бесконечный цикл не всегда ошибка: намеренный while True: с условием выхода (break, событие, ожидание ввода) — нормальная практика в обработчиках событий, сервисах и игровых циклах. Ошибка — цикл без предусмотренного способа остановки, который тратит ресурсы впустую.

2. Изменение коллекции во время перебора.

nums = [1, 2, 2, 3]
for x in nums:
    if x == 2:
        nums.remove(x)   # пропустит второй 2 из-за сдвига индексов

Безопасно — идти по копии (for x in nums[:]) или собирать новый список (nums = [x for x in nums if x != 2]).

3. Ошибка на единицу (off-by-one). Внимательно с границами: range(1, 6) даёт 1..5, не 1..6.

Где применяются циклы

Выводы

  • Цикл в программировании — конструкция, которая многократно выполняет блок кода: для каждого элемента последовательности, заданное число раз или пока выполняется условие; одно повторение называют итерацией.
  • Основные виды циклов: for — перебор элементов, while — проверка условия перед каждой итерацией, do-while (C, C++, Java) — тело выполняется хотя бы раз, а условие проверяется в конце; в Pascal близкую роль играет repeat-until, но его условие задаёт момент выхода.
  • В Python for перебирает элементы итерируемого объекта, а range() — лишь частный случай перебора чисел; явная модель «начальное состояние — условие — шаг» описывает цикл со счётчиком (while, C-подобный for), а не любой цикл.
  • Цикл может выполнить тело ноль раз — например, while с изначально ложным условием или for по пустой коллекции.
  • break немедленно выходит из цикла, а continue пропускает остаток тела и переходит к следующей итерации.
  • Типичные ошибки — бесконечный цикл из-за забытого шага, изменение коллекции во время перебора (безопасно идти по копии или собирать новый список) и ошибка на единицу в границах range(); при этом намеренный while True с условием выхода — штатная практика, ошибкой считается цикл без способа остановки.

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

FAQ

Что такое цикл простыми словами? Конструкция, которая многократно выполняет блок кода: по элементам последовательности, заданное число раз или пока верно условие.

Чем for в Python отличается от «цикла со счётчиком»? for перебирает элементы итерируемого объекта; range() — лишь частный случай с числами.

Всегда ли бесконечный цикл — ошибка? Нет: намеренный while True с условием выхода — штатная практика; ошибка — цикл без способа остановки.

Смежные темы в журнале: Введение в рекурсию, Основы разработки на Python.

OTUS Журнал
Скидка 5% 14-20 сентября на курсы (popup)