Краткие теоретические сведения. общие сведения о файловых структурах данных

ЦЕЛЬ РАБОТЫ

Усвоение студентами приемов программирования работы с файлами и обработки файловой информации. Закрепление навыков разработки схем программ, приобретенных на предыдущей лабораторной работе.

КРАТКИЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ. ОБЩИЕ СВЕДЕНИЯ О ФАЙЛОВЫХ СТРУКТУРАХ ДАННЫХ

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

Иными словами, файл можно определить, как конечное множество записей, расположенных на некотором устройстве внешней памяти /6/. Элементами файла являются записи. На рисунке 1 пояснено, как выделяются элементы иерархии файл – запись – поле записи.

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

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

 
 

Рисунок 1 – Выделение элементов иерархии файл-запись-поле записи в памяти ЭВМ

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

 
 

Межблочный промежуток

Рисунок 2 – Сблокированные логические записи

Записи из файлов на гибком магнитном диске можно обрабатывать последовательно (от первой до последней записи) или в произвольном порядке (такой доступ называют прямым).

При последовательном доступе осуществляется автоматическое блокирование и деблокирование логических записей. Для этого в оперативной памяти создаются одна или несколько буферных областей, в которых и происходит блокирование и деблокирование записей. Управление вводом-выводом осуществляется каналами ввода – вывода параллельно (одновременно) с выполнением программы. При этом ввод-вывод управляется операционной системой (ОС), и ОС “знает”, какая очередная запись может потребоваться программе обработки, поэтому может подготовить требуемую запись заранее, что увеличивает скорость обработки.

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

Наиболее просто в программе реализовать последовательную обработку записей файла. Все, что нужно для этого – задать способ связи программы с файлом, а также методы, используемые программой при чтении содержимого файла, записи в файл, а также при создании нового файла и записи в него. Далее мы рассмотрим, как C++ работает с явным вводом/выводом в программе.

Наши рекомендации