Все программы, составленные до настоящего момента, обрабатывали данные (переменные, константы), хранящиеся в оперативной памяти компьютера. Часто это крайне неудобно, например, если каждый раз при запуске программы требуется вводит большой объем исходных данных, или одни и те же данные должны обрабатываться несколькими программами.
В языке Паскаль, как и во многих других развитых языках программирования, существует возможность хранить данные независимо от программы. Для этого эти данные должны быть представлены в виде файла.
Файл – это поименованное место на внешнем носителе, представляющее собой совокупность отдельных записей. Файл данных позволяет:
· хранить данные во внешней памяти долговременно и независимо от программы;
· использовать одни и те же данные несколькими программами.
По способу представления данных файлы делятся на
· текстовые: в них информация представлена в виде текста - последовательности символов. Например, число 2006 представляет собой последовательность из четырех символов (т.е. строку) – ‘2006’.
|
|
· файлы с данными во внутреннем представлении: в них данные представлены в той форме, в какой они хранятся в памяти компьютера (см. соответствующую литературу о представлении данных в памяти ЭВМ). Например, то же самое число 2006 в таком файле будет записано уже не в виде четырех цифр, а как целое число (в двоичной системе счисления). Файлы во внутреннем представлении в языке Паскаль называют еще структурированными, или типизированными, поскольку все записи такого файла имеют одинаковый тип.
По способу доступа к данным файлы делятся на
· файлы последовательного доступа: для того, чтобы обратиться к N-ой записи файла, необходимо прочесть предыдущие N-1 запись (аналог – магнитофонная кассета);
· файлы прямого доступа: можно напрямую обратиться к N-ой записи файла, не читая предыдущих записей (аналог – компакт-диск).
В обобщенном виде алгоритм работы с файлами следующий:
1. открыть файл;
2. записать в него или прочитать из него данные;
3. закрыть файл.
Текстовые файлы
Записи текстового файла – это строки различной длины, поэтому текстовые файлы являются файлами последовательного доступа. Структура текстового файла представлена на Рис. 6.
Eoln | ||||||
Eoln | ||||||
Eoln | ||||||
Eoln | ||||||
Eof | ||||||
Рис. 6. Структура текстового файла | ||||||
Таким образом, текстовый файл представляет собой совокупность строк разной длины. Именно поэтому к записям файла возможен только последовательный доступ. Каждая строка заканчивается специальным неотображаемым символом Eoln («End of line» - конец строки). В конце файла записан специальный неотображаемый символ Eof («End of file» - конец файла).
|
|
В текстовом файле может храниться не только текст, но и данные других типов (например, числа) в текстовом представлении (т.е. по сути дела все равно текст).
Для работы с текстовыми файлами в языке Паскаль используются следующие команды, описания и функции:
1. Описание файловой переменной:
Var f: text;
где f – имя файловой переменной, text – еще один стандартный тип данных – текстовый файл.
Файловая переменная – это переменная-указатель, посредством которой идет взаимодействие программы (чтение/запись данных) с внешним файлом.
2. Связывание файловой переменной с конкретным именем внешнего файла:
Assign (f, <имя файла>);
где f – имя файловой переменной, <имя файла> - строковая константа или переменная. Например, выполнение команды
Assign (f, ’c:\tp70\example.txt’);
свяжет файловую переменную f с файлом «example.txt», который расположен на диске C: в папке с именем «tp70». После записи такой команды в тексте программы нигде далее не будет указываться имя файла, с которым работает программа.
3. Открытие файла для записи данных:
Rewrite (f);
Файл создается заново. Если для записи открыт уже существующий файл, то все данные из него будут потеряны.
4. Открытие файла для чтения данных:
Reset (f);
Для чтения можно открыть только существующий файл. Указатель устанавливается на первую запись (т.е. на первый символ первой строки) файла.
5. Открытие файла для дополнения (т.е. дописывания данных в конец файла):
Append (f);
Для дополнения можно открыть только существующий файл. Указатель устанавливается после последней записи (строки).
6. Запись данных в файл:
Write (f, <список вывода>);
По сути, используется та же команда, что и для вывода данных на экран. Имя файловой переменной f указывает на то, что вывод будет осуществляться в файл.
Команда Writeln (f, <список вывода>); записывает в текстовый файл данные и символ Eoln.
7. Чтение данных из файла:
Read (f, <список переменных>);
Команда Readln (f, <список переменных>); позволяет прочитать данные, а также символ Eoln.
8. Закрытие файла:
Close (f);
9. Логическая функция Eof (f) возвращает значение ИСТИНА, если указатель указывает на символ конца файла и ЛОЖЬ в противном случае.
10. Логическая функция Eoln (f) возвращает значение ИСТИНА, если указатель указывает на символ конца строки и ЛОЖЬ в противном случае.