Организация внешних файлов и работа с ними

Под файлом понимают любой набор данных. Так, исходные данные в программе можно считать файлом. Файлом могут быть и результаты, и сама программа.

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

До сих пор мы рассматривали задачи, в которых исходные данные поступали с клавиатуры в память ЭВМ, а результаты выводились на экран. Таким образом, ни исходные данные, ни результаты вычислений не сохранялись. Всякий раз при выполнении одной и той же программы (особенно при ее отладке) приходится заново вводить исходные данные.

Создание внешних файлов данных для постоянного хранения на МД и возможность обрабатывать эти файлы в программе является эффективным средством программирования.

В PASKALe файл представляет собой последовательность элементов одного типа (простого или сложного). В отличие от массива длина файла, т. е. количество элементов, не задается, место элемента не определяется индексом и каждый элемент становится доступным только после перебора всех предыдущих элементов. Такие файлы называются последовательными. Необходимо заметить, что создание и обработка внешних файлов зависят как от конкретной реализации микроЭВМ, так и от версии PASKAL.

Во многих версиях PASKAL для микроЭВМ допускается хранение файлов на диске как символьных данных. При считывании файла в оперативную память машины символы файла преобразуются в тот тип данных, который объявлен в программе.

Если программа взаимодействует с внешними файлами, то файлы должны быть описаны в программе либо явно в разделе переменных VAR, либо с использованием раздела типов TYPE. Объявление файлов в разделе переменной имеет вид: VAR имя файла: FILE OF базовый тип; *** VAR FT: FILE OF CHAR; (*файл символьных данных*) FINP: FILE OF REAL; (*файл действительных данных*) M: FILE OF INTEGER; (*файл целых данных*) Файлы символьных данных называют текстовыми файлами. Описание текстового файла FILE OF CHAR Эквивалентно описанию TEXT. Поэтому в предыдущем примере текстовый файл FT можно объявить в виде: VAR FT: TEXT; Как было отмечено ранее, определение данных с исключением раздела описания типов TYPE делает программу более универсальной и упрощает отладку программы. Объявление файлов в этом случае имеет вид: TYPE имя типа = FILE OF базовый тип; VAR имя файла: имя типа; *** Для текстового файла FT описание имеет вид: TYPE T=FILE OF CHAR; VAR FT: T; Здесь Т — введенный тип данных.

Рассмотрим основные 3 вида взаимодействия программы с внешними файлами: чтение файла, запись файла, чтение и запись.

Чтение файла.

Под чтением файла понимается ввод данных из внешнего файла, находящегося на диске в оперативную память машины. Данные внешнего файла становятся доступными программе.

В программе необходимо выполнить следующие действия для чтения файла: открыть файл для чтения (RESET), ввести данные файла в программу (`READ), закрыть файл для чтения (CLOSE).

Внешний файл, из которого читаются данные, часто называют входным файлом.

Общая форма чтения файла имеет вид: RESET (имя 1) ;…

READ (имя 1, параметры) ;…

CLOSE (имя 1); Многоточием отмечено наличие каких-либо операторов программы.

В некоторых версиях PASCAL (в ДВК) оператор RESET может иметь несколько аргументов: RESET (имя 1; имя 2; имя 3; имя 4).

Здесь имя 1 — файловая переменная, которая в программе описана как файл. Она устанавливает связь с физическим именем файла; имя 2 — физическое (конкретное) имя файла, который хранится на диске; имя 3 — расширение физического имени файла. Можно указывать любые 3 символа, однако рекомендуется указывать DAT (данные). Аргумент можно не указывать, тогда по умолчанию будет DAT; имя 4 — переменная, которая автоматически получает значение, равное числу блоков, занимаемых внешним файлом на диске. Аргумент можно не указывать, но если он указан, то нужно объявить переменную как целого типа.

Оператор ввода для чтения файла обладает всеми свойствами обычного оператора ввода READ. В качестве параметров могут быть переменные; каждая переменная получает значение одного элемента, считанного из внешнего файла. Переменные должны быть описаны в программе соответственно своему типу.

Т. к. по определению число элементов файла не задается, то в PASKALe введен признак конца файла. Стандартная встроенная функция EOF (имя файла) исполняется для определения, достигнут ли конец файла, и ложное — в противном случае.

Функцию EOF можно использовать в логическом выражении в частности, в операции цикла, например: WHILE NOT EOF (F1) DO BEGIN…

END Пока не достигнут конец файла F1, повторяется циклическая часть программы, заключенная в операторные скобки begin-end.



Теги: программе