Файл данных

advertisement
Урок №7
Разработка урока на тему «Файлы данных».
Тема урока: Файлы данных.
Цель урока: Сформировать у учащихся понятие о файле данных.
Процедуры работы с файлами.
Задачи урока:
1. Файлы данных.
2. Процедуры работы с файлами.
Оборудование урока: компьютер, проектор.
План урока
1. Организационный момент (приветствие).
- Здравствуйте, садитесь. Кто сегодня отсутствует?
2. Изучение нового материала.
Файлы данных.
Файл
данных —
это
пространство
на
магнитном
носителе,
зарезервированное для хранения информации и имеющее определенное имя.
Файл — это также последовательность чисел (кодов), некоторые из которых
понимаются как управляющие коды (например, существует код признака
конца файла, для текстовых файлов существует признак конца строки). Что
представляет из себя эта последовательность чисел можно решить только в
программе. В самом файле нет никаких признаков, позволяющих определить
характер информации.
Работать с файлом на физическом уровне крайне сложно. Поэтому
для файла, как и для обычной переменной, Паскаль определяет тип.
Например, можно записать:
a: file of integer; (Файл целых чисел.)
f: file of string; (Файл строк.)
Алгоритм работы с файлом:
1.
Файл специальной процедурой связывается с файловой переменной.
1.
Открывается либо создается файловая переменная (физически будет
открыт файл, но программист в этом процессе не участвует).
2.
Выполняются необходимые операции чтения и записи данных.
3.
Файловая переменная закрывается.
Задача 1. Напишем программу, в которой будут выполняться
следующие действия:
1. Открывается файл.
2. Записывается 100 последовательных целых чисел.
3. Файл закрывается.
4. Файл открывается.
5. Считываются числа, содержащиеся в файле, и распечатываются на
экран.
Program example;
Var
i,u: integer;
{ Определяется переменная, которую затем можно привязать к файлу,
содержащему целые числа }
f: file of integer;
begin
{ Файловая переменная привязывается к файлу,
имя которого указано в апострофах }
assign(f,’file’);
{ Так как такой файл еще не существует, то он создается и
открывается}
rewrite(f);
{ Числа записываются в файл }
for i:=1 to 100 do write(f,i);
{ Файл закрывается}
close(f);
{ Так как файл уже существует, то он просто открывается }
reset(f);
{ Числа читаются из файла и выводятся на экран дисплея}
for i:=1 to 100 do
begin
read(f,u);
write(‘ ‘,u);
end;
end.
Файловая
переменной.
переменная
Поэтому
для
не
может
файловых
быть
совершенно
переменных
обычной
предусмотрены
специальные процедуры и функции. Краткий список процедур и функций,
работающих с файлами в Borland Pascal, приведен далее.
 assign — процедура, связывающая файл с файловой переменной.
 reset — открывает существующий файл и устанавливает указатель
позиции файла на нулевой элемент.
 rewrite — создает файл.
 truncate — обрезает файл, начиная с текущей позиции.
 seek — устанавливает указатель файла в указанную позицию.
 eof — функция, возвращающая истину, если был достигнут конец
файла, и ложь в противном случае.
 filesize — вычисляет размер файла в количестве записей того типа,
который указан в объявлении файла.
Примечание
Для файла существует такое понятие как указатель на текущую
позицию. Это величина целого типа (для Borland Pascal — это величина типа
longint), в которой хранится номер текущей позиции файла. При каждой
операции чтения/записи указатель смещается на следующую запись. Под
записью понимается длина типа, указанного в объявлении файла. Нумерация
записей в файле начинается с нуля.
Приведенная далее программа показывает пример использования
специальных файловых средств.
Структуры данных в приведенном примере определены вполне
корректно, но в операторе write(f,a); компилятор выдаст сообщение об
ошибке. А именно: компилятор сообщит, что имеет место несоответствие
типов. Кажется, что типы переменных a и f одинаковы. Однако это не так с
точки зрения компилятора. Мы описали две разные структуры, и компилятор
справедливо полагает, что они могут быть различны и не берет на себя
заботу по проверке их одинаковости.
Указанная проблема решается следующим образом:
Program example;
Uses crt;
Type
r=record
s:string;
i:integer;
end;
Var
a:r;
f: file of r;
begin
assign(f,'file.dat');rewrite(f);
a.s:='fsfsfsf';
a.i:=8;
write(f,a);
end.
Эта программа реализует ту же задачу, что и предыдущая, однако
здесь для компилятора не возникает никаких проблем.
Файл может быть компонентом сложной структуры. Например, вполне
допустим массив файлов:
f:array[1..10] file of integer;
Файл вполне может оказаться компонентом записи:
Program example;
Var
a:record
s:string;
f: file of integer;
end;
begin
assign(a.f,'file.dat');rewrite(a.f);
end.
В этом примере открывается файл массивов. То есть каждая запись
файла — это массив длиной в 10 целых чисел. Причем мы можем не
определять значения всех десяти элементов, в файле все равно будет
записано их десять, как дано в определении массива.
Один и тот же физический файл можно открыть как файл одного типа,
а затем его же как файл другого типа:
Program example;
Uses crt;
Var
s:string;
i:integer;
f:file of string;
d:file of integer;
begin
clrscr;
assign(f,'file.dat');rewrite(f);
s:='gdgdgjagdjasg';
for i:=1 to 10 do write(f,s);
close(f);
assign(d,'file.dat');reset(d);
while not eof(d) do
begin
read(d,i);write(i,' ');
end;
end.
В этом примере файл с именем file.dat открывается как строковый и
заполняется
некоторым
содержимым,
затем
закрывается
и
опять
открывается, но уже как файл чисел. Такие операции для языка Паскаль
вполне законны, это следствие того, что на физическом уровне тип файла
никак не фиксируется.
Заключение: Файл — это структура позволяющая хранить большие
наборы информации. То, что файловые типы представляют собой обычные
языковые типы данных, добавляет им удобства в обработке. Единственный
недостаток хранения данных в файлах — это относительно низкая скорость
доступа.
3.Домашнее задание.
Повторить изученный материал. Выучить основные понятия: файл
данных; файл; алгоритм работы с файлами; процедуры и функции,
работающие с файлами; запись.
4. Подведение итогов
Выставление оценок ученикам, которые хорошо работали на уроке.
Download