ВВЕДЕНИЕ *
ЧЕРТЁЖНИК *
РОБОТ *
РИСОВАЛЬЩИК *
АБОРИГЕН *
КЛАДОИСКАТЕЛЬ *
ПОКУПАТЕЛЬ *
ХОДОК *
ССЫЛКИ *
КАРТА Среда "Магазин", в которой функционирует исполнитель Покупатель, представляет собой прямоугольное поле, разбитое на условные клетки невидимыми вертикальными и горизонтальными линиями. Размер поля определяется количеством клеток, размещенных вдоль горизонтальной и вдоль вертикальной сторон поля.
Каждый отдел представляет собой прямоугольник размерами 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