Исполнитель Робот: поле и команды движения

Главный герой ОГЭ выходит на сцену: знакомимся с полем Робота и его базовыми командами.

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

Поле Робота

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

Если Робот попытается шагнуть в стену, программа аварийно завершится с ошибкой «Робот разбился». Поэтому ходить нужно аккуратно, заранее проверяя, нет ли стены.

Подключение исполнителя

Чтобы Робот стал доступен, программа начинается со строки использовать Робот:

использовать Робот
алг
нач
  вправо
  вправо
  закрасить
кон

Эта программа сдвигает Робота на две клетки вправо и закрашивает третью клетку.

Пять команд-действий

КомандаЧто делает
вверхшаг на одну клетку вверх
внизшаг на одну клетку вниз
влевошаг на одну клетку влево
вправошаг на одну клетку вправо
закраситьзакрашивает текущую клетку

Каждая команда движения перемещает Робота ровно на одну клетку. Нет команды «вправо 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 из четырёх закрашенных клеток. Подсказка: закрасить → вправо → закрасить → вниз → закрасить → влево → закрасить.

Частые ошибки

  • Забыть строку использовать Робот — тогда команды Робота неизвестны.
  • Шагнуть в стену — «Робот разбился». Перед движением полезно проверять стену (следующие уроки).
  • Думать, что вправо двигает на несколько клеток. Только на одну.
  • Закрасить клетку, но забыть в неё прийти (или наоборот, прийти и не закрасить).

Итог

  • Робот живёт на клетчатом поле со стенами; врезаться в стену нельзя.
  • Программа начинается с использовать Робот.
  • Пять команд-действий: вверх, вниз, влево, вправо, закрасить.
  • Каждое движение — ровно на одну клетку.
Проверьте себя
1. Какой строкой начинается программа для исполнителя Робот?
Aподключить Робот
Bиспользовать Робот
CРобот: вкл
Dимпорт Робот
2. На сколько клеток перемещает Робота команда «вправо»?
AНа одну клетку
BНа две клетки
CДо ближайшей стены
DНа столько, сколько указано в скобках
3. Что произойдёт, если Робот попытается шагнуть в стену?
AОн остановится перед стеной
BОн пройдёт сквозь стену
CПрограмма аварийно завершится («Робот разбился»)
DСтена исчезнет
Поддержать проект