Реклама:

Если кого-то из читателей сначала смущала работа с векторами состояний, автор надеется на то, что этот раздел помог рассеять такие неясности.

7.7. Подпрограммы

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

Как правило, от проектировщика программ требуется, чтобы он сконструировал и реализовал подпрограмму для выполнения некоторой вспомогательной функции для основной подпрограммы или программы. Например, могла бы понадобиться подпрограмма для редактирования входных записей с одного из входных файлов по мере поступления этих записей в программу упорядочения. Требуемая блок-схема для этого процесса показана на рис. 7.23.

Функция подпрограммы редактирования состоит в том, чтобы отлавливать входные записи сделок и удостоверичто идентификатор клиента корректен (принадлежит ВЗТЬ еденному диапазону) и что он не меньше, чем кор-ный идентификатор клиента, к которому относилась Р дущая сделка. Все идентификаторы являются числами. Если запись сделки не удовлетворяет требуемому крите-ю то она отвергается и от основной программы требуется новая запись. Основная программа несет ответственность за чтение файла сделок и передачу записей подп-ограмме. Если запись корректная, она возвращается основной программе для обработки.

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

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

Читатель уже знает, как конструировать различные виды программ упорядочения, и поэтому мы сконцентрируем внимание на конструировании подпрограммы.

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

Прежде всего, что представляют собой входные и выходные данные подпрограммы? 1

Входом является файл сделок, а выходом - отредактированный файл сделок. Не следует беспокоиться о том, что эти «файлы» фактически передаются в редактор и из редактора каждый раз по одному. Структуры данных для этих «файлов» показаны на рис. 7.24.

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

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

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

Итак, структурированное изложение для основной (неподпрограммной) версии программы редактирования имеет следующий вид:

ПР.РЕДАКТИРОВАНИЯ поел

Открыть входной, Открыть выходной Читать входной Запомнить входной ИД

ТЕЛО ПР. РЕДАКТИРОВАНИЯ повт пока не КФ-Входной ОБР. СДЕЛКИ поел

ТЕЛО ОБР.СДЕЛКИ выб услов КОРРЕКТНАЯ

Выдать записи сделки на выходной ТЕЛО ОБР.СДЕЛКИ или услов (НЕКОРРЕКТНАЯ)


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