ПРАКТИЧЕСКОЕ ЗАНЯТИЕ
РАЗРАБОТКА ПРОГРАММ РАБОТЫ СО СТРУКТУРИРОВАННЫМИ
ФАЙЛАМИ
Научиться решать задачи с использованием процедур и функций работы с файлами assign, reset, rewrite, close, read, write, eof и др.
Файловый тип переменной – это структурированный тип, представляю- щий собой совокупность однотипных элементов, количество которых заранее не известно.
С переменными файлового типа можно выполнять только две операции:
чтение из файла и запись в файл.
Файл можно представить как последовательную цепочку элементов, про- нумерованных от нуля, заканчивающуюся специальным кодом – маркером конца файла.
|
Эл0 |
Эл1 |
… |
ЭлN |
м.к.ф. |
В программе типизированный файл (файл определенного типа) описыва- ется следующим образом:
Var <идентификатор> : File of базовый тип;
В качестве базового типа может использоваться любой тип, кроме файло- вого.
|
Процедуры и функции |
Примеры использования |
|
Процедура Assign (ФайловаяПеремен- ная, имяФайла) предшествует другим процедурам, т.к. ставит в соответствие физическому файлу на внешнем устрой- стве логический файл — файловую пе- ременную, к которой впоследствии будут обращаться все другие файловые проце- дуры |
Assign(f,’file1.txt’) В апострофах может быть указан путь к файлу, в случае, если файл находится не в одной папке с фай- лом turbo.exe Assign(f,’E:\file1.txt’) |
|
Процедура Reset (ФайловаяПеремен- ная) открывает существующий файл на чтение (открывает входной файл) и ста- вит указатель на начало первого элемента файла |
Reset(f) При отсутствии внешнего файла с указанным именем возникает со- общение об ошибке Error 2: File not found (Файл не найден) |
|
Процедура Append (ФайловаяПере- менная). Она открывает существующий файл для дозаписи. Указатель ставится не в начало, а в конец файла, куда и будут дописываться новые компоненты. Про- цедура append применима только к тек- стовым файлам |
Append(f) |
|
Процедура Rewrite (ФайловаяПере- менная) создает и открывает новый (вы- ходной) файл для последующей записи данных. После ее успешного выполнения файл готов к записи в него первого эле- мента |
Rewrite(f) |
|
Процедуры чтения из файла: Read (ФайловаяПеременная, x1, x2,…, xN) |
Read(f, x1, x2, …, xN) где x1, x2,…,xN – список ввода, со- держащий имена переменных раз- ных типов, значения которых про- цедура read считывает из текстово- го файла |
|
Процедуры записи в файл: Write (ФайловаяПеременная, y1, y2,…, yN); |
Write(f, x1, x2, …, xN) где y1, y2,…, yN – список вывода, содержащий вводимые имена пере- менных разных типов, значения ко- торых должны быть записаны в файл, начиная с позиции текущего указателя |
|
Процедура Rename (ФайловаяПере- менная, ИмяФайла) используется для того, чтобы переименовать неоткрытый внешний файл любого типа. Новое имя задается строкой ИмяФайла |
Rename(f,’File2.txt’) |
|
Логическая функция eof (ФайловаяПе- ременная) выполняет проверку, не дос- тигнут ли конец файла (End Of File) при чтении из него данных. Функция возвра- щает true, если конец файла обнаружен, и указатель текущей позиции находится в конце файла за его последним символом. Это значит, что последний элемент в файле уже прочитан, или файл после от- крытия оказался пуст. В противном слу- чае функция возвращает false |
While not eof(f) do Read(f) |
|
Функция Seekeof (ФайловаяПеремен- ная) аналогична eof, но пропускает про- белы, позиции табуляции и маркеры конца строки перед проверкой на конец файла. Функцию можно использовать только для открытых текстовых файлов |
While not seekeof(f) do Read(f) |
|
Процедура Erase (ФайловаяПеремен- ная) удаляет неоткрытый внешний файл любого типа, задаваемый параметром ФайловаяПеременная |
Erase(f) |
|
Процедура Close (ФайловаяПеремен- ная). Используя процедуру close, про- граммист должен закрыть файл, после того как в программе будет завершена его обработка. В противном случае мо- жет произойти потеря данных. |
Close(f) |
|
Последовательность действий для создания и заполнения файла 1) Описать файловую переменную 2) Описать переменную того же ти- па, что и файл 3) Произвести назначение (связать внешний файл и файловую пере- менную) 4) Открыть файл для записи 5) Записать данные в файл 6) Закрыть файл |
Последовательность действий для чтения из файла 1) Описать файловую переменную 2) Описать переменную того же типа, что и файл 3) Произвести назначение (связать внешний файл и файловую пе- ременную) 4) Открыть файл для чтения 5) Читать данные из файла 6) Закрыть файл |
|
Пример 1. Создать файл, содер- жащий среднесуточную температуру за некоторое количество дней. Призна- ком конца ввода будет число 9999. Var f:file of real; t:real; Begin Assign(f,’abc’); Rewrite(f); writeln('Вводите данные. Признак конца ввода - 9999'); readln(t); While t<>9999 do begin write(f,t); readln(t); end; close(f); end. |
Пример 2. Определить среднюю температуру для значений, хранящих- ся в файле abc.
Var f:file of real; t,s:real; Begin Assign(f,’abc’); reset(f); s:=0; while not eof(f) do begin readln(f,t); s:=s+t; end; s:=s/filesize(f); Writeln(‘средняя температу- ра=’,s:4:2) close(f); end. |
3. ИСПОЛНИТЕЛЬНЫЙ БЛОК
1. Заполнить файл последовательного доступа f целыми числами, получен- ными с помощью генератора случайных чисел. Определить сколько процентов от общего числа элементов составляют положительные элементы файла.
а) создать и заполнить файл с помощью генератора случайных чисел (ко-
личество элементов N в файле задается в процессе работы программы).
б) открыть файл для чтения, если считанное из файла число положитель- ное, то счетчик количества таких чисел К увеличить на 1.
в) вычислить процент по формуле P:=K/N*100, результат вывести на экран. г) закрыть файл.
2. Заполнить файл последовательного доступа f целыми числами, получен- ными с помощью генератора случайных чисел. Получить в файле g те компо- ненты файла f, которые являются четными.
а) создать и заполнить файл f с помощью генератора случайных чисел (ко-
личество элементов N в файле задается в процессе работы программы). б) создать файл g и открыть его для записи.
в) открыть файл f для чтения, если считанное из файла f число четно, то записать его в файл g.
г) открыть файл g для чтения, вывести на экран содержимое файла. д) закрыть файлы f и g.
1. Какая команда позволяет дописать данные в файл не стирая его.
2. В каком виде хранятся числовые значения в типизированном файле.
3. Сохраняется ли информация в файле при использовании команды reset и
rewrite.
4. Чем отличаются команды Write(‘f’,‘Вывод’) от Write(f,‘Вывод’), если f: file of real.
5. Чем отличаются команды Readln(a) от Readln(f), если a:integer, f: file of in- teger.
1. Записать в файл N произвольных натуральных чисел. Переписать в другой файл те элементы, которые кратны K. Вывести полученный файл на пе- чать.
2. Заполнить файл f целыми числами, полученными с помощью генератора случайных чисел. Получить в файле g все компоненты файла f, которые делятся на m и не делятся на n.
3. Записать файл f N натуральных чисел. Определить, сколько среди них чи- сел меньших К, равных К и больших К.
4. Записать файл N натуральных чисел. Подсчитать, сколько в нем отрица- тельных, положительных и нулевых элементов.
5. Заполнить файл N действительными числами, полученными с помощью датчика случайных чисел. Найти сумму минимального и максимального элементов этого файла.
6. Записать файл N натуральных чисел. Получить в другом файле последова- тельного доступа все компоненты файла f, кроме тех, которые кратны К. Вывести полученный файл на печать.
7. Записать в файл N действительных чисел. Найти разность первого и по- следнего компонентов файла.
Материалы на данной страницы взяты из открытых источников либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.