← Все вопросы
Робот КуМир: цикл закрашивает бесконечно, не останавливается — что не так?
6
Написал цикл, чтобы Робот шёл и красил, а он крутится бесконечно и КуМир ругается. Вот:
нц пока справа свободно
закрасить
кц
Что я делаю не так, почему он не выходит из цикла?
1 ответ
11
✓ Принятый ответ — помог автору
Проблема в том, что внутри цикла Робот не двигается, поэтому обстановка вокруг него никогда не меняется. Условие справа свободно как было истинным, так и остаётся истинным вечно — отсюда бесконечный цикл.
Чтобы цикл когда-нибудь закончился, тело должно менять то, что проверяется в условии. Раз проверяем «справа свободно» — значит, надо идти вправо:
нц пока справа свободно
закрасить
вправо
кц
Теперь Робот с каждым шагом приближается к стене справа, и рано или поздно справа свободно станет ложным — цикл остановится.
Общее правило: в любом цикле «пока» внутри должно происходить что-то, что приближает условие к ложному. Иначе зависнет.
Ваш ответ
Войдите, чтобы ответить на вопрос.