Бесконечный цикл
вечный цикл
Это понятие впервые встречается на программе «Электроника, программирование и инженерная практика» — примерно 13-14 лет (7-8 класс).
Повторение без выхода: программа снова и снова выполняет одни и те же шаги и не может остановиться сама.
Заезженная пластинка: игла всё время соскакивает к началу песни, и песня не кончается, пока не поднимешь иглу рукой.
Сыграть в робота: дать другу инструкцию «шаг вперёд, шаг назад, начни сначала» и объяснить, почему он сам никогда не остановится.
Цикл, из которого выполнение никогда не выходит: условие остановки не наступает или его забыли написать. Программа при этом не ломается — она занята бесконечным повторением, и со стороны кажется, что устройство зависло. Бывает и намеренным: главный цикл игры или прошивки крутится, пока устройство включено.
Найти ошибку в скетче Arduino: while (x < 10) без изменения x внутри — программа замирает; исправить и показать в том же скетче намеренный бесконечный цикл — loop().
Цикл, условие продолжения которого никогда не становится ложным. Незапланированный — классическая ошибка: счётчик не меняется, знак сравнения перепутан, условие недостижимо — while (i != 10) при шаге i += 3 не завершится. Программа не падает, а впустую занимает процессор. Намеренный — норма: loop() в Arduino, игровой цикл, сервер в ожидании запросов. В микроконтроллерах на случай зависаний ставят сторожевой таймер (watchdog): прошивка вовремя не «отметилась» — перезагрузка.
Написать два цикла while: намеренно бесконечный «маячок» и случайно бесконечный из-за неизменяемого счётчика; починить второй двумя способами — правкой счётчика и через break.
Частое заблуждение
«Зациклившаяся программа сломалась и сейчас выдаст ошибку». Нет: она исправно выполняет команды — просто одни и те же; со стороны это выглядит как зависание.