Знакомимся с Роботом
Исполнитель Робот существует в на прямоугольном поле, разбитом на клетки,
между которыми могут стоять стены и умещается целиком в одной клетке.
Робот может передвигаться по полю, закрашивать клетки, измерять
температуру и радиацию. Робот не может проходить сквозь стены, но может
проверять, есть ли рядом с ним стена.
Система команд исполнителя «Робот» включает:
- 5 команд, вызывающих действия Робота (влево, вправо, вверх, вниз,
закрасить)
- 10 команд проверки условий:
- 8 команд вида [слева/справа/снизу/сверху] [стена/свободно]
- 2 команды вида клетка [закрашена/чистая]
- 2 команды измерения (температура, радиация)
Команды-действий
Команда |
Описание |
влево |
Перемещает робота на одну клетку влево. Если слева стена, выдает
отказ.
|
вправо |
Перемещает робота на одну клетку вправо. Если справа стена, выдает
отказ.
|
вверх |
Перемещает робота на одну клетку вверх. Если сверху стена, выдает
отказ. |
вниз |
Перемещает робота на одну клетку вниз. Если снизу стена, выдает
отказ. |
закрасить |
Делает клетку, в которой находится робот, закрашенной. |
Команды-проверки
Команда |
Описание |
лог слева свободно |
Возвращает да, если робот может перейти влево, иначе — нет. |
лог справа свободно |
Возвращает да, если робот может перейти вправо, иначе —нет. |
лог сверху свободно |
Возвращает да, если робот может перейти вверх, иначе — нет. |
лог снизу свободно |
Возвращает да, если робот может перейти вниз, иначе — нет. |
лог слева стена |
Возвращает да, если слева от робота находится стена, иначе— нет. |
лог справа стена |
Возвращает да, если справа от робота находится стена, иначе— нет. |
лог сверху стена |
Возвращает да, если сверху от робота находится стена, иначе— нет. |
лог снизу стена |
Возвращает да, если снизу от робота находится стена, иначе— нет. |
лог клетка закрашена |
Возвращает да, если клетка закрашена, и нет, если клетка
незакрашена. |
лог клетка чистая |
Возвращает нет, если клетка закрашена, и да, если клетка
незакрашена. |
Команды-измерения
Команда |
Описание |
вещ радиация |
Возвращает значение радиации в клетке, где находится робот. |
вещ температура |
Возвращает значение температуры в клетке, где находится робот.
|
Пусть требуется перевести из клетки слева от стены в клетку справа от
стены:
Стартовая
обстановка |
После выполнения
алгоритма |
|
|
Алгоритм может выглядеть так:
использовать Робот
алг пример 1
нач
. вниз
. вправо
. вверх
кон
Если же попытать провести Робота через стену, то возникнет отказ. Робот
врежется в стену и больше не сможет выполнять команды дальше.
Ошибка! Будет отказ!
использовать Робот
алг пример 2
нач
. вправо
кон |
|
Напишем алгоритм прохождения роботом лабиринта из точки А в Б:
использовать Робот
алг из А в Б
нач
. вправо
. вверх; вверх;
вправо; вниз;
вниз; вправо
. вверх; вверх;
вправо; вниз;
вниз; вправо
. вверх; вверх; вправо;
вниз; вниз;
вправо
кон
Команды прохождения каждого участка можно сгруппировать в одну строку —
это сокращает запись алгоритма и делает его более понятным. Для того чтобы
записать команды в одну строку их нужно разделить точкой с запятой.
Если вспомнить цикл N раз, то можно записать алгоритм еще компактнее:
использовать Робот
алг из А в Б
нач
. вправо
. нц 3 раз
. . вверх; вверх;
вправо; вниз;
вниз; вправо
. кц
кон
Задание 1.
Имеется поле 4 на 5. Робот находится в левой верхней точке. Необходимо
закрасить все поле и вернуться в исходное положение. Решите эту задачу без
использования и с использованием вспомогательных алгоритмов.
Задание 2.
Составить алгоритм закраски всех клеток вокруг прямоугольной стены 3 на 7
клеток.
|