Реклама:

Операции 12, 13 и 14 тоже не вызывают проблем и легко распределяются. Операции 15 и 16 эквивалентны соответственно операциям И и 13 с той разницей, что данные пишутся в читаемый компьютером файл, а не в отчет. Поэтому эти две операции распределяются соответственно в такие же места, как уже распределенные операции 11 и 13.

Операция 17. Прибавить численность участка к сумме города, суммирует численность избирателей в отдельных участках для создания одной строки города. Поэтому данная операция должна выполняться один раз для каждой записи численности участка. По аналогичным причинам операции 18, 19 и 20 должны выполняться соответственно один раз для каждой строки города, один раз для каждой суммы округа и один раз для каждой суммы штата в конце соответствующих процессов, но до записи относящихся к ним сумм. (Когда информация пишется, она часто «теряется» для программы, поэтому если потребуется использовать такую информацию, то ее нужно сохранить до того, как она будет записываться в файл или в отчет.)

Операция 21. Чтение, распределяется согласно правилу предварительного чтения. Поэтому она помещается непосредственно после открытия входного файла и потом снова после обработки каждой записи. Иначе говоря, она помещается сразу после операций 3 и 4, а затем в рамках компонента ОБРАБОТКА ЧИСЛЕННОСТИ УЧАСТКА, в конце этой обработки, т.е. после операции 17.

Операциб 22. Установить сумма города значение 0, должна выполняться один раз для каждой строки города, в начале соответствующей обработки, чтобы гарантировать, что для каждой строки города суммарная численность установлена нулем до начала процесса сложения. Аналогично операции 23, 24 и 25 нужно разместить в соответствующие позиции обработок применительно к округу, штату и отчету. Мы уже широко обсуждали употребление операций 26, 27 и 28. Их нужно выполнять соответственно по одному разу на строку города, по одному разу на округ и по одному разу на штат, в начале относящихся к ним обработок. Затем, когда читается вторая запись в конкретной группе, эту запись можно проверить сравнением с запомненным значением, чтобы убедиться, является ли она частью той же группы или нет.

Когда распределены все операции, становится очевидным, что компонент ОБРАБОТКА СТРОКИ ГОРОДА, который раньше был повторением, теперь стал последовательностью операций 26 и 22, за которыми следует повторяемый компонент ОБРАБОТКА ЗАПИСИ ЧИСЛЕННОСТИ УЧАСТКА, который в свою очередь предшествует операциям 18, 11 и 15, выполняемым в указанном порядке. Поскольку компонент ОБРАБОТКА ЗАПИСИ ЧИСЛЕННОСТИ УЧАСТКА повторяется и поэтому может появиться более одного раза, ОБРАБОТКА СТРОКИ ГОРОДА не является корректной последовательностью. Следовательно, требуется включить новый компонент ОБРАБОТКА ТЕЛА ГОРОДА, как показано на рис. 3.10. Этот новый компонент теперь представляет собой повторение компонента ОБРАБОТКА СТРОКИ ЧИСЛЕННОСТИ УЧАСТКА и, разумеется, появляется корректным образом, только один раз.

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


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