← Все вопросы

Робот КуМир: команда «вправо» даёт отказ и программа падает — почему?

Задан 27 месяцев назад1.1к просмотров2 ответа
6

Запускаю программу для Робота, а КуМир пишет что-то про «отказ» и останавливается на команде вправо. Никакой опечатки вроде нет, команда написана правильно. Из-за чего Робот отказывается выполнять движение?

2 ответа

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

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

Лечится не правкой синтаксиса, а защитой движения проверкой обстановки. Вместо «слепого» хода:

вправо

пиши движение только когда путь свободен:

нц пока справа свободно
  вправо
кц

или разово:

если справа свободно
  то
    вправо
все

Общее правило для всех заданий 15.1: Робот никогда не должен «вслепую» шагать туда, где может быть стена. Любое движение либо внутри цикла пока ... свободно, либо под проверкой если ... свободно. Тогда отказов не будет.

3

Ещё одна причина того же отказа — Робот стартует не в той клетке, которую ты ожидал (поле в задании могло отличаться от твоего тестового). Поэтому решение всегда привязывают к обстановке (пока сверху стена, пока справа свободно), а не к конкретным координатам — тогда оно не зависит от стартовой клетки.

Ваш ответ

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