- •Тема 16. Структурированные типы данных
- •16.1. Строки и средства их обработки
- •16.1.1. Процедуры и функции типа String
- •16.2. Записи
- •16.2.1. Записи с вариантами
- •16.2.2. Оператор присоединения
- •16.3. Множества
- •16.4.Файлы
- •16.4.1. Текстовые файлы
- •16.4.2. Компонентные файлы
- •16.4.3. Бестиповые файлы
- •16.4.4. Последовательный и прямой доступ
- •16.4.5. Основные задачи обработки файлов
- •16.4.6. Сортировка файлов
- •16.4.7. Задача корректировки файла
16.4.7. Задача корректировки файла
Задача корректировки файла является одной из основных задач обработки файлов. Рассмотрим ее формулировку.
Исходные данные задачи – корректируемый файл F, файл корректировок G. Результат – откорректированный файл H. Будем считать, что файл F имеет тип OurFile. Тогда файл H имеет тот же тип. Файл корректировок G состоит из записей с вариантами:
Type
CorСomponent = record
Key: Integer;
job: (Include, Change, Exclude); {включить, изменить, исключить}
Case job of
Include, Change: Data: String[20]; Exclude: ()
end
End;
CorFile = File of CorComponent;
Var G : CorFile;
Это означает, что файл корректировок содержит компоненты, которые нужно включить в основной файл, компоненты, которые нужно исключить из файла и компоненты, содержание которых нужно изменить (с учетом содержания как основного файла, так и файла корректировок).
Файл F предполагается упорядоченным (по ключу), а файл G, вообще говоря, нет. Результатом должен быть упорядоченный откорректированный файл H.
Решение задачи обычно содержит два этапа:
а) Сортировка файла корректировок G по ключу;
б) Обобщенное слияние файлов F, G в H.
На практике файл G может быть небольшим. В этом случае применяют внутреннюю сортировку. Обобщенный алгоритм слияния производит все три варианта обработки файла F за один прогон.
В заключение заметим, что современные ЭВМ редко активно используют внешние носители с последовательным доступом в решениях задач управления базами данных, поэтому структуры данных, в которых хранится информация, как правило, более сложны, чем последовательные файлы.