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


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


    Покупатель

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

    Среда "Магазин", в которой функционирует исполнитель Покупатель, представляет собой прямоугольное поле, разбитое на условные клетки невидимыми вертикальными и горизонтальными линиями. Размер поля определяется количеством клеток, размещенных вдоль горизонтальной и вдоль вертикальной сторон поля.
    Вертикальные и горизонтальные размеры поля определяются указанием необходимых значений в диалоговом окне, вызываемом из меню Опции командой Свойства среды. Окно среды "Магазин" может быть растянуто или сжато по горизонтали и по вертикали. В этом случае изменение количества клеток на поле не происходит, масштабируются имеющиеся кпетки.
    Исполнитель Покупатель располагается в клетках и не имеет ориентации.     Неактивный исполнитель Покупатель изображается в виде маленькой фигурки человека одного из шести цветов: синего, серого, зеленого, фиолетового, коричневого или черного. Фигурка имеет голову красного цвета, если данный исполнитель активен, и голову белого цвета, если исполнитель находится под отладкой. Покупатель считается частично непрозрачным исполнителем (со время движения исполнитель может проходить по клеткам, занятым другими исполнителями, но остановиться должен обязательно в свободной клетке).
    Покупатель может подходить к одному из трех отделов, узнавать о наличии товара, вставать в очередь, покупать товар, отходить от отдела и уходить домой.
Для среды "Магазин" определены следующие объекты:

  • мясной отдел;
  • хлебный отдел;
  • молочный отдел;
  • выход.

    Каждый отдел представляет собой прямоугольник размерами 5 клеток на 8 клеток. По периметру располагаются клетка входа в отдел (красная), клетка выхода из отдела (зеленая) и 22 клетки для очереди. Внутри отдела может находиться только один покупатель, в очереди максимально может находиться 22 покупателя.
    В каждом отделе продается два вида товаров: в мясном - мясо и колбаса, в хлебном -хлеб и пирожное, в молочном - молоко и масло.
    Ориентация отдела на поле среды, начальное количество каждого вида товаров в отделе задаётся в диалоговом окне Свойства среды.
    Выход представляет собой клетку с нарисованной на ней дверью. Получив команду уйти домой Покупатели двигаются к выходу и, достигнув его, исчезают с поля среды. После выполнения всех программ исполнители, покинувшие поле среды, появляются в тех клетках, на которых они находились в момент получения команды уйти домой. Отделы и выход могут быть поставлены на поле среды только визуально с помощью команды Добавить объекты из > из меню Расстановка. Одновременно на поле среды может быть поставлен только один отдел каждого типа и только один выход.
После выполнения команды Удалить объекты из меню Расстановка с поля среды удаляются все имеющиеся на нём отделы и выход.

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

Подойти_К_Мяснику

Подойти_К_Мяснику

  Покупатель подходит к отделу мясника.

Подойти_К_Булочнику

Подойти_К_Булочнику

  Покупатель подходит к отделу булочника.

Подойти_К_Молочнику

Подойти_К_Молочнику

  Покупатель подходит к отделу молочнику.

Встать_В_Очередь

Встать_В_Очередь

  Покупатель занимает очередь к прилавку.

Отойти_От_Прилавка

Отойти_От_Прилавка

  Покупатель выходит из очереди к прилавку.

Купить_Мясо

Купить_Мясо

  Покупатель покупает мясо у мясника.

Купить_Колбасу

Купить_Колбасу

  Покупатель покупает колбасу у мясника.

Купить_Хлеб

Купить_Хлеб

  Покупатель покупает хлеб у булочника.

Купить_Пирожное

Купить_Пирожное

  Покупатель покупает пирожное у булочника.

Купить_Молоко

Купить_Молоко

  Покупатель покупает молоко у молочника.

Купить_Масло

Купить_Масло

  Покупатель покупает масло у молочника.

Покинуть_Магазин

Покинуть_Магазин

  Покупатель двигается к выходу из магазина и исчезает с экрана.

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

Есть_Мясо

Есть_Мясо

  Покупатель проверяет, осталось ли у мясника мясо.

Есть_Колбаса

Есть_Колбаса

  Покупатель проверяет, осталась ли у мясника колбаса.

Есть_Хлеб

Есть_Хлеб

  Покупатель проверяет, остался ли у булочника Хлеб.

Есть_Пирожные

Есть_Пирожные

  Покупатель проверяет, остались ли у булочника Пирожные.

Есть_Молоко

Есть_Молоко

  Покупатель проверяет, осталось ли у молочника Молоко.

Есть_Масло

Есть_Масло

  Покупатель проверяет, осталось ли у молочника Масло.

    

