|
СД типа файл прямого доступа.Date: 2015-10-07; view: 469. СД типа последовательный файл.
Файл последовательного доступа используется для решения задач, использующих поочередное обращение к данным, когда нет требования. Основные операции над СД типа последовательный файл: 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) – функция отображения. 2) Если функцию отображения Ф(k) найти не удается, то нужно провести индексирование. Функция Ф(k) строится с помощью таблицы.
Когда добавляется новая запись, то она помещается в конец файла, для нее формируется элемент в справочнике и осуществляется включение элемента в упорядоченный справочник. При удалении элемента, все остальные элементы заполняют пустые места, полученные при удалении. Использование справочника является единственной возможностью ускорения поиска в неупорядоченном файле. Последовательный перебор всех записей неупорядоченного файла заменяется быстрым поиском в упорядоченном справочнике. Размер таблицы меньше размера файла, следовательно таблицу удобнее сортировать. Таблица запоминается вместе с файлом. Отображение идет в отношении 1:1. Следует заметить, что сложность можно понизить, если использовать динамический справочник, обрабатывая данные в динамической памяти:
|