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

Сд типа последовательный файл.

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

Основные операции над СД типа последовательный файл:

  1. инициализация;

  2. обработка данных без их изменения;

  3. модификация файла.

Инициализация файла:

  1. присвоить файлу имя;

  2. открытие нового файла (формируется буфер, и указатель принимает значение 0);

  3. подготовка данных;

  4. запись компоненты (указатель перемещается на 1);

  5. закрытие файла (формируется маркер конца файла).

Обработка данных:

  1. задание имени файла;

  2. открыть сформированный файл (с помощью процедуры Reset);

  3. прочитать данные, сделать обработку;

  4. закрыть файл.

Модификация файла (добавление новых компонент, изменение существующих компонент):

  1. присвоить имя;

  2. открыть файл;

  3. установить указатель на следующую после последней записи компоненту (использовать для этого процедуру Seek (<файловая переменная>, FileSize(<файловая переменная>)));

  4. подготовка данных;

  5. запись;

  6. закрыть файл.

Сд типа файл прямого доступа.

Файл прямого доступа используется, если есть ограничение на время доступа к информации.

Основные операции над СД типа последовательный файл:

  1. инициализация;

  2. обработка данных;

  3. модификация..

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

Обработка данных:

  1. присвоить файлу имя;

  2. открыть сформированный файл;

  3. запросить ключ;

  4. установить указатель с использованием информации о нахождении ключа;

  5. прочитать;

  6. закрыть файл.

Модификация (изменение записи):

  1. присвоить имя;

  2. открыть сформированный файл, запросить ключ;

  3. подвести указатель к нужной записи;

  4. обработать компоненту;

  5. опять подвести указатель к нужной компоненте;

  6. записать;

  7. закрыть файл.

В более сложном случае:

  1. С помощью какого-либо алгоритма обработать ключ, вытекающий из какой-либо предметной области и вычислить адрес. Алгоритм определения места ключа в файле осуществляет отображение шифров на адреса. Это отображение 1:1. Сложность состоит в определении функции отображения Ф(к).

Пример: Имеем g=6, n=13, где g – номер класса (g=1, 2,…, 10), n – номер по списку в журнале (n=1, 2,…,25). K = 100g + n (n = k – 100g)

Ak = A0 + 25(g – 1) + n – 1 = A0 + 25g – 25 + n – 1 = A0 + 25g – 26 + k – 100g =  A0 – 75g – 26 + k = A0 – 75[k/100] – 26 + k = Ф(k) – функция отображения.

  1. Если функцию отображения Ф(k) найти не удается, то нужно провести индексирование. Функция Ф(k) строится с помощью таблицы.

ключ указатель

0

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

15

20

. .

. .

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

Использование справочника является единственной возможностью ускорения поиска в неупорядоченном файле. Последовательный перебор всех записей неупорядоченного файла заменяется быстрым поиском в упорядоченном справочнике. Размер таблицы меньше размера файла, следовательно таблицу удобнее сортировать. Таблица запоминается вместе с файлом. Отображение идет в отношении 1:1.

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

ключ указатель