§ 9. Исполнитель Робот

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 . Есть возможность удаленного контроля через Интернет

Робот-пылесос с помощью системы камер и сенсоров может ориентироваться в комнате и строить маршрут уборки

_______________
1Материалы о роботах взяты с сайтов http://fishki.net/1211999-roboty-v-nashej-zhizni.html и http://www.robogeek.ru (дата доступа: 07.02.2017).

Пример 9.1. Поле исполнителя Робот с начальной обстановкой:

Пример 9.2. Вызов задачи a 1 из встроенного задачника:

Запись команд исполнителя:

В программе прописана команда Up .

Сверху находится стена, поэтому перемещение Робота вверх невозможно:

Пример 9.3. Начальная обстановка:

Программа для Робота:

Результат работы программы:

Пример 9.4. Программа для Робота:

end .

Результат работы программы:

Пример 9.5. Начальная обстановка:

Программа для Робота:

Результат работы программы:

Пример 9.6. Начальная обстановка:

Программа 1 для исполнителя Робот:

Результат работы программы:

Программа 2 (с использованием вспомогательного алгоритма) для исполнителя Робот:

Пример 9.7. Программа для исполнителя Робот:

Результат работы программы:



1. Что такое робот?



2. Какие команды входят в систему команд учебного компьютерного исполнителя Робот?



    1. Начальная обстановка на поле Робота изображена на рисунке.

Три учащихся составили и выполнили алгоритм, по которому Робот закрасил все клетки пути от начальной к конечной. На каком из рисунков изображено решение данной задачи? Почему?

    1. Какой из приведенных алгоритмов решает задачу, сформулированную в предыдущем задании? Объясните, почему другие программы не могут быть алгоритмами решения данной задачи.

      а)

      б)

      в)

    2. Для какого исполнителя приведен алгоритм в задании 2, в? Сформулируйте для этого исполнителя задачу, решением которой будет приведенный алгоритм.
    3. Для исполнителя Робот была составлена следующая программа:

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

    1. Все команды в программе из задания 4 учащийся скопировал три раза. Как изменится «узор» после выполнения программы? Как можно по-другому записать этот алгоритм? Какого размера поле нужно создать?

Подсказка. Воспользуйтесь вспомогательным алгоритмом.

    1. Программа решения задачи была записана на доске. Два учащихся, переписывая этот алгоритм для исполнителя Робот, пропустили из-за невнимательности по одной команде. Какую команду пропустил каждый из учащихся? Что будет результатом работы каждой программы?

      Программа, записанная первым учащимся

      Программа, записанная вторым учащимся

    2. Составьте программу для решения задачи a4 из встроенного задачника.

Предложите два алгоритма: один — с использованием алгоритмической конструкции следование, другой — с использованием вспомогательного алгоритма. Сравните решения.

8*. Робот-огородник может разбить грядку на посадочные зоны-клетки. Перед вами схема посадки овощей (красная клетка — томаты, зеленая — огурцы). Предложите систему команд для робота-огородника и разработайте алгоритм посадки овощей (Робот сажает одно растение в одну клетку).