Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Остатки лекций по ИиП.doc
Скачиваний:
2
Добавлен:
21.09.2019
Размер:
55.81 Кб
Скачать

7. Типизированные файлы с прямым доступом.

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

Прямой доступ предполагает непосредственный выход на нужную компоненту в файле. Для этого необходимо только увязать номер компоненты со значением реквизита-признака, по которому ведется поиск. Этот признак (или их совокупность) называют ключом поиска.

Чтобы реализовать прямой доступ к компонентам файла, необходимо его при создании сначала инициализировать. Т.е. осуществить его разметку путем занесения в физический файл фиктивных компонент (записей) с пустыми или нулевыми значениями полей. Чтобы облегчить работу с подобным файлом, рекомендуется отдельное поле выделить для указания номера компоненты (записи), который в дальнейшем будет выполнять функцию ключа поиска.

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

SEEK(<имя файловой переменной>,<номер компоненты (записи) >);

WRITE(<имя файловой переменной >,<имя компоненты (записи)>);

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

Созданный таким образом файл можно обрабатывать как последовательным, так и прямым доступом.

При обработке информации в режиме прямого доступа чтение нужной компоненты (записи) по аналогии выполняется парой стандартных процедур SEEK и READ:

SEEK(<имя файловой переменной>,<номер компоненты (записи) >);

READ(<имя файловой переменной >,<имя компоненты (записи)>);

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

Замечание: файл с прямым доступом обеспечивает очень быстрый

выход на нужную компоненту. Однако он получается более

длинным, чем аналогичный файл с последовательным

доступом, т.к. включает компоненты с полезной

информацией и фиктивные. Поэтому использовать его

следует осторожно и тогда, когда количество фиктивных

компонент получается существенно меньше тех, которые

содержат конкретную информацию для обработки.

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

- добавление в конец файла (обычным порядком);

- обновление (часть полей в записи меняет свое содержание);

- замена старых компонент на новые (меняется содержимое всей

компоненты);

- вставка новых компонент в середину файла (в нужном месте

фиктивные компоненты наполняются полезной информацией и

становятся новыми реальными компонентами);

- удаление (ненужные компоненты с полезной информацией

переводятся в статус фиктивных, т.е. заполняются пробелами и

нулями).