Задание 15.1: алгоритм для исполнителя Робот (КуМир)
Разбираем первый вариант задания 15 — алгоритм для Робота в КуМире, который не требует знания «настоящего» программирования.
КуМир — учебная среда с исполнителем «Робот», который ходит по клеточному полю, обходит стены и закрашивает клетки по командам алгоритма.
Что проверяет задание 15.1
Дают поле с Роботом и стенами и просят написать алгоритм, который, например, доведёт Робота до стены и закрасит все клетки по пути — причём алгоритм должен работать для любого расположения стен, подходящего под условие. Это и есть главная сложность: нельзя «зашить» конкретные шаги, нужны циклы с проверкой обстановки.
Система команд Робота
| Команда | Действие |
вправо, влево, вверх, вниз | сдвинуться на клетку (если нет стены) |
закрасить | закрасить текущую клетку |
Робот «видит» обстановку через условия:
справа стена/слева стена/сверху стена/снизу стена— и противоположныесправа свободнои т.д.;клетка закрашена/клетка чистая.
Конструкции алгоритмического языка
Алгоритм пишут на школьном алгоязыке с русскими словами. Главные конструкции:
нц пока <условие>
<команды>
кц
если <условие>
то <команды>
иначе <команды>
все
нц пока ... кц — это цикл «пока»: команды повторяются, пока условие истинно. Именно он позволяет идти «до стены», не зная заранее, сколько шагов.
Разбор примера
Робот стоит у левого края. Нужно двигаться вправо до стены, закрашивая каждую клетку, включая стартовую.
Логика: закрасить текущую клетку; пока справа нет стены — шагнуть вправо и закрасить. Алгоритм:
закрасить
нц пока справа свободно
вправо
закрасить
кц
Разберём, почему это работает для любой длины коридора. Сначала красим клетку, где стоим. Затем цикл: пока справа свободно (стены нет) — делаем шаг вправо и красим новую клетку. Как только справа окажется стена, условие станет ложным, цикл закончится — и Робот остановится ровно у стены, закрасив весь путь. Конкретное число клеток нам знать не нужно: цикл сам подстроится.
Усложнение: обойти стену
Часто на пути встречается выступ стены, который надо обойти. Тогда внутри цикла добавляют проверку: если впереди стена, то обойти её (вверх — вперёд — вниз). Принцип тот же: каждое решение принимается по текущей обстановке, а не по заранее известной карте.
нц пока справа свободно или сверху свободно
если справа стена
то
вверх
вправо
вниз
иначе
вправо
все
закрасить
кц
Это схема идеи (точный алгоритм зависит от формы стен в задании). Главное — вы реагируете на стену проверкой, а не «прошиваете» маршрут.
Как проверить алгоритм
В КуМире есть кнопка пошагового выполнения. Запускайте алгоритм на разных полях (короткий коридор, длинный, со стеной) — он должен отработать на всех. Если хоть на одном поле Робот «упирается» или красит лишнее, алгоритм не универсален.
Типичные ошибки
- Пишут фиксированное число шагов (
вправо5 раз) — на другом поле не сработает. - Забывают закрасить стартовую или последнюю клетку.
- Путают «стена» и «свободно» в условии цикла — Робот идёт не туда.
- Зацикливаются: условие цикла никогда не становится ложным.
Итог
- 15.1 — алгоритм для Робота в КуМире, без «настоящего» программирования.
- Команды: движение, закрасить; условия: «стена»/«свободно».
- Универсальность даёт цикл
нц пока ... кцс проверкой обстановки. - Проверяйте алгоритм на разных полях — он обязан работать на всех.