Реклама:

В ситуации сопоставимости записей А и В условие будет иметь вид

Ключ = Запись А = Запись В

Если либо запись А, либо запись В оказывается не-сопоставляемой, то идентификатор несопоставляемой записи будет равен ключу; поэтому эти два условия выглядят соответственно так:

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

Рис. 6.5. Внесение операции перезаписи ключа.

Если операция перезаписи нового ключа записывается в виде

Установить ключ = Мин ( А, В ), то новое структурированное изложение является следующим:

УПОРЯДОЧЕНИЕ поел

Открыть файлы, Читать А, Читать В Установить Ключ = Мин (А, В) ** ТЕЛО УПОРЯДОЧЕНИЯ повт пока не КФ для файла А и файла В

ОБРАБОТКА ЗАПИСИ повт

ОБРАБОТКА ТЕЛА ЗАПИСИ выб услов (ключ = **

запись А = запись В) ОБРАБОТКА СОПОСТАВЛЯЕМЫХ А + В посд Писать обновленную А-запись Читать А Читать В

ОБРАБОТКА СОПОСТАВЛЯЕМЫХ А + В конец ОБРАБОТКА ТЕЛА ЗАПИСИ или услов (запись А **

= ключ) ** ОБРАБОТКА НЕС0П0СТАВЛЯЕМ0И А поел Писать неизмененную А-запись Читать А

ОБРАБОТКА НЕС0П0СТАВЛЯЕМ0И А конец ОБРАБОТКА ТЕЛА ЗАПИСИ или услов (запись В **

= ключ) ** ОБРАБОТКА НЕС0П0СТАВЛЯЕМ0И В поел

Писать новую А-запись с подробностями первой транзакции

Читать В

ОБРАБОТКА НЕСОПОСТАВЛЯЕМОИ В конец ОБРАБОТКА ТЕЛА ЗАПИСИ конец ** Установить Ключ = Мин (А, В) **

ОБРАБОТКА ЗАПИСИ конец

ТЕЛО УПОРЯДОЧЕНИЯ конец

Закрыть файлы

СТОП

УПОРЯДОЧЕНИЕ конец

(Здесь двумя звездочками отмечены измененные или новые строки.)

Это структурированное изложение можно было бы слегка оптимизировать, но не усилить, исключив обе операции «Установить Ключ = Min (А, В)» и заменив их одним таким оператором непосредственно вслед за оператором «ТЕЛО УПОРЯДОЧЕНИЯ поел».

Предположим теперь, что в качестве выходных данных нам нужны не только список новых и обновленных А-запи-сей, но также и все возможные значения ключа, которые не были использованы ни в файле А, ни в файле В. Допустим, что существует 999 возможных значений ключа, начиная с числа 1 и с приращениями 1. В этих условиях значение ключа уже не устанавливается как минимум двух ключей входных записей в буфере, а должно начинаться с 1 и увеличиваться каждый раз на 1. Вследствие этого возникнет новая ситуация выбора в рамках процесса, когнекоторого конкретного значения ключа не сущест-Да Соответствующей записи ни в файле А, ни в файле В. В^ЄТ структура программы выглядит теперь так, как по-казано на рис. 6.6.

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

Рис. 6.6. Структура программы упорядочения, допускающая отсутствующие значения ключа.

Теперь у нас появилась новая операция с номером 9, которая обеспечивает запись в отчет значения неиспользуемого ключа: Писать неиспользованное значение ключа.

Кроме того, нужно изменить операции перезаписи ключа. Первая из этих операций должна стать такой: Установить ключ = 1, а вторая - такой: Установить ключ = ключ + 1.

Поскольку оба файла А и В, вероятно, окончатся задолго до того, как достигнуто максимальное значение ключа 999, условие завершения повторения ТЕЛО УПОРЯДОЧЕНИЯ следует заменить на нечто в таком роде:

пока не ключ больше или равен 1000

Этой версии программы упорядочения может соответствовать следующее структурированное изложение:


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