|
Организация внешних файлов
понимают любой набор данных. Так, исходные данные в программе
можно считать файлом. Файлом могут быть и результаты, и сама программа. В
практике программирования часто встречаются задачи, при решении которых можно
хранить обрабатываемые данные на внешнем носителе. В этом случае данные
оформляются в виде До сих пор мы рассматривали задачи, в которых исходные
данные поступали с клавиатуры в память ЭВМ, а результаты выводились на экран.
Таким образом, ни исходные данные, ни результаты вычислений не сохранялись.
Всякий раз при выполнении одной и той же программы (особенно при ее отладке)
приходится заново вводить исходные данные. Создание внешних файлов данных для
постоянного хранения на МД и возможность обрабатывать эти файлы в программе
является эффективным средством программирования. В PASCALe файл представляет
собой последовательность элементов одного типа (простого или сложного). В
отличие от массива длина файла, т.е. количество элементов, не задается, место
элемента не определяется индексом и каждый элемент становится доступным только
. Необходимо заметить, что создание и обработка внешних
файлов зависят как от конкретной реализации микроЭВМ, так и от версии
PASCAL. Во многих версиях PASCAL для микроЭВМ допускается хранение файлов на
диске как символьных данных. При считывании файла в оперативную память машины
символы файла преобразуются в тот тип данных, который объявлен в
программе. Если программа взаимодействует с внешними файлами, то файлы должны
быть описаны в программе либо явно в разделе переменных VAR, либо с
использованием раздела типов TYPE. Объявление файлов в разделе переменной имеет
вид: FINP:FILE OF REAL; (*файл действительных данных*) . Описание текстового файла Эквивалентно описанию TEXT. Поэтому в предыдущем примере текстовый
файл FT можно объявить в виде: Как было отмечено ранее,
определение данных с исключением раздела описания типов TYPE делает программу
более универсальной и упрощает отладку программы. Объявление файлов в этом
случае имеет вид: Для текстового файла FT описание имеет вид: Рассмотрим
основные 3 вида взаимодействия программы с внешними файлами: чтение файла,
запись файла, чтение и запись. понимается ввод данных из внешнего файла, находящегося на диске в
оперативную память машины. Данные внешнего файла становятся доступными
программе. В программе необходимо выполнить следующие действия для чтения
файла: открыть файл для чтения (RESET), ввести данные файла в программу(`READ),
закрыть файл для чтения (CLOSE). RESET
(имя 1); В некоторых версиях PASCAL (в ДВК)
оператор RESET может иметь несколько аргументов: - файловая переменная, которая в программе
описана как файл. Она устанавливает связь с физическим именем файла; - расширение физического имени файла. Можно указыватьлюбые 3
символа, однако рекомендуется указывать DAT(данные). Аргумент можно не
указывать, тогда по умолчанию будет DAT; - переменная, которая
автоматически получает значение, равное числу блоков, занимаемых внешним файлом
на диске. Аргумент можно не указывать, но если он указан, то нужно объявить
переменную как целого типа. Оператор ввода для чтения файла обладает всеми
свойствами обычного оператора ввода READ. В качестве параметров могут быть
переменные; каждая переменная получает значение одного элемента, считанного из
внешнего файла. Переменные должны быть описаны в программе соответственно своему
типу. Т.к. по определению число элементов файла не задается, то в PASCALe
введен признак конца файла. Стандартная встроенная функция EOF(имя файла)
исполняется для определения, достигнут ли конец файла, и ложное - в противном
случае. WHILE NOT EOF (F1) DO Пока не достигнут конец файла F1, повторяется циклическая
часть программы, заключенная в операторные скобки begin-end. WHILE NOT EOLN (имя 1) DO, *** 1.1. Пусть на диске имеется файл с именем
D1.DAT, в котором записана последовательность действительных чисел в нескольких
строках: Необходимо эти
данные сделать доступными программе и вычислить их сумму. X; Real; (*число*) WHILE NOT EOLN
(F1) DO end. В программе 1.1: F1 - файловая переменная, с помощью которой
устанавливается связь с файлом D1.DAT. Физическое имя файла указывается только
при открытии файла в операторе RESET. В остальных операторах при необходимости
работы с файлом указывается файловая переменная F1. Оператор READ (F1,X)
применяется для считывания данных (по одному) из внешних файлов в переменной Х.
После оператора CLOSE (F1) данные файла становятся недоступными программе.
Значение вычисленной суммы выводится на экран дисплея. понимается запись результатов программы из
оперативной памяти ЭВМ на диск, т.е. создание нового файла на внешнем
устройстве. В программе необходимо выполнить следующие действия для записи
файла: Внешний файл, в котором записываются данные из
программы, часто называют входными. Оператор вывода для записи
данных обладает всеми свойствами обычного оператора WRITE. Если оператор вывода
имеет вид: То данные записываются в файл, хранящиеся
на диске. требуется записать в файл с именем D2.DAN строку в
виде А=510 В=16.2. L2 : Integer; (*длина выходного файла*) L2 :
=1; A : = 510; B : = 16.2; Все значения переменных указаны
в комментариях программы. REWRITE открывает файл для записи в него данных.
Полное имя файла - D2.DAN. WRITE выводит строку символов в соответствии с
форматом. CLOSE закрывает файл для записи. Поскольку для записи одной строки
вполне достаточен 1 блок, то переменной L2 присваиваем значение 1. Действия файла могут быть разнообразными: иногда
требуется читать данные из одного файла и записывать их в другие, иногда -
корректировать один и тот же файл. В программе по мере необходимости указываются
операторы для чтения и записи файлов, а так же для их закрытия. T1, T2 : T; (*файловая переменная*) RESET(T1, 'FINP'); (*открытие
файла для чтения*) . . . . . . . . . . . . .
CLOSE (T2); (*закрытие файла для записи*) При исполнении последовательных файлов нельзя
одновременно открывать один и тот же файл для чтения и записи. Если появляется
необходимость работы с одним файлом и для чтения, и для записи, то нужно сначала
открыть файл, обработать его данные и закрыть. Затем открыть этот же файл заново
для другой цели, обработать данные и закрыть файл.
| |