Реклама:

Итак, в существовавшей до сих пор структуре файла с рис. 4.5 предусмотрены ошибки в содержании в рамках ТЕЛА файла. Но как быть, если ошибки в содержании могут возникать где-то в другом месте? Единственными другими местами в файле, где необходимо распознавать ошибки в содержании, являются РЕАЛЬНЫЙ ЗАГОЛОВОК и РЕАЛЬНЫЙ ЗАВЕРШИТЕЛЬ. Даже если эти появления «реальные», они вполне могут оказаться ошибочными в содержании. Поэтому на рис. 4.6 показана полная структура файла, в которой приняты во внимание ошибки пропуска, вставления и содержания, где бы они ни возникали в данных.

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

Рис. 4.5. Структура файла, допускающая ошибки пропуска и вставления.

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

Рис. 4.6. Структура файла, допускающая ошибки пропуска, вставления и содержания.

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

Рис. 4.7. Структура программы редактирования.

^а рис. 4.6 мы просто добавили выбор ХОРОШИЙ или тикОЧНЫЙ применительно к компонентам РЕАЛЬНЫЙ ЗАГОЛОВОК и РЕАЛЬНЫЙ ЗАВЕРШИТЕЛЬ.

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

4.3, несмотря на наличие в пределах файла ошибок пропуска, вставления и содержания. Предположим, что структура требуемых выходных данных такова, как на рис. 4 6, а входные данные имеют структуру, показанную на рис. 4.3. Ясно, что структура программы тоже будет соответствовать рис. 4.6, поскольку входная структура полностью «содержится» в структуре выходных данных. Таким образом, слияние этих двух структур по линиям соответствий создает структуру программы, представленную на рис. 4.7.

Программная обработка ошибок

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

Прежде всего нужно рассмотреть компонент ОБРАБОТКА ЛИШНЕЙ ГРУППЫ 1. Чтобы программа распознавала конец этой группы, нужно определить различные возможности «следующей» записи. Для этого при размещении операторов чтения будет использоваться прием «предварительного чтения».

Следующей записью мог бы оказаться ЗАГОЛОВОК. Но заголовок может и отсутствовать, так что, возможно, следующей будет запись из тела файла. Однако может не найтись и записей тела файла, и поэтому следующей записью мог бы быть ЗАВЕРШИТЕЛЬ. А что если опущен и завершитель? Тогда следующей окажется первая лишняя запись из лишней группы 2. Но если дело обстоит так, то весь файл сводится к одной большой лишней группе, завершаемой маркером Конец-файла. Итак, в этом последнем случае «следующей» записью, обозначающей окончание лишней группы 1, служит Конец-файла.

Поэтому оператор структурированного изложения, включающий условие завершения для обработки пов^го^" лишней группы 1, имеет вид 11,1


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