Реклама:

Если аккуратно выполнить данную процедуру, то понадобится хранить в памяти только одну версию РШ и столько «векторов состояний», сколько имеется официантов и официанток. Тогда всякое обращение из программы РА к PW будет сопровождаться соответствующим вектором состояний. Он содержит значение (Зх для конкретного работника, а также все накопленные для него счетчики элементов заказа.

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

Если да, то РА вызвала бы подпрограмму РШ с подходящим вектором состояний. Если нет, произойдет инициализация нового вектора состояний, для переменной (Зх будет установлено значение (31, во все счетчики будут занесены нули и затем выполнится обращение к РШ с этим новым набором переменных. Какая бы ситуация ни возникла, значения всех переменных "включаются" в программу и она начинает работать в точке, указываемой значением переменной состояния (Зх.

Кинг Д. Создание эффективного программного обеспечения

Рис. 7.21. Системная блок-схема программы для ресторана с инвертированием.

После завершения формирований векторов состояний °ни становятся набором данных, которые требуются программе Р5 для создания. окончательного отчета. Итак, системная блок-схема для новой, усовершенствованной версии программы системы составления отчета по ресторану такова, как на рис. 7.21.

Разумеется, файл векторов состояний характеризовался бы произвольным, или прямым доступом. Такой доступ нужен для того, чтобы программа РА могла обращаться к записям векторов состояний по ключу, в роли которого выступал бы идентификатор работника, Ш1, или Ш4.

Программа РА будет теперь характеризоваться следующими особенностями.

К программе добавлен выбор ВЫБРАТЬ ВЕКТОР СОСТОЯНИЙ. Кроме того, вызов РШб теперь включает ссылку на вектор состояний, которая служит для инициализации подпрограммы РШб подходящим состоянием при каждом ее вызове до возобновления обработки.

РА поел

Открыть файл заказов Читать элемент заказа

РАТЕЛО понт пока не КФ-Заказов или требование отчета

ОБРАБОТКА ЭЛЕМЕНТА ЗАКАЗА поел

ВЫБРАТЬ ВЕКТОР СОСТОЯНИЙ выб Вектор состояний уже существует Взять нужный вектор состояний ВЫБРАТЬ ВЕКТОР СОСТОЯНИИ или (Вектор состояний не существует) Инициализировать вектор состояний для данного работника ВЫБРАТЬ ВЕКТОР СОСТОЯНИИ конец Вызвать РУб с использованием вектора состояний и элемента заказа Читать элемент заказа ОБРАБОТКА ЭЛЕМЕНТА ЗАКАЗА конец РАТЕЛО конец Закрыть файл заказов (Послать признак «Конец-файла» во все программы РУп)

СТОП РА конец

Теперь оператор «Послать признак Конец-файла» будет служить по меньшей мере двум целям. Он станет инициализировать начало программы РБ в дополнение к завершению работы подпрограммы Р^^'б. На этом этапе дальнейшим уточнением процесса явилось бы исключение файла ШБ. Вся информация, хранившаяся в теперь запомнена в файле векторов состояний. Поэтому программа РБ могла бы просто читать последовательно файл векторов состояний и получать требуемый отчет. Последующее уточнение, в малой степени способствующее эффективности, могло бы сделать РБ подпрограммой для РА. Поскольку РА теперь контролирует большую часть системы составления отчета по ресторану, это изменение, конечно, оказалось бы удобным.


⇐ Предыдущая страница| |Следующая страница ⇒