← Все вопросы

Робот КуМир: цикл закрашивает бесконечно, не останавливается — что не так?

Задан 19 месяцев назад1.4к просмотров1 ответ
6

Написал цикл, чтобы Робот шёл и красил, а он крутится бесконечно и КуМир ругается. Вот:

нц пока справа свободно
  закрасить
кц

Что я делаю не так, почему он не выходит из цикла?

1 ответ

11
✓ Принятый ответ — помог автору

Проблема в том, что внутри цикла Робот не двигается, поэтому обстановка вокруг него никогда не меняется. Условие справа свободно как было истинным, так и остаётся истинным вечно — отсюда бесконечный цикл.

Чтобы цикл когда-нибудь закончился, тело должно менять то, что проверяется в условии. Раз проверяем «справа свободно» — значит, надо идти вправо:

нц пока справа свободно
  закрасить
  вправо
кц

Теперь Робот с каждым шагом приближается к стене справа, и рано или поздно справа свободно станет ложным — цикл остановится.

Общее правило: в любом цикле «пока» внутри должно происходить что-то, что приближает условие к ложному. Иначе зависнет.

Ваш ответ

Войдите, чтобы ответить на вопрос.