Пример алгоритма для изучения
среды исполнителя Покупатель

    Программа Купи_По_Списку
    Описание
      Товары: Массив[6] Строковый
      Купить: Массив[6] Целый
      Куплено: Массив[6] Целый
      Счетчик,Сумма: Целый
     Конец_Описания
       {Задаем массив Товары.}
   Товары[1]:='хлеба' Товары[2]:='пирожных' Товары[3]:=' молока'
   Товары[4]:='масла' Товары[5]:='мяса' Товары[6]:='колбасы'
      {Покупатель представляется и спрашивает, сколько чего купить.}
      Вывод('Здравствуйте, я - Покупатель.') Новая_Строка
      Вывод('Сообщите, какие покупки следует сделать.')
      Повторять_Для Счетчик От 1 До 6
   Ввод(Купить[Счетчик],'Сколько купить '+Товары[Счетчик]+'?')
      Если Купить[Счетчик]<0
       То Купить[Счетчик]:=-Купить[Счетчик]
       Конец_Если
       Завершить
       Сумма:=0
      Повторять_Для Счетчик От 1 До 6
      Сумма:=Сумма+Купить[Счетчик]
       Завершить
       {А нужно ли что-нибудь покупать?}
       Если Сумма=0
      То
      Новая_Строка
       Вывод('Если ничего не нужно, зачем было меня беспокоить?')
       Иначе
      {Обход прилавков}
      Новая_Строка
       Вывод('Отправляюсь за покупками!')
       Если (Купить[1]+Купить[2])>0
   То Хлебный_Прилавок_1(Купить[1],Купить[2],Куплено[1],Куплено[2])
      Конец_Если
       Если (Купить[3]+Купить[4])>0
   То Молочный_Прилавок_1(Купить[3],Купить[4],Куплено[3],Куплено[4])
       Конец_Если
       Если (Купить[5]+Купить[6])>0
       То
    Мясной_Прилавок_1(Купить[5],Купить[6],Куплено[5],Куплено[6])
      Конец_Если
      {Конец обхода прилавков}
       Новая_Строка
       Вывод('Докладываю о результатах похода в магазин:')
       Повторять_Для Счетчик От 1 До 6
       Если Купить[Счетчик]<>0
       То Новая_Строка
  Вывод('Было велено купить ',Товары[Счетчик],'-',Купить[Счетчик],',куплено -',Куплено[Счетчик])
      Конец_Если
      Завершить
       Конец_Если
       Новая_Строка
      Вывод('До свидания!')
       Покинуть_Магазин
      Конец_Программы

 Программа Хлебный_Прилавок_1(КХ,КП: Целый Передать Х,П: Целый )
      Подойти_К_Булочнику
      {Пока еще ничего не куплено}
      Х:=0 П:=0
      {Проверим, а есть ли смысл становиться в очередь?}
      Если (КХ>0) И (Есть_Хлеб) Или (КП>0) И (Есть_Пирожное)
       То Встать_В_Очередь
       Повторять_Пока (Есть_Хлеб) И (Х<КХ)
       Купить_Хлеб
       Х:=Х+1
       Завершить
       Повторять_Пока (Есть_Пирожное) И (П<КП)
       Купить_Пирожное П:=П+1
      Завершить
       Отойти_От_Прилавка
      Конец_Если
      Конец_Программы

 Программа Молочный_Прилавок_1(КМО,КМА: Целый Передать МО,МА: Целый )
      Подойти_К_Молочнику
       {Пока еще ничего не куплено}
       МО:=0 МА:=0
      {Проверим, а есть ли смысл становиться в очередь?}
       Если (КМО>0) И (Есть_Молоко) Или (КМА>0) И (Есть_Масло)
       То Встать_В_Очередь
      Повторять_Пока (Есть_Молоко) И (МО<КМО)
       Купить_Молоко
       МО:=МО+1
       Завершить
      Повторять_Пока (Есть_Масло) И (МА<КМА)
       Купить_Масло
       МА:=МА+1
       Завершить
       Отойти_От_Прилавка
       Конец_Если
      Конец_Программы

 Программа Мясной_Прилавок_1(КМ,КК: Целый Передать М,К: Целый )
      Подойти_К_Мяснику
      {Пока еще ничего не куплено}
      М:=0 К:=0
       {Проверим, а есть ли смысл становиться в очередь?}
      Если (КМ>0) И (Есть_Мясо) Или (КК>0) И (Есть_Колбаса)
       То Встать_В_Очередь
      Повторять_Пока (Есть_Мясо) И (М<КМ)
       Купить_Мясо
       М:=М+1
      Завершить
       Повторять_Пока (Есть_Колбаса) И (К<КК)
       Купить_Колбасу К:=К+1
       Завершить
      Отойти_От_Прилавка
       Конец_Если
      Конец_Программы

    


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


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

Назад

Далее