Компьютерные исполнители


ВВЕДЕНИЕ * ЧЕРТЁЖНИК * РОБОТ * РИСОВАЛЬЩИК * АБОРИГЕН * КЛАДОИСКАТЕЛЬ * ПОКУПАТЕЛЬ * ХОДОК * ССЫЛКИ * КАРТА


    Кладоискатель

    Среда исполнителя

    Исполнителя Кладоискатель можно представить как некое шагающее устройство, способное перемещаться в четырёх направлениях: вверх, вниз, влево, вправо.
     Средой обитания исполнителя Кладоискатель является клеточное поле. Исполнитель на поле изображается кругом и может передвигаться по клеткам поля вверх, вниз, влево, вправо; закрашивать клетки; собирать или расставлять объекты.      Исполнитель Кладоискатель располагается в клетках и не имеет ориентации. Кладоискатель изображается в виде головы человечка в шляпе. Лицо человечка одного из четырёх цветов: белого, жёлтого, красного и коричневого. Шляпа человечка красного цвета, если данный исполнитель активен, шляпа синего цвета, если исполнитель неактивен, шляпа белого цвета, если активный исполнитель находится под отладкой. Кладоискатель считается непрозрачным исполнителем (в одной клетке одновременно не может находиться более одного исполнителя).
     Кладоискатель может передвигаться в одну из четырёх соседних клеток (если они свободны), подбирать и расставлять сундуки, мешки и кувшины, получать информацию о своём положении на поле среды и информацию о находящихся на поле Аборигенах.
     Кладоискатель и Абориген- конкурирующие исполнители, для которых может быть придумано большое число задач, требующих тщательной разработки алгоритма-стратегии.
     При загрузке исполнителя Кладоискатель его местоположение в верхнем левом угле. Но начальное положение исполнителя можно изменить (загрузив из файла соответствующую обстановку).
Среда исполнителя Кладоискатель     На поле могут быть размещены объкты:

  • горизонтальные и вертикальные линии (одного из 8 цветов);
  • клетки (одного из 16 цветов);
  • мешки, сундуки, кувшины;
  • камни.

     Горизонтальные линии, вертикальные линии и камни могут быть поставлены на поле Кладоискателя только визуально с помощью команды Расстановка / Добавить объект. Мешки, сундуки, кувшины и клетки могут быть расставлены как визуально, так и программно. На одной клетке (как закрашенной, так и незакрашенной) может размещаться только один объект. Все объекты могут перемещаться с одного места на другое (при нажатой левой клавише мыши) или копироваться с помощью значка Знак копирования, который появляется, если объект выделяется при нажатой клавише Shift.

    Система команд исполнителя

Вверх

Вверх

  Кладоискатель перемещается в клетку, верхнюю относительно текущей.

Вниз

Вниз

  Кладоискатель перемещается в клетку, нижнюю относительно текущей.

Влево

Влево

  Кладоискатель перемещается в клетку, левую относительно текущей.

Вправо

Вправо

  Кладоискатель перемещается в клетку, правую относительно текущей.

Взять

Взять

  Кладоискатель берёт предмет из текущей клетки .

Положить(1)

Положить(1)

  Кладоискатель кладёт в текущую клетку заданный в скобках предмет. Предметы нумеруются так: 1- сундук, 2- кувшин, 3- мешок. .

Закрасить(n)

Закрасить(n)

  Кладоискатель закрашивает текущую клетку указанным в скобках цветом.

Номера цветов клеток

1Чёрный9Тёмно-синий
2Тёмно-синий10Синий
3Тёмно-зелёный11Зелёный
4Тёмно-голубой12Голубой
5Тёмно-красный13Красный
6Тёмно-сиреневый14Сиреневый
7Болотный15Жёлтый
8Светло-серый16Белый

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

    Линейные алгоритмы

     Линейным называют такой алгоритм, в котором команды выполняются одна за другой в порядке их записи.
    ПРИМЕР 1.Cоставим алгоритм, выполнив который Кладоискатель соберёт все объекты, а клетки, на которых они лежали, закрасит разными цветами.
