Реклама:

Обработка лишней группы 1 повт пока не (заголово или запись из тела или КФ)

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

Обработка тела повт пока не (завершитель или КФ) Обработка лишней группы 2 повт пока не (КФ)

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

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

При принятии упомянутых выше решений относительно обработки данных были также сделаны некоторые предположения о трактовке некоторых возможных корректных данных. Например, допустим, что запись заголовка была смещена и оказалась после нескольких начальных хороших записей из тела. При использовании структуры программы с рис. 4.7 и рассмотренных условий выбора и завершения повторений смещенный заголовок будет считаться «плохой» записью в рамках тела файла. Но если мы хотим распознать запись заголовка как по-настоящему первую «хорошую» запись в файле независимо от того, где она помещена, то все «хорошие» записи, появляющиеся до заголовка, следует считать лишними.

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

----" зависит от того, какую обработку данных желает

ТИВНЫМатель программы. Иначе говоря, как и в других п<>льз0Вцикла разработки системы, существенно, что поль-частях в0влекается в процесс определения того, как '^трактоваться ошибки.

И наконец, при обработке ошибок критическим явля-я размещение операторов чтения в структуре програм-еТСЯ р|а рИС. 4.7 операторы чтения представлены буквами ^заключенными в окружности.

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


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