Реклама:

0п+1: Поместить символ из в строку Ш)

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

Наконец, оператор СТОП нужно заменить на оператор ВЕРНУТЬСЯ в Р1. Как и ранее, переменная 1Ы является общей областью, в которую Р1 будет помещать Запись СИМВОЛ или признак КФ-ПФ.

Структурированное изложение для подпрограммы Р2в имеет следующий вид:

Описать Ох значение 1 (Ох = 01) ПЕРЕЙТИ К 01, 02, 03 или 04 в зависимости от значения 0х

01; Р2 поел

Установить N=1; Установить счетчик симв = 1 Открыть отчет

Поместить символ из 1Ы в строку (Ы) Установить N=N+1 Писать заголовок

ОБР.ТЕЛА ОТЧЕТА повт пока не (Конец-файла в ПФ) ПОЛУЧЕНИЕ СТРОКИ ДЛЯ ЗАПИСИ поел

ПСДЗ.ТЕЛО повт пока не Конец-Записи (счетчик симв = 150)ИЛИ (Конец-файла ПФ) ОБРАБОТКА СИМВОЛА поел

Установить 0х значение 02 ВЕРНУТЬСЯ в Р1 с (Ш) 02: Поместить символ из 1Ы в строку (Ы) Установить счетчик симв = счетчик симв + 1

Установить N=N+1 ОБРАБОТКА СИМВОЛА конец ПСДЗ.ТЕЛО конец

Писать запись из строки в отчет Установить счетчик симв = 1;

Установить N=1 Установить 0х значение 03 ВЕРНУТЬСЯ в Р1 с (1Н) 03: Поместить символ из 1Ы в строку (Ы) Установить счетчик симв = счетчик симв + 1

Установить N=N+1 ПОЛУЧЕНИЕ СТРОКИ ДЛЯ ЗАПИСИ конец ОБР.ТЕЛА ОТЧЕТА конец Писать завершитель Закрыть отчет ВЕРНУТЬСЯ в Р1 Р2 конец

Опять изменения по сравнению с неинвертированной версией Р2 выделены полужирным шрифтом и подчеркнуты.. При реализации программ Р1 и Р2в в соответствии с таким конструированием P2s будет действовать как подп-ограмма вывода для Р1 (см. рис. 7.20). Если Р1 инвертирована и превращена в Pis, как на рис. 7.19, то Pis является подпрограммой ввода для Р2.

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

Аналогично в представленном на рис. 7.20 случае P2s промежуточный файл передается от Р1 к P2s запись за записью, а не в виде полного файла. Итак, в каждом случае мы преобразовали совокупность двух последовательных процессов в один объединенный процесс.

Автор не сомневается в том, что обе программы Р1 и Р2 можно сделать несколько более эффективными, а возможно, даже более изящными. Но и в таком виде как в качестве основных программ, так и в качестве подпрограмм они работают! И не только работают, их еще очень легко понять, они полностью документированы с точки зрения конструирования, и поэтому их очень легко сопровождать.

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

Процедура инвертирования для программы, которая читает промежуточный файл

Добавим в начало программы следующие операторы:

Описать Qx значение 1 (Qx = Q1) ПЕРЕЙТИ К Ql, Q2, Q3 и т.д. в зависимости от значения Qx

Ql:

Удалить оператор «Открыть» для промежуточного файла.


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