Реклама:

(Если читатель не любит пользоваться «флагами», можно применить слово «вымпел». )

Для выбранной части ОБРАБОТКА СОПОСТАВЛЯЕМЫХ А + В условие состоит в равенстве идентификаторов клиентов из обеих записей во входных буферах двух файлов А и В. Для части ОБРАБОТКА НЕСОПОСТАВЛЯЕМОй А идентификатор клиента из записи А во входном буфере должен быть численно меньше, чем идентификатор из записи В в буфере. (Здесь предполагается, что записи А и В отсортированы в порядке возрастания идентификаторов клиентов и что эти идентификаторы являются числами или же могут быть преобразованы в числа. )

И наоборот, условие для выбранной части ОБРАБОТКА НЕСОПОСТАВЛЯЕМОЙ В состоит в том, что идентификатор клиента из записи В во входном буфере численно меньше, чем идентификатор из записи А в буфере.

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

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

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

ОБРАБОТКА ЗАПИСИ выб услов (запись А =

запись В)

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

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

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

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

запись А) ОБРАБОТКА НЕСОПОСТАВЛЯЕМОЙ В поел

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

Читать В

ОБРАБОТКА НЕСОПОСТАВЛЯЕМОЙ В конец ОБРАБОТКА,ЗАПИСИ конец

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

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

СТОП

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

Часто, особенно при сопровождении программы и при ее фиксации в случае возникновения какой-либо проблемы, более полезной оказывается способность определять конкретно, какое значение ключа записи обрабатывается в любой данный момент во время выполнения программы. Как нам модифицировать эту программу для того, чтобы упомянутый ключ был все время явно определен? Что в любом случае представляет собой это значение ключа?

Итак, после того, как были выполнены два первых предварительных чтения, во входных буферах всегда имеются две записи. На некотором этапе вместо двух записей там будут находиться один или два признака Конца-файла. Значение ключа, находящееся в обработке в любой данный момент, будет минимумом из двух значений, представляемых двумя записями. Можно выразить это значение ключа как Min (А, В). Если нужно явно хранить данное значение в программе, то можно .описать переменную (адрес памяти) с именем КЛЮЧ и в подходящие моменты запоминать в ней значение Min (А, В).

Но что это за подходящие моменты?

Всякий раз, когда изменились значения во входном буфере, вероятно, изменяется и значение Min (А, В). Поэтому операция перезаписи ключа должна появляться после выполнения каждого чтения. Если мы снова обратимся к структуре программы упорядочения, то место для операции перезаписи должно быть отведено так, как показано на рис. 6.5.

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


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