Начальная обстановка Конечный результат

  Программа Пример_1
  Вниз Вниз Вниз
  Вправо Вниз Взять
  Закрасить(2)
  Вверх Вправо
  Взять
  Закрасить(3)
  Вправо Вправо
  Вниз Взять
  Закрасить(4)
  Конец_Программы

    ПРИМЕР 2.Cоставим алгоритм, выполнив который Кладоискатель соберёт все объекты, а клетки, на которых они лежали, закрасит.

Начальная обстановка


  Программа Пример_2
  Вниз Вправо Вверх Вверх
  Влево Взять Закрасить(11)
  Вправо Вправо Вниз Вниз
  Вниз Взять Закрасить(11)
  Вниз Взять Закрасить(11)
  Влево Влево Влево
  Влево Взять
  Закрасить(11)
  Конец_Программы
Конечный результат


Пример 3.     ПРИМЕР 3.Cоставим алгоритм, выполнив который Кладоискатель закрасит клетки и нарисует цветок.
  Программа Пример_3
  Вниз Закрасить(12) Вправо Закрасить(14) Вверх
  Закрасить(12) Вниз Вниз Закрасить(12)
  Вверх Вправо Закрасить(12) Влево
  Вниз Вниз Закрасить(3) Вниз Закрасить(3)
  Вниз Закрасить(3) Вправо Вверх Закрасить(3)
  Конец_Программы

    

Задания для самостоятельного выполнения

Задание 1.
    Задание 1.Cоставьте алгоритм перемещения Кладоискателя в закрашенную клетку.

    Задание 2.Cоставьте алгоритм, в результате исполнения которого Кладоискатель закрасит клетки, на которых стоят кувшины, и соберёт кувшины.

Задание 3.

    Задание 3.Cоставьте алгоритм, выполнив который Кладоискатель закрасит клетки, чтобы получился рисунок.

    Вспомогательные алгоритмы

     Вспомогательным называют такой алгоритм, который можно использовать в любом месте другого алгоритма. Для вызова вспомогательного алгоритма используется его имя.

    ПРИМЕР 4.
Cоставим алгоритм, в результате выполнения которого Кладоискатель нарисует рисунок по образцу.

Программа Пример_4
фигура
фигура
фигура
фигура
Конец_Программы

Программа фигура
Вниз
Закрасить(3)
Вниз
Закрасить(4)
Вправо
Закрасить(5)
Вверх
Закрасить(6)
Вправо
Вправо
Конец_Программы


     ПРИМЕР 5.
Cоставим алгоритм, с помощью которого Кладоискатель соберёт все объекты на поле.
Программа Пример_5
Вниз
предметы
предметы
предметы
Конец_Программы
Программа предметы
Взять Закрасить(3) Вниз Взять Закрасить(4) Вправо Взять Закрасить(5) Вниз Взять Закрасить(6) Влево Взять Закрасить(7) Вниз Взять Закрасить(8) Вправо Вправо Вправо Вправо Вверх Вверх Вверх Конец_Программы

    

Задания для самостоятельного выполнения


    Задание 4.Cоставьте алгоритм, в результате которого Кладоискатель соберёт все клады.
Задание 5.     Задание 5.Cоставьте алгоритм, в результате исполнения которого Кладоискатель закрасит соответствующие клетки и соберёт все клады.

    Задание 6.Cоставьте алгоритм, в результате исполнения которого Кладоискатель закрасит соответствующие клетки и соберёт все клады..

    Алгоритмы с повторением

     Конструкция повторения- это часть алгоритма, в которой некоторую последовательность действий надо повторить несколько раз. Такую многократно повторяющуюся часть алгоритма называют циклом.
    Алгоритм, в котором используется конструкция повторения, называется алгоритмом с повторением.
    При составлении алгоритмов с повторениями используется команда повторения:
Повторять_Пока (условие)
(действие 1)
(действие 2)
...
(действие n)
Завершить

    Команды-вопросы исполнителя

Вверху_Линия

Вверху_Линия

  Кладоискатель проверяет, есть ли вверху линия.

Внизу_Линия

Внизу_Линия

  Кладоискатель проверяет, есть ли внизу линия.

Слева_Линия

