9.1. Роботы в жизни человека
Человек с древности мечтал об искусственном создании, которое могло бы выполнять его приказы. Сегодня мечта стала реальностью — в жизни людей появились роботы. Они способны выполнять практически любую работу, доступную человеку, а также делать многие вещи, которые людям выполнить сложно или невозможно. Роботы используются на производстве и в быту, могут работать в сфере услуг и развлечений. Есть роботы, похожие на человека, а есть совсем непохожие.
Робот — автоматическое устройство, которое действует по заранее составленной программе.
Робот получает информацию о внешнем мире от датчиков (аналогов органов чувств живых организмов) и предназначен для осуществления различных операций.
Мир роботов очень разнообразен. В быту современного человека используются автоматические стиральные и посудомоечные машины, роботы-пылесосы. С помощью роботов можно выращивать растения или управлять домом.
Робот может быть материальным или виртуальным. Виртуальный робот — специальная программа, выполняющая определенные действия.
Роботы являются исполнителями. Для исполнителей обычно определяют среду обитания и систему команд.
Общим для всех роботов является то, что человек может ими управлять. Робот получает команды от оператора и выполняет их по одной или действует автономно по предварительно составленной программе.
9.2. Среда обитания и система команд исполнителя Робот
В среде программирования PascalABC, кроме исполнителя Чертежник, можно выбрать исполнителя Робот.
Средой обитания исполнителя Робот является прямоугольное клетчатое поле (пример 9.1). Размеры этого поля, как и для исполнителя Чертежник, задаются командой Field(n, m). При этом начальное положение Робота — клетка в центре поля.
Между некоторыми клетками, а также по периметру поля находятся стены. Робот может передвигаться по полю и закрашивать указанные клетки. Большой желтый квадрат означает начальное положение Робота, маленький — конечное.
Поле Робота, на котором определено положение стен, начальное и конечное положение исполнителя, называют обстановкой.
Для подключения исполнителя Робот в программе прописывается команда uses Robot. Готовые задания с обстановками для Робота хранятся в задачнике, встроенном в систему программирования, и вызываются командой task. Эта же команда использовалась для исполнителя Чертежник.
Система команд исполнителя Робот:
Команда |
Действие |
Right |
Перемещает Робота вправо |
Left |
Перемещает Робота влево |
Up |
Перемещает Робота вверх |
Down |
Перемещает Робота вниз |
Paint |
Закрашивает текущую ячейку |
Робот может становиться на обычную и закрашенную клетку. Робот не может переместиться с клетки на клетку, если они разделены стеной (пример 9.2). Робот не может переместиться за границы поля. Эти действия вызывают ошибку. Робот может закрасить уже закрашенную клетку. Такое действие ошибку не вызывает.
9.3. Использование алгоритмической конструкции следование для исполнителя Робот
Рассмотрим примеры решения задач для исполнителя Робот.
Пример 9.3. Робот находится на поле размером 3 × 3 клетки. Нужно закрасить все клетки, кроме средней (задача a2).
Для решения задачи Робот должен выполнить следующий алгоритм:
закрасить; вправо;
закрасить; вправо;
закрасить; вниз;
закрасить; вниз;
закрасить; влево;
закрасить; влево;
закрасить; вверх;
закрасить; вверх.
В предложенном алгоритме Робот обходит клетки, двигаясь по часовой стрелке. Тот же результат можно было бы получить, если Робот будет обходить поле против часовой стрелки, изначально двигаясь вниз.
Пример 9.4. Составим программу для закрашивания клеток поля Робота по образцу:
Такой обстановки нет в задачнике, поэтому вначале нужно создать поле Робота размером 5 × 3. Начальное положение Робота на таком поле отмечено заштрихованной клеткой.
Для решения задачи Робот должен выполнить следующий алгоритм:
создать поле;
вниз; закрасить;
влево; вверх; закрасить;
влево; вверх; закрасить;
вправо; вправо; вправо; вправо;
закрасить;
влево; вниз; закрасить.
*Какими еще способами можно решить данную задачу?
Пример 9.5. Решим задачу a1 из встроенного задачника.
Для решения задачи Робот должен обойти линию, закрасить указанные клетки и переместиться в клетку конечного положения.
алгоритм решения задачи:
сдвинуться вправо на 4 клетки;
вверх;
сдвинуться влево на 4 клетки, закрашивая их по пути;
влево.
Во всех рассмотренных примерах команды исполнителя Робот выполнялись последовательно, одна за другой, в том порядке, в котором они были записаны. Поэтому все приведенные алгоритмы реализованы с использованием алгоритмической конструкции следование.
9.4. Вспомогательные алгоритмы
Пример 9.6. Решим задачу a3 из встроенного задачника.
Робот должен закрасить все клетки на поле. Однако двигаться по прямой ему мешают стены, которые исполнитель должен обходить.
Алгоритм решения задачи:
закрасить; вниз;
закрасить, вправо;
закрасить, вверх;
закрасить;
вправо;
закрасить, вниз;
закрасить, вправо;
закрасить, вверх;
закрасить.
После выполнения данного алгоритма мы получим правильный результат. Если проанализировать алгоритм, то можно заметить, что дважды повторяется последовательность команд, которая закрашивает квадрат из четырех клеток:
закрасить, вниз;
закрасить, вправо;
закрасить, вверх;
закрасить.
Оформим эти команды как вспомогательный алгоритм, который назовем квадрат. Тогда алгоритм решения исходной задачи может быть записан так:
квадрат;
вправо;
квадрат.
При решении данной задачи использование вспомогательного алгоритма позволило не записывать дважды одну и ту же последовательность команд.
Вспомогательные алгоритмы можно использовать и в том случае, когда исходная задача разбивается на несколько независимых друг от друга задач. Тогда каждую из них можно оформить как вспомогательный алгоритм.
Пример 9.7. Напишем программу для закрашивания клеток поля Робота по образцу:
Такой обстановки нет в задачнике, поэтому мы должны создать поле 7×3. Начальное положение Робота отмечено заштрихованной клеткой.
В данной задаче Робот должен нарисовать две отдельные фигуры: крест и квадрат. Составим два вспомогательных алгоритма.
Вспомогательный алгоритм крест:
влево, закрасить;
вниз, влево, закрасить;
вверх, влево, закрасить;
вправо, закрасить;
вверх, закрасить.
В качестве вспомогательного алгоритма для рисования квадрата можно использовать алгоритм решения задачи a2 (пример 10.2). Для перехода от одной фигуры к другой Робот должен сдвинуться на 3 клетки вправо:
крест;
вправо, вправо, вправо;
квадрат.
Роботы развозят заказы в ресторане Robot Restaurant в городе Харбин (Китай)1 Робот LS3, созданный для транспортировки грузов по пересеченной местности Автономный робот GROVER, который изучает слои льда на ледниковом щите Гренландии Роботизированная система для выращивания овощей. Управление осуществляется посредством Wi — Fi . Есть возможность удаленного контроля через Интернет Робот-пылесос с помощью системы камер и сенсоров может ориентироваться в комнате и строить маршрут уборки _______________ |
Пример 9.1. Поле исполнителя Робот с начальной обстановкой: Пример 9.2. Вызов задачи a 1 из встроенного задачника: Запись команд исполнителя: В программе прописана команда Up .
Сверху находится стена, поэтому перемещение Робота вверх невозможно: |
Пример 9.3. Начальная обстановка: Программа для Робота:
Результат работы программы: Пример 9.4. Программа для Робота:
end . Результат работы программы: Пример 9.5. Начальная обстановка: Программа для Робота:
Результат работы программы: |
Пример 9.6. Начальная обстановка: Программа 1 для исполнителя Робот:
Результат работы программы: Программа 2 (с использованием вспомогательного алгоритма) для исполнителя Робот:
Пример 9.7. Программа для исполнителя Робот:
Результат работы программы: |