Реклама:

На рис. 4.9 П031, П032 и т. д. указывают позиции, или места в буфере многих записей. В каждом случае Е означает указатель Конца-файла, который получит некоторое согласованное значение, когда появится маркер Конца-файла. Этот указатель будет перемещаться «вверх» по буферу вместе с соответствующей ему записью.

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

Рис. 4.9. Множественная предварительная буферизация.

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

Удаляется содержимое из П031 Помещается содержимое из П032 в П031 Помещается содержимое из ПОЗЗ в П032 Помещается содержимое из П034 в ПОЗЗ Читается следующая запись (Р5) в П034

Эта процедура будет производиться при каждом чтении записи в программе. При использовании метода множественного предварительного чтения нужно предусмотреть особое действие при появлении Конца-файла. В этом месте программы часть «Е» последней позиции будет установлена таким образом, чтобы указывать Конец-файла. Но больше не нужно читать в буфер никаких записей, несмотря на то, что процесс должен продолжать перемещать указатель КФ «вверх» по буферу до того места, где он будет опознан программой й тем самым произойдет инициирование завершения. Итак, в этом случае инструкция чтения может оказаться несколько усложненной, например:

Если указатель КФ установлен, то поместить пробелы в П034, в противном случае читать следующую запись в П034, при КФ установить Е в П034 значение 1 и установить указатель КФ.

4.6. Непредсказуемые сложные ошибки

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

В такой ситуации метод множественного предварительного чтения мало эффективен, потому что не определено число подлежащих чтению записей.

Эта проблема подробно исследуется в гл. 5, в результате получаем метод, известный под названием «откат» («бектрекинг»).

4.7. Заключение

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

Глава 5

Обработка непредсказуемых ошибок в данных и ситуаций (метод отката)

«Вы способны предсказывать события только после того, как они произойдут»^

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


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