Слева_Линия

  Кладоискатель проверяет, есть ли слева линия.

Справа_Линия

Справа_Линия

  Кладоискатель проверяет, есть ли справа линия.

Вверху_Пусто

Вверху_Пусто

  Кладоискатель проверяет, пусто ли вверху.

Внизу_Пусто

Внизу_Пусто

  Кладоискатель проверяет, пусто ли внизу.

Слева_Пусто

Слева_Пусто

  Кладоискатель проверяет, пусто ли слева.

Справа_Пусто

Справа_Пусто

  Кладоискатель проверяет, пусто ли справа.

Вверху_До_Края

Вверху_До_Края

 Данная команда возвращает количество клеток до верхнего края текущей клетки.
  Программа кол_во_клеток
  Описание
  а: Целый
  Конец_Описания
   а:=Справа_До_Края
  Вывод(а)
  Конец_Программы

Внизу_До_Края

Внизу_До_Края

 Данная команда возвращает количество клеток до нижнего края текущей клетки.

Слева_До_Края

Слева_До_Края

 Данная команда возвращает количество клеток до левого края текущей клетки.

Справа_До_Края

Справа_До_Края

 Данная команда возвращает количество клеток до правого края текущей клетки.

Цвет_Клетки

Цвет_Клетки

 Данная команда возвращает номер цвета текущей клетки.

Что_Это

Что_Это

 Данная команда возвращает номер предмета, лежащего в текущей клетке.

Всего_Предмета

Всего_Предмета

 Данная команда возвращает количество указанных предметов у Кладоискателя.

летка_Закрашена

Клетка_Закрашена

 Данная команда проверяет, закрашена ли текущая клетка.

Считать_Узлы

Считать_Узлы

 Возвращает информацию об Аборигенах на поле.

Считать_Клетки

Считать_Клетки

 Возвращает информацию о Кладоискателях на поле.

    Наличие команд-вопросов для исполнителя Кладоискатель даёт возможность составлять различные алгоритмы, достаточно короткие по сравнению с линейными. Рассмотрим некоторые из них.


ПРИМЕР 6.

Cоставим алгоритм, выполнив который Кладоискатель переместится в закрашенную клетку.
Пример 6.    
Программа Пример_6
   Повторять_Пока Внизу_Пусто
   Вниз
   Завершить
   Конец_Программы
ПРИМЕР 7.
Cоставим алгоритм, выполнив который Кладоискатель переместится до конца линии.
Пример 7.    Программа Пример_7
   Повторять_Пока Вверху_Линия
   Вправо
   Завершить
   Конец_Программы

ПРИМЕР 8.

Cоставим алгоритм, выполнив который Кладоискатель переместится в закрашенную клетку.

   Программа Пример_8
   Повторять_Пока не Внизу_Линия
   Вниз
   Завершить
   Повторять_Пока Внизу_Линия
   Влево
   Завершить
   Повторять_Пока не Клетка_Закрашена
   Вниз
   Завершить
   Конец_Программы

ПРИМЕР 9.

Cоставим алгоритм, выполнив который Кладоискатель закрасит все клетки вокруг прямоугольника.

   Программа Пример_9
    Вправо Вправо
    Повторять_Пока не Внизу_Линия
    Вниз Завершить Закрасить(11)
    Повторять_Пока Внизу_Линия
    Вправо Закрасить(11) Завершить Вниз Закрасить(11)
    Повторять_Пока Слева_Линия
    Вниз Закрасить(11) Завершить Влево Закрасить(11)
    Повторять_Пока Вверху_Линия
    Влево Закрасить(11) Завершить Вверх Закрасить(11)
    Повторять_Пока Справа_Линия
    Вверх Закрасить(11) Завершить
    Конец_Программы

    

Задания для самостоятельного выполнения


    Задание 7.Cоставьте алгоритм, в результате которого Кладоискатель закрасит все клетки возле границ поля.

    Задание 8.Cоставьте алгоритм перемещения Кладоискателя в закрашенную клетку.
    Задание 9.Cоставьте алгоритм, в результате исполнения которого Кладоискатель переместиться в закрашенную клетку.

    Алгоритмы с ветвлениями

     Конструкция ветвления- это часть алгоритма, в которой в зависимости от выполнения или невыполнения некоторого условия выполняется либо одна, либо другая последовательность действий.
    Алгоритм, в котором используется конструкция ветвления, называется алгоритмом с ветвлением.
    При составлении алгоритмов с ветвлениями используется команда если:
