ТЕМА №8: ФАЙЛЫ. ТИПИЗИРОВАННЫЕ ФАЙЛЫ. ТЕКСТОВЫЕ ФАЙЛЫ.
ПРОГРАММНО - ДИДАКТИЧЕСКОЕ ОБЕСПЕЧЕНИЕ: ЭВМ типа IBM. ТР5.
ЦЕЛИ И ЗАДАЧИ: Дать представление о файлах и средствах их обработки с помощью ТР5. Приобретение навыков составления программ с использованием файлов различного типа
ТРЕБОВАНИЯ К ЗНАНИЯМ И УМЕНИЯМ:
Учащиеся должны знать:
-
Что такое файл;
-
Какие бывают файлы;
-
Что такое файловая переменная;
-
Как описываются типизированные файлы;
-
Процедуры и функции работы с файлами;
-
Процедуры и функции работы с типизированными и текстовыми файлами;
-
Как описываются текстовые файлы.
Учащиеся должны уметь:
-
Правильно описывать типизированные и текстовые файлы;
-
Правильно пользоваться файловой переменной;
-
Составлять программы с использованием типизированных и текстовых файлов;
-
Составлять простейшие программы с использованием процедур и функций работы с типизированными и текстовыми файлами.
ПЛАН-СОДЕРЖАНИЕ УРОКА
Основные понятия
Мы все время рассматривали задачи, в которых данные поступают с клавиатуры, а результаты выводятся на экран. Ни исходные данные, ни результаты не сохраняются. А если данных слишком много? Как записать их на диск? Для этого необходимо исходные данные и результаты оформить в виде файлов, которые хранятся на диске.
Файлы – это поименованная структура данных на техническом носителе, представляющая собой последовательность элементов (записей) одного типа или - это массив переменной длины неограниченного размера.
Файл может быть компонентом другой структуры, но не должен входить в другой файл.
Отличие файла от массива: размещение на внешнем носителе, длина файла не задается, место элемента не определяется индексом.
Файлы бывают:
-
типизированные
-
нетипизированные
-
текстовые
Файл объявляется в разделе описания переменных с указанием типа элементов файла.
Например:
Var F1: file of integer; F2: file of char; F3: text; F4: file;
Типизированными файлами называются файлы, в описании которых присутствует указание типа. Типизированные файлы – это файлы с прямым доступом к компонентам (записям).
Нетипизированный файл – это просто последовательность байтов, без конкретизации структуры.
Файл, компонентами которого являются данные символьного типа, называется текстовым. Отличие текстовых файлов от типизированных - наличие строковой структуры. В текстовые файлы можно записывать любую информацию, в том числе числа. При этом они (числа) автоматически преобразуются в строковые величины, а при считывании из файла – обратное преобразование в числа.
Описание файлов:
-
Тип файла
|
Описание файла
|
Типизированный
|
Var F1: file of integer;
F2: file of char;
|
Нетипизированный
|
Var F3: file;
|
Текстовый
|
Var F: text;
|
Файл на техническом носителе определяется полным именем (<путь>\<собственно имя>.<расширение>). Для обозначения файла и работе с ним в программе используется файловая переменная.
Файловая переменная - это переменная, используемая в программах для обозначения файла и обращения к нему. Она не может использоваться как обычная переменная (слева от знака присваивания, в логических и арифметических выражениях).
Особенности файловой переменной:
-
Ей нельзя присваивать какие-либо значения
-
Она не может участвовать в логических операциях
-
Она не может входить в математические выражения
При работе с файлом используется понятие указателя или индекса файла, т.е. положение магнитной головки в определенном месте файла. Перед началом работы файл должен быть создан или открыт, по окончании работы – закрыт.
При работе с файловыми переменными, используются специальные процедуры и функции:
Процедура
|
Назначение
|
Замечание
|
Assign(f, ‘name’)
|
Связывает файловую переменную с конкретным файлом (привязывает переменную к имени файла). Ставится перед первым использованием файловой переменной.
|
Можно имя файла ’name’ задавать через строковую переменную (S): Assign(f, S)
|
Reset(f)
|
Открывает существующий файл и устанавливает указатель на начало записи.
|
Для любых файлов
|
Rewrite(f)
|
Создает новый пустой файл, устанавливает указатель - на начало файла. Если файл существовал, то его содержимое уничтожается.
|
Для любых файлов
|
Close(f)
|
Закрывает открытый файл
|
Для любых файлов
|
Erase(f)
|
Стирает предварительно закрытый файл
|
Для любых файлов
|
Rename(f, f1)
|
Переименовывает файл f в файл f1. Файл f должен быть предварительно закрыт
|
Для любых файлов
|
EOF(f)
|
Получение сведений о конце файла True, если указатель указывает на метку конца файла, иначе - False
|
Логическая функция.
|
Read(f,v1,…vn)
|
Считывает записи из файла f в переменные v1, …vn
|
Для типизированных и нетипизированных файлов
|
Write(f,v1,…vn)
|
Записывает в файл f значения переменных v1,…vn
|
Для типизированных и нетипизированных файлов
|
Readln(f,v1,…vn)
|
Считывает записи из файла f в переменные v1, …vn
|
в типизированных файлах недопустимо
|
Writeln(f,v1,…vn)
|
Записывает в файл f значения переменных v1,…vn
|
в типизированных файлах недопустимо
|
N:=filesize(F);
|
Определение количества записей в файле
|
Функция
|
Eoln(f)
|
True, если указатель на метке конца строки, иначе - False
|
Логическая функция. Для текстовых файлов
|
Append(f)
|
Открывает файл и устанавливает указатель на метку конца файла
|
Применяется для добавления записей
|
N:=filepos(f)
|
Выдает номер записи, на которую указывает указатель записи. Первая запись имеет номер 0.
|
Функция
|
seek(f,n)
|
Устанавливает указатель на запись с номером n
|
|
truncate(f)
|
Отсекает все записи, находящиеся после указателя и в этой позиции записывает метку конца файла.
|
|
Пимеры программ:
-
Пример записи типизированных файлов:
var f: filt of integer;
assign(f, ‘file’); … rewrite(f); …write(f, v1,v2,…, vn); clos(f);
-
Пример считывания типизированных файлов:
var f: filt of integer;
assign(f, ‘file’); … reset(f); … read(f, v1,v2,…, vn); clos(f);
Пример записи в текстовый файл:
uses crt;
var f:text; r,i:integer; rr:string;
begin
clrscr;
rr:='Dautova';
assign(f,'dddddd');
rewrite(f);
writeln(f,rr);
for i:=1 to 20 do begin
r:=random(10);
writeln(f,r); end;
close(f);
end._
-
Считывание из текстового файла (см программу выше):
uses crt;
var f:text; r,i:integer; rr:string;
begin
clrscr;
assign(f,'dddddd');
reset(f);
readln(f,rr);
writeln(rr);
for i:=1 to 20 do begin
readln(f,r);
writeln(r); end;
close(f);
end._
-
Написать программу, вычисляющую корни квадратного уравнения и вывести результаты в файл.
Uses crt;
Var a,b,c,x1,x2, d: real; f:text;
Begin
Assign(f,’result.txt);
Rewrite(f);
Readln(a,b,c);
D:=b*b-4*a*c;
If d>=0 then
Begin
X1:=-b+sqrt(d)/(2*a);
X2:=-b-sqrt(d)/(2*a);
End;
Writeln(‘решени квадратного ур-я’);
Writeln(f,'a=',a:6:3,'b=', b:6:3,'c=',c:6:3);
If d<0 then writeln(f,’у урав-я нет корней’) else writeln(f, ‘корни: x1=’, x1:6:3,’x2=’, x2:6:3);
Close(f);
Writeln(‘рез-ты работы программы в файле result.txt’);
Repeat until keypressed; end.
-
На диске имеется файл с именем Karl.txt, в котором записана скороговорка:
"Карл у Клары украл кораллы, Клара у Карла украла кларнет."
Требуется подсчитать кол-во букв «К»
Uses crt;
Var f:text; s:integer; a:char;
Begin
Assign(f,’Karl.txt’); Reset(f);
S:=0;
While not eof(f) do Begin
While not eoln(f) do Begin
Read(f,a); If a=’k’ then s:=s+1;
End;
Readln(f);
End;
Close(f); Writeln(s);
Repeat until keypressed; end.
-
Ввести текст в текстовый файл f1. Переписать файл f1 в f2 – первую половину файла в прямом, а вторую – в обратном порядке следования символов.
Uses crt;
Var f1,f2:text; s,s1,sa,sb:string; a:char; n,y,i:integer;
Begin
Clrscr;
Assign(f1,’file1’); Assign(f2,’file2’);
Rewrite(f1);
Readln(s); Writeln(f1,s); Close(f1);
Reset(f1); Rewrite(f2); Read(f1,s1);
N:=lenght(s1); Y:=n div 2; Writeln(y);
Sa:=’’; sb:=’’;
For i:=n downto y+1 do Sa:=sa+s1[i];
Writeln(sa);
For i:=1 to y do Sb:=sb+s1[i];
Writeln(sb);
S1:=sb+sa;
Writeln(s1); Write(f2,s1);
Close(f1); Close(f2); Repeat until keypressed; end.
0>
Достарыңызбен бөлісу: |