Реклама:

Эта программа сложнее, чем Р1. Поддерживаются два счетчика: N - счетчик места в строке, который служит для гарантии того, что во время построения строки отчета символ пишется в правильное место в строке.

Счетчик симв - просто счетчик числа символов, считываемых в программу; он служит в качестве признака того, что окончилась запись и наступил момент для вынесения строки для записи в отчет.

Дополнительное чтение помещено в конец компонента ПОЛУЧЕНИЕ СТРОКИ ДЛЯ ЗАПИСИ, чтобы обеспечить правильное распознавание условия Конец-файла для ПФ.

Читатель заметит, что в программах PI и Р2 операторы «Открыть» и «Закрыть» написаны явно для каждого файла. Общие операторы «Открыть файлы» и «Закрыть файлы» не применяются. Причины такой скрупулезности станут понятными позднее, когда в этой же главе мы будем рассматривать способы эффективной реализации нескольких последовательных процессов.

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

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

Рис 7.11.«Типовое» граничное столкновение структур данных.

Из рис. 7.11 видно, что имеется соответствие между компонентами данных ВХОД и ВЫХОД, а также между компонентами ВХОДНАЯ ЗАПИСЬ и ВЫХОДНАЯ ЗАПИСЬ. Столкновение появляется из-за отсутствия соответствия между группой на входе и группой на выходе. Эти две группы не имеют соответствия, потому что количества элементов в группах не равны и даже несовместимы в том смысле, что ни одно из них не кратно другому. Однако наличие соответствия между входной записью и выходной записью предоставляет нам средства для разрешения столкновения структур.

Если мы распознали, что записи, как входная,так и выходная, являются общими элементами искомого процесса, то эта информация служит основой для разрешения столкновения структур. Мы определяем промежуточный файл (ПФ) как мост между сталкивающимися структурами. Промежуточный файл образуется простым повторением этих общих элементов. Теперь не составит большого труда распознать соответствия между двумя исходными структурами данных и вновь определенным промежуточным файлом. Такое установление соответствий показано на рис 7.12.

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

Рис. 7.12. Расширенные структуры данных для граничного столкновения, включающие промежуточный файл (ПФ).

Этот набор структур данных и соответствий порождает системную последовательность, показанную на рис. 7.13, и структуры программ, показанные на рис. 7.14.

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

Рис. 7.13. Системная блок-схема для разрешения граничного столкновения.

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


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