Если (условие)
    То (действие 1)
    Иначе (действие 2)
Конец_Если

     Выше указанная кнструкция называется полной,если в конструкции нет слова иначе, то конструкция называется не полной.

ПРИМЕР 10.

Cоставим алгоритм, выполнив который Кладоискатель закрасит клетки, у которых справа линия, одним цветом, а клетки, у которях слева линия, - другим цветом.
Пример 10.    
Программа Пример_10
   Повторять_Пока Внизу_Пусто
   Если Справа_Линия
     То Закрасить(11)
      Иначе
     Если Слева_Линия
      То Закрасить(12)
      Конец_Если
   Конец_Если
   Вниз
   Завершить
   Конец_Программы

ПРИМЕР 11.

Cоставим алгоритм, выполнив который Кладоискатель соберёт все мешки и заменит ими сундуки.



Программа Пример_11
   Вправо
   Повторять_Пока Справа_Пусто
   Взять Вправо Завершить Вверх
   Повторять_Пока Слева_Пусто
   Взять Влево Завершить
   Повторять_Пока не Вверху_Линия
   Если Что_Это =1 То Взять
   Положить(3)
    Конец_Если
   Вверх Завершить
   Повторять_Пока Вверху_Линия
   Если Что_Это =1
    То Взять Положить(3)
   Конец_Если
   Вправо Завершить
   Повторять_Пока Вверху_Пусто
   Если Что_Это =1
    То Взять Положить(3)
    Конец_Если
   Вверх Завершить
   Повторять_Пока Справа_Пусто
   Если Что_Это =1
    То Взять Положить(3)
    Конец_Если
   Вправо Завершить
   Конец_Программы

ПРИМЕР 12.

Cоставим алгоритм подсчёта всех сундуков на поле.

Пример 12.

Программа Пример_12
Описание к: Целый Конец_Описания
к:=0
Повторять_Пока не Справа_Линия
Если Что_Это =1 То к:=к+1 Конец_Если
Вправо Завершить
Повторять_Пока не Внизу_Линия
Если Что_Это =1 То к:=к+1 Конец_Если Вниз Завершить
Повторять_Пока Слева_Пусто
Если Что_Это =1 То к:=к+1 Конец_Если
Влево Завершить
Вывод(к)
Конец_Программы

ПРИМЕР 13.

Cоставим алгоритм подсчёта всех мешков и кувшинов на поле.

Пример 13.

Программа Пример_13
Описание к: Целый Конец_Описания
к:=0
Повторять_Пока не Внизу_Линия
Вниз Завершить
Повторять_Пока Внизу_Линия
Если (Что_Это =2) или (Что_Это =3)
То к:=к+1 Конец_Если
Вправо Завершить
Вниз
Повторять_Пока Слева_Пусто
Если (Что_Это =2) или (Что_Это =3)
То к:=к+1 Конец_Если
Влево
Завершить
Вывод(к)
Конец_Программы

    

Задания для самостоятельного выполнения

Задание 10.    Задание 10. Cоставьте алгоритм, в результате которого Кладоискатель закрасит все клетки вокруг линии, где они ещё не закрашены.
Задание 11     Задание 11.Cоставьте алгоритм подсчёта всех кувшинов.
Задание 12.     Задание 12.Cоставьте алгоритм подсчёта всех сундуков и мешков.
Задание 13.     Задание 13.Cоставьте алгоритм подсчёта количества всех сундуков, мешков и кувшинов.

    


ВВЕДЕНИЕ * ЧЕРТЁЖНИК * РОБОТ * РИСОВАЛЬЩИК * АБОРИГЕН * КЛАДОИСКАТЕЛЬ * ПОКУПАТЕЛЬ * ХОДОК * ССЫЛКИ * КАРТА *


   А.А.Синица saassl@tut.by

Назад

Далее