ПРАКТИЧЕСКОЕ ЗАНЯТИЕ РАЗРАБОТКА ПРОГРАММ РАБОТЫ СО СТРУКТУРИРОВАННЫМИ ФАЙЛАМИ

  • docx
  • 11.11.2021
Публикация на сайте для учителей

Публикация педагогических разработок

Бесплатное участие. Свидетельство автора сразу.
Мгновенные 10 документов в портфолио.

Иконка файла материала Л2-00415.docx

ПРАКТИЧЕСКОЕ ЗАНЯТИЕ

РАЗРАБОТКА ПРОГРАММ РАБОТЫ СО СТРУКТУРИРОВАННЫМИ

ФАЙЛАМИ

 

1.     ЦЕЛЬ ЗАНЯТИЯ

Научиться решать задачи с использованием процедур и функций работы с файлами assign, reset, rewrite, close, read, write, eof и др.

 

2.     ИНФОРМАЦИОННЫЙ БЛОК

Файловый тип переменной – это структурированный тип, представляю- щий собой совокупность однотипных элементов, количество которых заранее не известно.

С переменными файлового типа можно выполнять только две операции:

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

Файл можно представить как последовательную цепочку элементов, про- нумерованных от нуля, заканчивающуюся специальным кодом – маркером конца файла.

Эл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.

 

4. КОНТРОЛЬНЫЕ ВОПРОСЫ

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.

 

5.   ЗАДАНИЯ ДЛЯ САМОСТОЯТЕЛЬНОГО ВЫПОЛНЕНИЯ

1.              Записать в файл N произвольных натуральных чисел. Переписать в другой файл те элементы, которые кратны K. Вывести полученный файл на пе- чать.

2.              Заполнить файл f целыми числами, полученными с помощью генератора случайных чисел. Получить в файле g все компоненты файла f, которые делятся на m и не делятся на n.

3.             Записать файл f N натуральных чисел. Определить, сколько среди них чи- сел меньших К, равных К и больших К.

4.              Записать файл N натуральных чисел. Подсчитать, сколько в нем отрица- тельных, положительных и нулевых элементов.

5.              Заполнить файл N действительными числами, полученными с помощью датчика случайных чисел. Найти сумму минимального и максимального элементов этого файла.

6.              Записать файл N натуральных чисел. Получить в другом файле последова- тельного доступа все компоненты файла f, кроме тех, которые кратны К. Вывести полученный файл на печать.

7.              Записать в файл N действительных чисел. Найти разность первого и по- следнего компонентов файла.