Файлы входных данных
При большом объеме входных данных ввод с клавиатуры становится неэффективным, так как любые ошибки связаны с повторным вводом всех данных. Целесообразно для входных данных создать отдельный файл и хранить его на диске. В программе в этом случае с помощью специальных процедур организуется чтение входных данных из файла. Имя файла задается по тем же правилам, которые определены в MS DOS, только указывается стандартное расширение .DAT. Для создания файла данных можно воспользоваться любым текстовым редактором. Если файл небольшого объема, то удобно использовать редактор NC. Для вызова редактора NC надо нажать клавиши [<Shift>+ <F4>].
Файловая переменная
В программе файлу соответствует переменная файлового типа. В зависимости от способа объявления файловой переменной можно выделить три вида файлов.
- Типизированные файлы, которые задаются описанием:
<файловая переменная>: FILE OF <тип компонент файла>;
Например, если компоненты файла имеют тип записи, то в разделе описания переменных можно объявить файл следующим образом:
Var
f: file of Zap;
f – файловая переменная.
- Нетипизированные файлы задаются типом FILE, например:
Var
f: file;
Для нетипизированных файлов тип компонент не указывается.
- Текстовые файлы задаются типом TEXT, например:
Var
f: text;
Текстовый файл представляет собой совокупность строк переменной длины. В конце каждой строки после нажатия клавиши <Enter> формируется специальный признак EOLN (End Of Line). Число строк в текстовом файле может быть произвольным. В конце файла автоматически формируется признак EOF (End Of File).
Для проверки окончания чтения файла используется стандартная логическая функция EOF(f).
В дальнейшем ограничимся рассмотрением только текстовых файлов.
Доступ к файлам данных
Файл данных становится доступным программе после выполнения стандартной процедуры открытия файла:
ASSIGN (<файловая переменная>, <имя файла>);
При вызове данной процедуры файловая переменная, объявленная в программе, связывается с именем файла, хранящимся на диске.
<имя файла> - либо строка, либо переменная строкового типа.
Например, если файл входных данных экзаменационной ведомости хранится на диске с именем Wed.dat, то процедуру открытия файла можно записать в виде:
ASSIGN(f, ‘Wed.dat’);
Инициация файла
Инициировать файл
означает указать направление передачи данных. В Турбо Паскале можно открыть файл для чтения данных из файла или для записи информации в файл. Если файл является входным, то он инициируется для чтения стандартной процедурой:
RESET(<файловая переменная>);
При выполнении данной процедуры специальный указатель строк устанавливается на начало файла, то есть подготавливается к чтению первой строки.
Чтение данных из файла
Чтение файла осуществляется построчно с помощью оператора READLN, в котором указываются файловая переменная и список переменных ввода.
Пример. Пусть файл данных экзаменационной ведомости состоит из строк вида:
4 5 5 Андреева С.В.
Оператор: Readln(f, str.m, str.inf, str.h, str.fam);
читает из файла строку и присваивает данные полям str.
Заметим, что поле fam записывается в конце строки. Это связано с тем, что при описании типа поля fam (string) не указан его максимальный размер, и, следовательно, конец поля должен быть зафиксирован клавишей <Enter>.