Реклама:

(Ничего не делать) ТЕЛО ОБР.СДЕЛКИ конец Читать входной ОБР.СДЕЛКИ конец ТЕЛО ПР.РЕДАКТИРОВАНИЯ конец Закрыть входной, Закрыть выходной СТОП

ПР.РЕДАКТИРОВАНИЯ конец

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

Однако требовалось написать подпрограмму, причем входные и выходные данные для подпрограммы существуют не в виде файлов, а только как отдельные записи, передаваемые в подпрограмму и из нее по одной. Мы знаем, как преобразовывать обычную программу в такую подпрограмму с той разницей, что теперь должны исчезнуть два промежуточных файла.

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

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

Прежде всего мы инвертируем программу относительно ее выходного файла, т.е. файла, в который она пишет.

Нужно исключить оператор «Открыть выходной», инициализировать переменную состояния в начале программы и пре-. образовать операторы «Писать» в операторы ВЕРНУТЬСЯ в основную программу, т.е. в программу упорядочения. Наконец, оператор «Закрыть выходной» следует интерпретировать как «Писать КФ» и преобразовать соответственно в оператор ВЕРНУТЬСЯ, а оператор СТОП также преобразуется в оператор ВЕРНУТЬСЯ в основную программу. Структурированное изложение для полученной в результате программы будет следующим:

Описать Ох значение 1 (Ох = 01)

ПЕРЕЙТИ К 01, 02, 03 в зависимости от значения 0х

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

Открыть входной файл

Читать входной

Запомнить входной ИД

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

ТЕЛО ОБР.СДЕЛКИ выб услов КОРРЕКТНАЯ Запомнить ИД записи Установить 0х значение 02 ВЕРНУТЬСЯ в программу упорядочения с записью сделки ТЕЛО ОБР.СДЕЛКИ или услов (НЕКОРРЕКТНАЯ)

(Ничего не делать) ТЕЛО ОБР.СДЕЛКИ конец 02: Читать входной ОБР.СДЕЛКИ конец ТЕЛО ПР.РЕДАКТИРОВАНИЯ конец Закрыть входной файл Установить 0х значение 03 ВЕРНУТЬСЯ в программу упорядочения с признаком КФ 03: ВЕРНУТЬСЯ в программу упорядочения ПР.РЕДАКТИРОВАНИЯ конец

Теперь программа инвертирована относительно выходного файла. В заключение ее нужно инвертировать одновременно ... относительно входного файла. Применение правил инвертирования программы относительно файла, который она читает, и наложение получаемых изменений на те, которые уже произведены, приводит к следующему структурированному изложению:


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