ТЕМА: ОРГАНИЗАЦИЯ ПРОГРАММ С ИСПОЛЬЗОВАНИЕМ ТЕКСТОВЫХ ФАЙЛОВ
Цель работы: научиться объявлять текстовые файлы в программе, научиться создавать и обрабатывать текстовые файлы с помощью языка программирования Паскаль.
Оборудование: ПК, ИСР Pascal ABC
ТЕОРЕТИЧЕСКИЕ ДАННЫЕ
В Паскале понятие файла употребляется в двух смыслах:
1. как поименованная информация на внешнем носителе (внешний файл);
2. как переменная файлового типа (внутренний файл)
Файловый тип переменной — это структурированный тип, представляющий собой совокупность однотипных элементов
Файл можно представить как последовательную цепочку элементов, пронумерованных от 0, заканчивающуюся специальным кодом, который называется маркер конца
Эл. 0 |
Эл. 1 |
…. |
Эл. n |
Маркер конца |
Структура описания файловой переменной
Var <имя переменной>: File of <тип элемента> Например:
Var
F1: file of Integer; F2: file of Real; F3: file of Char;
Файловая переменная связывается с именем файла в результате обращения к стандартной процедуре ASSIGN:
ASSIGN (<ф.п.>, <имя файла или л.у.>);
Здесь <ф.п.> - файловая переменная (правильный идентификатор, объявленный в программе как переменная файлового типа);
<имя файла> - текстовое выражение, содержащее имя файла
Инициализация файла
Инициировать файл означает указать для этого файла направление передачи данных. В Турбо Паскале можно открыть файл для чтения, для записи информации, а также для чтения и записи одновременно.
Процедура APPEND
инициирует запись в ранее существовавший текстовый файл для его расширения,
при этом указатель файла устанавливается в его конец. Процедура APPEND применима только к текстовым файлам, т.е. их файловая переменная должна иметь
тип TEXT . Процедурой APPEND нельзя инициировать запись в типизированный или нетипизированный файл. Если текстовый файл ранее уже был открыт с помощью RESET или
REWRITE, использование процедуры APPEND приведет к закрытию этого файла и открытию его вновь, но уже для добавления записей.
Процедура CLOSE
Закрывает файл, однако связь файловой переменной с именем файла, установленная ранее процедурой ASSIGN, сохраняется. Формат обращения: CLOSE (<ф.п.>)
При создании нового или расширении старого файла процедура обеспечивает сохранение в файле всех новых записей и регистрацию файла в каталоге. Функции процедуры CLOSE выполняются автоматически по отношению ко всем открытым файлам при нормальном завершении программы. Поскольку связь файла с файловой переменной сохраняется, файл можно повторно открыть без дополнительного использования процедуры ASSIGN.
Типы файлов
В Паскале различают текстовые, типизированные и нетипизированные файлы
Текстовые файлы предназначены для хранения текстовой информации. Для доступа к записям применяются процедуры READ, READLN, WRITE, WRITELN.
В этом случае осуществляется обращение к дисковому файлу или логическому устройству, связанному с переменной процедурой ASSIGN.
Приступая к решению задач этого раздела, следует вспомнить, что:
1. в программе, которая выводит результаты в файл или читает исходные данные из файла, должна быть объявлена файловая переменная типа text;
2. для доступа к конкретному файлу файловую переменную нужно связать с этим файлом (делается это при помощи инструкции assign);
3. для того, чтобы файл был доступен, его надо открыть (для ЧТЕНИЯ С ПОМОЩЬЮ ИНСТРУКЦИИ reset, ДЛЯ ЗАПИСИ — rewrite, для добавления — append);
4. при работе с файлами возможны ошибки, например, из-за того, что программа пытается открыть файл, которого нет, поэтому после каждой инструкции, которая может привести к возникновению ошибки, желательно, используя функцию iOResuit, проверять код завершения операции с файлом: чтобы программа могла контролировать результат выполнения операции с файлом, в ее текст надо поместить директиву
5. запись в файл выполняют инструкции write и writein, чтение — read и readin, причем в качестве первого параметра этих инструкций следует указывать файловую переменную;
6. по завершении работы с файлом его нужно обязательно закрыть инструкцией close;
файл, созданный программой, в которой тип файловой переменной объявлен как text, можно просмотреть при помощи редактора текста.
Пример 1. Написать программу, которая на сменном диске компьютера (А:) создает файл numbers.txt и записывает в него 5 введенных пользователем целых чисел.
{ Создает на диске А: файл и записывает в него5 целых чисел, введенных пользователем } var f: text; { текстовый файл }
n: integer; { число }
i: integer; { счетчик чисел } begin
writeln('Создание файла'); writeln('Введите пять целых чисел.1); writeln('После ввода каждого числа нажимайте <Enter>');
Assign(f,'а:\numbers.txt');
Rewrite(f); { открыть в режиме перезаписи } for i:=l to 5 do begin write('->');
readln(n); writeln(f,n); end;
close(f); { закрыть файл }
writeln('Введенные числа записаны в файл ','а:\numbers.txt'); readln;
end.
Пример 2. Написать программу, которая выводит на экран содержимое файла a:\numbers.txt.
{ Выводит на экран содержимое файла а:\numbers.txt } var f: text; { текстовый файл } n: integer; { число } begin writeln('Содержимое файла a:\nunibers.txt1);
writeln (' ') ;
Assign(f,'a:\numbers.txt'); Reset(f); { открыть файл для чтения } While not EOF(f) do { пока не достигнут конец файла } begin
readln(f,n); { прочитать число из файла } writeln(n); { вывести прочитанное число на экран } end; Close(f); writeln ('-readln;
закрыть файл
end.
Пример 3. Вычисляет среднее арифметическое чисел, находящихся в файле a:\numbers.txt var
f: text; { текстовый файл } n: integer; { число, прочитанное из файла } kol: integer; { кол-во прочитанных чисел } sum: integer; { сумма прочитанных чисел ) sa: real; { среднее арифметическое }
begin
writeln('Вычисление среднего арифметического чисел, writeln('находящихся в файле a:\numbers.txt'); writeln('Чтение из файла. Подождите.'); sum:=0; kol:-0; Assign(f,'a:\numbers.txt'); Reset (f); { открыть файл для чтения } While not EOF(f) do { пока не достигнут конец begin
readln(f,n); { прочитать число из файла }
sum:=sum+n; kol:=kol+l; end;
Close(f); { закрыть файл } sa:=sum/kol;
writeln('Прочитано чисел: ',kol); writeln('Сумма чисел: ',sum) ; writeln('Среднее арифметическое: ',sa:9:2); readln;
end.
ЗАДАНИЕ
1. Создать файл, состоящий из вещественных чисел. Определить количество нулевых значений в этом файле
2. Дан текстовый файл, содержащий произвольный текст. Определить чего в нем больше: русских букв или цифр.
3. Дан файл, содержащий текст на русском языке. Определить, входит ли заданное слово в указанный текст.
КОНТРОЛЬНЫЕ ВОПРОСЫ
1. Что такое файловая переменная?
2. Какова структура файла?
3. Как описывается файловая переменная в программе?
4. Что такое типизированный файл?
5. Что такое нетипизированный файл?
6. Что такое текстовый файл?
7. Как объявляется текстовый файл в программе?
8. Назовите алгоритм работы с текстовым файлом
Материалы на данной страницы взяты из открытых источников либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.