Исполнитель Робот: поле и команды движения
Главный герой ОГЭ выходит на сцену: знакомимся с полем Робота и его базовыми командами.
Робот — исполнитель КуМира, который живёт на клетчатом поле, ходит между стенами и умеет закрашивать клетки. Его задача — пройти по полю и закрасить нужные клетки.
Поле Робота
Робот находится на прямоугольном клетчатом поле. Между клетками могут стоять стены — Робот сквозь них пройти не может. По краям поля стоит сплошная стена, ограничивающая мир. Каждую клетку Робот может закрасить (она станет серой). Цель типичной задачи — закрасить определённые клетки, не врезавшись в стены.
Если Робот попытается шагнуть в стену, программа аварийно завершится с ошибкой «Робот разбился». Поэтому ходить нужно аккуратно, заранее проверяя, нет ли стены.
Подключение исполнителя
Чтобы Робот стал доступен, программа начинается со строки использовать Робот:
использовать Робот
алг
нач
вправо
вправо
закрасить
кон
Эта программа сдвигает Робота на две клетки вправо и закрашивает третью клетку.
Пять команд-действий
| Команда | Что делает |
вверх | шаг на одну клетку вверх |
вниз | шаг на одну клетку вниз |
влево | шаг на одну клетку влево |
вправо | шаг на одну клетку вправо |
закрасить | закрашивает текущую клетку |
Каждая команда движения перемещает Робота ровно на одну клетку. Нет команды «вправо 5» — чтобы пройти 5 клеток, нужно пять раз написать вправо или использовать цикл (об этом дальше).
Важно: «вверх» — это вверх по экрану
Команда вверх двигает Робота к верхнему краю поля, вниз — к нижнему. Это интуитивно, но новички иногда путают направления, особенно при поворотах в голове. Хороший приём — всегда смотреть на поле в среде, а не воображать.
Линейный алгоритм: рисуем букву «Г»
Пусть Робот стоит в левом верхнем углу свободной области. Закрасим вертикальную палочку из трёх клеток и горизонтальную из двух — получится буква «Г»:
использовать Робот
алг
нач
закрасить | верх палочки
вниз
закрасить
вниз
закрасить | низ вертикали
вверх
вверх | вернулись наверх
вправо
закрасить | перекладина
кон
Имитация Робота на Python
Чтобы прочувствовать движение, смоделируем поле списком списков и «пройдём» Робота программой. Поле 3×4: 0 — пустая клетка, 1 — закрашенная. Робот идёт вправо и красит клетки:
rows, cols = 3, 4
field = [[0] * cols for _ in range(rows)]
r, c = 0, 0 # старт: верхняя строка, левый столбец
def paint():
field[r][c] = 1
paint() # закрасить старт
for _ in range(2): # два шага вправо с закраской
c += 1
paint()
for row in field:
print("".join("#" if x else "." for x in row))
Вывод:
###. .... ....
Видно: Робот закрасил три клетки в верхней строке — именно их пометила программа. Так list-of-lists наглядно повторяет поле КуМира.
Попробуй сам
Напишите линейный алгоритм, который рисует Роботом квадрат 2×2 из четырёх закрашенных клеток. Подсказка: закрасить → вправо → закрасить → вниз → закрасить → влево → закрасить.
Частые ошибки
- Забыть строку
использовать Робот— тогда команды Робота неизвестны. - Шагнуть в стену — «Робот разбился». Перед движением полезно проверять стену (следующие уроки).
- Думать, что
вправодвигает на несколько клеток. Только на одну. - Закрасить клетку, но забыть в неё прийти (или наоборот, прийти и не закрасить).
Итог
- Робот живёт на клетчатом поле со стенами; врезаться в стену нельзя.
- Программа начинается с
использовать Робот. - Пять команд-действий:
вверх,вниз,влево,вправо,закрасить. - Каждое движение — ровно на одну клетку.