Реклама:

Сразу очевидно, что имеется непосредственная взаимосвязь между обеими структурами. Компонент СУММА СТРОКИ из структуры ВЫХОД появляется точно столько раз, сколько раз компонент СТРОКА появляется в (входной) структуре ТАБЛИЦА. К тому же компоненты СУММА СТРОКИ появляются в том же порядке, что и соответствующие компоненты СТРОКА. На самом деле для того, чтобы наша будущая программа вообще работала, все строки должны обрабатываться по очереди, порождая очередные элементы СУММА СТРОКИ. Возможно, в другой раз понадобится изменить порядок компонентов СУММА СТРОКИ, но теперь мы будем рассматривать простой случай, когда выходные и входные данные располагаются в одинаковом порядке.

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

Рис. 2.24. Таблица: структуры входных и выходных данных.

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

С применением псевдоязыка программирования высокого уровня наша программа таблицы выглядела бы так:

ПРОГРАММА ТАБЛИЦЫ НАЧАЛО

ДЛЯ КАЖДОЙ СТРОКИ:

ЧИТАТЬ СТРОКУ СО ВХОДА СУММИРОВАТЬ ВСЕ ЭЛЕМЕНТЫ ЗАПИСАТЬ СУММУ НА ВЫХОД

КОНЕЦ

Ясно, что эта простая программа представляет собой повторение обработки каждой строки в таблице. На рис. 2.25 показан упрощенный вариант структуры программы.

Теперь из проведенного рассмотрения структур входных и выходных данных должно быть ясно видно, что в нашей простой структуре ПРОГРАММА ТАБЛИЦЫ компонент ОБРАБОТКА СТРОКИ в некотором смысле соответствует компонентам СТРОКА и СУММА СТРОКИ, которые в свою очередь соответствуют друг другу. Это тройственное соответствие иллюстрируется на рис. 2.26.

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

Выход

Рис. 2.26. Соответствие данных и программы.

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

Как можно было вывести эту структуру простой программы из исходных структур данных? Снова посмотрим на эти структуры. На рис. 2.27 воспроизводятся структуры входных и выходных данных и добавлены линии соответствия.

При рассмотрении соответствующих друг другу компонентов данных выявляется еще одна их важная характеристика. Каждая пара соответствующих компонентов данных образует основу одного компонента программы. Например, компонент ПРОГРАММА ТАБЛИЦЫ можно было бы считать компонентом ОБРАБОТКА ТАБЛИЦЫ ДЛЯ СОЗДАНИЯ ВЫХОДА. Аналогично ОБРАБОТКА СТРОКИ может быть переименована в КОМПОНЕНТ ОБРАБОТКА СТРОКИ ДЛЯ ПОЛУЧЕНИЯ СУММЫ СТРОКИ. Итак, простую структуру ПРОГРАММА ТАБЛИЦЫ можно создать, «сливая» соответствующие компоненты структур входных и выходных данных. Очевидно, что слияние двух повторяемых компонентов данных сформирует один повторяемый компонент программы. Немного углубимся в этот пример. Предположим, что результат нужно получить в виде отчета с заголовком и завершителем. Структуры данных и соответствия между ними таковы, как на рис. 2.28.


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