Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Жизнь как алгоритм.doc
Скачиваний:
0
Добавлен:
29.12.2019
Размер:
401.41 Кб
Скачать

Графический исполнитель “робот”

Графический исполнитель Робот «живет» на плоскости из квадратных клеток, может переходить между соседними клетками, красить клетку под собой и видеть стены.

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

У Робота есть 14 команд. Четыре команды — это команды-приказы:

вверх вниз влево вправо При выполнении любой из этих команд Робот перемещается на одну клетку соответственно: вверх ↑, вниз ↓, влево ←, вправо →. Если Робот получит команду передвижения через стену, то он разрушится.

Ещё четыре команды — это команды проверки условий. Эти команды проверяют, свободен ли путь для Робота в каждом из четырёх возможных направлений:

сверху свободно снизу свободно слева свободно справа свободно

Эти команды можно использовать вместе с условием «eсли», имеющим следующий вид:

если условие то

последовательность команд

все

Здесь условие — одна из команд проверки условия. Последовательность команд — это одна или несколько любых команд-приказов.

Например, для передвижения на одну клетку вправо, если справа нет стенки, можно использовать такой алгоритм:

если справа свободно то

вправо

все

В одном условии можно использовать несколько команд проверки условий, применяя логические связки и, или, не, например:

если(справа свободно) и(не снизу свободно) то

вправо

все

Всего команд обратной связи восемь — по две на каждое направление: вместо слова «свободно» в условии может стоять слово «стена». Данные условия противоположны друг другу, то есть не справа свободно – то же, что и справа стена.

Для повторения последовательности команд можно использовать цикл «пока», имеющий следующий вид:

нц пока условие

последовательность команд

кц

Например, для движения вправо, пока это возможно, можно использовать следующий алгоритм:

нц пока справа свободно

вправо

кц

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

Управляющая информация и системы с обратной связью

Понятие «управляющей информации» тождественно понятию «программа», а программа — это алгоритм, записанный на конкретном формальном языке, а значит такая информация может быть записана символами алфавита и быть объектом, а не субьектом.

В компьютерах чаще всего используется так называемая фон-неймановская архитектура, предполагающая, что программы сохранены в виде специального, понятного центральному процессору «машинного кода» в оперативной памяти, в том же пространстве, где хранятся и данные.

При создании роботов часто используют микроконтроллеры, построенные по гарвардской архитектуре, где управляющая информация разделена с пассивной информацией физически, они хранятся на разных устройствах.

В любом случае вычислитель, замкнутый в своих внутренних переменных, не может ориентироваться на изменения окружающей среды. Допустим, в луноход внесена карта местности, и он движется строго по заданной траектории. При отстуствии обратной связи любые изменения рельефа будут гибельными для его миссии. В языках программирования нечно подобное «обратной связи» позволяют задать конструкции условного исполнения операторов.

Задачи для выполнения на занятии

Задача 1

Какие действия необходимо сделать, чтобы перейти в закрашенную точку? (Использовать команды вверх, вниз, вправо и влево.)

Задача 2

Закрасить клетки слева и справа от четырех стен фиксированной длины. Робот находится в правом нижнем углу лабиринта возле самой последней стенки.

Задача 3

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

решение

Использовать Робот

алг

нач

нц пока снизу свободно

закрасить

двигаться вправо до стены закрашивая нужные клетки

нц пока справа свободно

вправо

если снизу свободно

то закрасить

все

кц

налево до упора

нц пока слева свободно

влево

кц

вниз

кц

кон