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

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

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

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

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

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

            В 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.

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

 

               WHILE NOT EOLN (имя 1) DO,

а для перехода на новую строку файла — оператор READLN (имя 1).

*** 1.1. Пусть на диске имеется файл с именем D1.DAT, в котором записанапоследовательность действительных чисел в нескольких строках:

                    0.54    1.7        4.56   0.2

                    1.32    1.524    18      0.92

56<span Times New Roman"">             

 

Необходимо эти данные сделать доступными программе ивычислить их сумму.

Program  A21(INPUT, OUTPUT);

VAR

F1:TEXT; (*файловаяпеременная*)

L1:Integer;(*длина файла*)

X; Real;(*число*)

SUM: Real;(*сумма*)

Begin

    SUM: = 0;

    RESET (F1; D1; DAT; L1)

    WHILE NOT EOF (F1) DO

Begin

WHILE NOTEOLN (F1) DO

Begin

READ (F1,X);

SUM: = SUM+ X

end;

Readln(F1)

end;

WRITE ('сумма=; SUM:8:3);

CLOSE (F1)

end.

Сумма = 42.124

            В программе1.1: F1 — файловаяпеременная, с помощью которой устанавливается связь с файлом  D1.DAT. Физическое имя файла указывается только при открытиифайла в операторе RESET.В остальных операторах при необходимости работы с файлом указывается файловаяпеременная F1. ОператорREAD (F1,X) применяетсядля считывания данных (по одному) из внешних файлов в переменной Х. Послеоператора CLOSE (F1)данные файла становятся недоступными программе. Значение вычисленной суммы выводитсяна экран дисплея.

                                                                  Запись файла.

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

            открытьфайл для записи (REWRITE);

            вывестиданные (WRITE);

            закрытьфайл для записи (CLOSE).

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

Общая форма записи файла:

REWRITE (имя1);

         .. .

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

         .. .

CLOSE(имя 1);

Оператор вывода для записи данных обладает всеми свойствамиобычного оператора WRITE.Если оператор вывода имеет вид:

              WRITE (параметры)

То данные выводятся на экран дисплея, а если

              WRITE(имя 1,параметры)

То данные записываются в файл, хранящиеся на диске.

*** 1.2.  Пусть впрограмме переменные А и В получают следующие значения: А=510, В=16.2.

требуется записать в файл с именем D2.DAN строку в виде А=510     В=16.2.

program  A21A (INPUT, OUTPUT);

     VAR

            F2: text; (*файловаяпеременная*)

            L2: Integer; (*длинавыходного файла*)

            A: Integer; (*целое данное*)

            B: Real; (*действительноеданное*)

Begin

            L2: =1; A: = 510; B: = 16.2;

            REWRITE (F2, 'D2', 'DAN', L2);

            WRITE (F2, 'A=', A:3,' ':5, 'B=',B:4:1);

            CLOSE (F2)

end.

            Все значения переменных указаны в комментариях программы. REWRITE открывает файл для записи в негоданных. Полное имя файла — D2.DAN.WRITE выводит строкусимволов в соответствии с форматом. CLOSE закрывает файл для записи. Поскольку для записи однойстроки вполне достаточен 1 блок, то переменной L2 присваиваем значение 1. 

                                                         Чтение и запись файла.

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

*** 1.3.

program  A22 (INPUT,OUTPUT);

TYPE T =TEXT; (*тип файла — текстовый*)

VAR

            T1, T2: T; (*файловаяпеременная*)

            S: CHAR; (*символьноеданное*)

            R: Integer; (*целое данное*)

begin

            RESET(T1, 'FINP'); (*открытиефайла для чтения*)

            REWRITE (T2, 'FOUT');(*открытие файла для записи*)

            READ (T1, S); (*чтениеданного из файла*)

            ............. (*действия спеременными S, R*)

            WRITE (T2, R); (*записьзначения R в файл*)

            CLOSE (T2); (*закрытие файладля записи*)

            CLOSE (T1); (*закрытие файладля чтения*)       

end.

 

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

Пример с использованием внешних файлов:

Имеем ведомость по результатам экзамена в группе. Будемсчитать ее входным файлом с именем DAN:

-------------------------------------------------------

предмет            «физика»

группа                Т — 12

-------------------------------------------------------

Алексеев С.А.   :   5

Вертышев А.Ю. :   4

Колдаев В.Д.      :  5

Петрова Н.В.     :   4

Федоренко Р.Ф.  :   3

Маронин    А.В. :  4

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

-------------------------------------------------------

предмет            «физика»

группа                 Т — 12

-------------------------------------------------------

Алексеев С.А.   :   5

Вертышев А.Ю. :   4

Колдаев В.Д.      :  5

Петрова Н.В.     :   4

Федоренко Р.Ф.  :   3

Маронин    А.В. :  4

* * * * * * * * * * * * * * * * * * * * * * * *

Средний балл в группе:  4.17.

Количество учащихся:    6

    

                                                                                                                         

еще рефераты
Еще работы по программному обеспечению