Бесконечный цикл
В программировании есть класс задач, у которых нет естественного конца: сервер, который ждёт запросы, программа мониторинга, робот на автопилоте. Такие программы должны работать вечно — пока их не остановят.
Для этого существует конструкция while true.
Базовая структура
Условие true всегда истинно, поэтому цикл никогда не завершится сам по себе. Программу можно остановить только:
- Нажав
Ctrl + Tвручную - Через
breakвнутри цикла - Через
returnилиos.shutdown()/os.reboot()
Пример: мониторинг состояния
Выход через break
Когда наступает определённое условие — выходим из цикла через break:
Обязательная пауза
while true без паузы вызовет ошибку Too long without yielding — CraftOS прерывает программы которые слишком долго не отдают управление системе:
Достаточно минимальной паузы — sleep(0.05) это 50 миллисекунд, почти незаметно.
Демон — программа на постоянной службе
Самый распространённый паттерн для while true — программа-демон, которая слушает команды или события:
🚀 Задания
Задание 1
Напиши программу-часы: в бесконечном цикле очищай экран и выводи текущее время через textutils.formatTime(os.time(), true). Обновляй каждую секунду.
Задание 2
Напиши интерактивный калькулятор: в бесконечном цикле читай строку через read(). Если введено "exit" — выходи. Иначе — попробуй превратить в число и вывести его квадрат.
Задание 3
Напиши систему повторных попыток: в бесконечном цикле пытайся выполнить gps.locate(). Если вернул координаты — вывести их и выйти. Если нет — подождать секунду и попробовать снова. Максимум 10 попыток.
Задание 4 Объясни разницу между двумя программами. Что будет при запуске каждой?
Задание 5
Напиши охранного робота: в бесконечном цикле проверяй блок спереди через turtle.detect(). Если блок появился — выведи "Обнаружен объект!" и подай редстоун-сигнал на 2 секунды. Убери сигнал. Продолжай наблюдение.