Лекция: По методу доступа к элементам файла
а) файл последовательного доступа – доступ к элементам обеспечивается в такой же последовательности, в какой они записывались;
б) файл прямого доступа – доступ к элементу осуществляется по адресу элемента.
В программах файлы представляются файловыми переменами определенного типа. В качестве внешнего носителя информации могут служить разного рода диски (жестки, гибкие, магнитооптические, компакт-диски, zip- и jaz-диски и т.д.), а также магнитные ленты. Также, в качестве этого “условного” внешнего носителя могут рассматриваться виртуальные диски, которые можно
Рисунок 1 – Классификация файлов
создавать (с помощью команды VDISK) в оперативной памяти компьютеров, работающих под управлением операционной системы MSDOS.
Кроме “долговременности” у файлов имеется ещё одна отличительная особенность: их неограниченный объём (или длина). Если для каждого из прочих структурированных типов всегда точно определенно, сколько элементов содержит, то или иное значение, то сколько элементов должно быть в файле, при объявлении файлового типа не указывается. Максимальная длина файла ограничивается только свободным местом на диске, и это является основным отличием файлов от массивов.
Каждый файл на диске имеет обозначение, которое состоит из двух частей: имени и расширения. В имени файла может быть от 1 до 8 символов. Расширение начинается с точки, за которой следует от 1 до 3 символов.
Пример: autotext.exe
Com.pas
Имя файла – это любое выражение строкового типа, которое строится по правилам определения имени в MSDOS.
Любой файл имеет три характерных особенности:
1. у него есть имя, что даёт возможность программе работать сразу с несколькими файлами;
2. файл содержит компоненты одного типа. Таким компонентом может быть любой тип Паскаля, кроме файлового. Например, допускается файл записи или файл строк, но нельзя создать “файл файлов”;
3. длина вновь создаваемого файла никак не оговаривается при его объявлении и ограничивается только емкостью устройств внешней памяти.
Всё это позволяет считать файлы одной из фундаментальных структур данных в Паскале.
Пример объявления файловых переменных:
type
arrays: array of integer;
Date = record
Day: 1..31; { число }
Month:1..12; { месяц }
Year: 1900..2000 { год }
end;
var
F1: file;
F2: text; Пять Ф.П.
F3: file of integer; F1 – нетипизированный файл
F4: file of arrays; F2 – текстовый файл
F5: file of date; F3, F4, F5 – типизирвоанный файлы
Если среди типизированных файлов элементы F3 относятся к стандартному типу (Integer), то элементы файлов F4 и F5 – к типам, объявленным пользователем (тип Array — массив целых чисел, тип Date — запись).
В файле в каждый момент может быть доступен только один элемент. Доступ к элементам файла обычно осуществляется последовательно, путём их поочерёдного перебора. Иными словами, для того чтобы “добраться” до последнего элемента, прежде придётся обработать (считать или записать) все предыдущие. Для типизированных и не типизированных файлов возможен переход к определённому элементу.
Допустимость применения методов доступа к каждой разновидности файлов по типу показано на рисунке 2.
Рисунок 2 – Применение методов доступа к файлам
Файл можно представить как потенциально бесконечный список значений одного и того же (базового) типа. Все элементы файла считаются пронумерованными, начальный элемент имеет нулевой номер.
Эл-т 1 Эл-т 2 Эл-т 3 …………..
Текущий указатель
В любой момент времени программе доступен только один элемент файла, на который ссылается текущий указатель.
Как правило, все действия с файлом (чтение из файла, запись в файл) производятся поэлементно, причём в этих действиях участвует тот элемент файла, который обозначает текущим показателем. В результате совершения операции текущий указатель может перемещаться, настраиваясь на тот или иной элемент файла.