Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции Турбо Паскаль.doc
Скачиваний:
17
Добавлен:
22.03.2016
Размер:
307.71 Кб
Скачать

Файловые типы данных

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

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

Для организации ввода-вывода в программе определяются специальные переменные файловых типов. Эти переменные являются представителями файлов в Паскаль-программе.

Длины файлов в программе не определены, но каждый файл имеет признак конца. Т.о. можно сказать, что файл – это бесконечный список значений одного и того же базового типа.

Файловый тип задается следующим образом:

Type

F = file of <тип элементов>;

Тогда

Var

Z:F; {Z – переменная файлового типа}

Или можно было сразу записать

Z: file of <тип элементов>;

Например:

Var

R: file of integer;

Тип элементов, составляющих файл, м.б. любым (и простым и сложным), кроме файлового и комбинированного типа, одним из полей которого является файл.

Type

Number = file of integer;

Wd = string [8];

Nw = file of Wd; {набор слов}

Book = record

Ch: integer;

Author: string [18];

Title: string [35];

publish: string [20];

year: 1900..1994;

end;

library = file of book;

symbol = set of ‘a’..’z’;

msimb = file of symbol; {алфавит}

var

in: number;

copir: nw;

catalog: ibrary;

azbuk: msimb;

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

Например: файл целых чисел имеет вид:

целое

целое

целое

текущий указатель

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

Все элементы файла считаются пронумерованными: начальный элемент имеет нулевой номер.

Операции над файлами

Операции над файлами полностью реализованы в виде стандартных процедур и функций. Их можно разделить на четыре основных группы:

  1. Установочные или завершающие операции;

  2. Ввод – вывод;

  3. Перемещения по файлу;

  4. Специальные операции.

Установочные и завершающие оперции

1. Процедура Assign - предназначена для установления связи между конкретным физическим файлом на магнитном носителе и переменной файлового типа, которая будет представителем этого файла в программе.

Вид процедуры:

Assign (var f : name: string);

где f – файловая переменная любого файлового типа;

name – выражение строкового типа, задающее имя файла на ВнУ. Имя файла задается с помощью пути:

‘диск: \ имя директории \ имя поддиректории \ …\ имя поддиректории \ имя файла’

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

Если name является пустой строкой, то f ассоциируется со стандартным файлом ввода- вывода (input, output).

Assign не должна использоваться для открытого файла. Имя файла должна состоять не более, чем из восьми символов, слов. Для данных обычно используется расширение dta.

Пример:

Assign(fp, ‘c:\gr221\spisok.dta');

После выполнения процедуры файловая переменная fp будет связана с файлом spisok.dta, расположенном на винчестерев каталоге gr221.

Иногда для ввода информации или ее вывода необходимо использовать специальное устройство. Для этого в качестве второго параметра в операторе assign (имя файла) используются имена, принятые в MS-DOS, такие как:

CON – консоль. Тогда для случая вывода информации помещается на экран дисплея, а в случае ввода информация воспринимается с клавиатуры.

LPT1, LPT2, LPT3 – печатающие устройства (допускается работа одновременно трех печатающих устройств). Устройств предназначены только для вывода информации.

PRN – синоним LPT1.

COM1, COM2 – последовательные коммуникационные порты. Смысл этих псевдофайлов определяется конкретными устройствами, подключенными к этим портам.

ADX – синоним СОМ1.

NUL – фиктивное, несуществующее устройство может использоваться для вывода информации в «никуда», когда в программе почему-либо нужно указать имя выходного файла, а информация, записываемая в него, не требуется.

2. Reset - процедура открывает файл, т.е. ищет файл на внешнем носителе, образует специальные буферы для обмена с файлом и устанавливает текущий указатель на начало файла ( на нулевой элемент).

Обращение:

Reset(f, [r] );

r – необязательная переменная типа word, только для нетипизированных файлов, задает размер записи, который будет использоваться для передачи данных по умолчанию.

f - файловая переменная , которая до обращения к процедуре reset уже должна быть связана с конкретным файлом процедурой assign. Если открывается несуществующий файл, то выдается ошибка.

3. Rewrite – процедура открывает файл. Причем, м.б. открыт и несуществующий файл. В этом случае процедура создает заданный файл. Если файл существует, то Rewrite его очищает.

Rewrite (f, [r]), r – для нетипизированного файла, задает размер записи.

  1. Функция Append (var f: text);

где f – файловая переменная, определенная процедурой assign.

Функция открывает существующий файл, текущий маркер (указатель) файла устанавливается в конце файла.

Если такой файл не определен процедурой assign, то выдается ошибка.

Если файл уже открыт, то он закрывается, а затем открывается вновь.

  1. Процедура Flush (var f:text);

где f – файловая переменная.

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

  1. Функция Close (var f); - закрывает файл, завершая действия с ним.

В этом случае внешний файл, ассоциированный файловой переменной f полностью закрывается, из буферной переменной передаются все значения и файл освобождается от системы обработки файлов DOS. Внутренние буферы при этом ликвидируются.