310.80K
Категория: ПрограммированиеПрограммирование

Файл - именованная область внешней памяти ЭВМ

1.

Файлы

2.

Файл
- именованная область
внешней памяти ЭВМ,
хранящая
совокупность данных.

3.

Особенности файлов
➢ Файл имеет имя (до 8 лат. букв, цифр
или символов !, @, #, $, %, ^, &, (, ), `, ~, -, _ и
после точки – расширение до 3 символов.
Перед именем можно указать путь к файлу)
➢ Файл содержит компоненты
одного типа
➢ Длина создаваемого файла не
оговаривается при его объявлении, а
ограничивается только ёмкостью
устройств внешней памяти ЭВМ

4.

Файл можно представить как
потенциально бесконечный список
значений одного типа.
элемент1 элемент2 элемент3

Текущий указатель
В любой момент времени
программе доступен только один
элемент файла, на который
ссылается текущий указатель.

5.

По способу доступа к
элементам различают
➢ Файлы последовательного
доступа (к элементам обеспечивается
доступ в той же последовательности, в
которой они записывались)
➢ Файлы прямого доступа (доступ к
элементам осуществляется по адресу
элемента)

6.

Обмен данными с файлом
осуществляется с помощью
переменных файлового типа.
Типы файлов (файловых
переменных)
➢ Текстовые
➢ Типизированные
➢ Нетипизированные

7.

Формат описания файлов
var <имя ф. пер.>: text ;
{текстовый файл}
var <имя ф. пер.>: file of <тип>;
{типизированный файл}
var <имя ф. пер.>: file ;
{нетипизированный файл}

8.

Примеры
var
f1 : text;
f2 : file of integer;
f3 : file;

9.

Процедуры и
функции для
работы с
файлами

10.

1. Процедура, связывающая
файловую переменную с
конкретным файлом.
assign(f ,<имя файла>);
Пример
assign(f1,‘c:\tp\10b\file.dat’);

11.

2. Процедура, открывающая
существующий файл для
чтения.
reset(f);

12.

3. Процедура, создающая и
открывающая новый файл
для записи. (Если файл ранее
содержал данные, то они
уничтожаются).
rewrite(f);

13.

4. Процедура, открывающая
существующий файл для
добавления. (Только для
текстовых файлов).
append(f);

14.

5. Процедура, закрывающая
файл с сохранением в нем
данных.
close(f);

15.

6. Процедура,
переименовывающая
неоткрытый файл.
rename(f ,<новое имя файла>);

16.

7. Процедура, удаляющая
неоткрытый файл.
erase(f);

17.

8. Функция, возвращающая
True, если получен признак
конца файла, иначе – False.
eof(f)

18.

9. Функция, возвращающая
0, если открытый файл
существует, иначе – др.
целое число.
(Работает с директивой
отключения стандартной
проверки {$I-}).
ioresult

19.

Текстовые файлы
Могут содержать строки,
символы и числа любого типа.
Перед записью в файл
внутреннее представление
переменных преобразуется в
последовательность символов,
т. е. текст.

20.

Процедуры и
функции для
работы с
текстовыми
файлами

21.

1. Процедуры ввода
значений переменных из
файла.
read(f,<список переменных>);
readln(f,<список переменных>);

22.

2. Процедуры вывода
значений выражений в
файл.
write(f,<список выражений>);
writeln(f,<список выражений>);

23.

3. Функция, возвращающая
True, если получен признак
конца строки, иначе – False.
eoln(f);

24.

Типизированные файлы
Позволяют организовать
прямой доступ к компоненту по
его порядковому номеру.
Перед первым обращением к
процедурам ввода-вывода
указатель файла стоит в его
начале и указывает на первый
компонент с номером нуль.

25.

Типизированные файлы
также используют процедуры
read(f,<список пер.>) и
write(f,<список выр.>).
Переменные и выражения в
списках ввода-вывода должны
иметь тот же тип, что и
компоненты файла.

26.

Процедуры и
функции для
работы с
типизированными
файлами

27.

1. Процедура, смещающая
указатель на компонент с
номером N (выражение типа
longint).
seek(f, N);

28.

2. Процедура, удаляющая
часть файла с текущей
позиции до его конца.
truncate(f);

29.

3. Функция, возвращающая
количество компонентов
файла (типа longint).
filesize(f);

30.

4. Функция, возвращающая
номер текущего элемента
(типа longint).
filepos(f);

31.

Нетипизированные файлы
Позволяют организовать
высокоскоростной обмен данными.
Вместо процедур read и write
используются процедуры
blockread и blockwrite,
позволяющие определять
параметры буферов,
использующихся при обмене
данными.

32.

Примеры работы с файлами

33.

Пример записи в файл чисел от 1 до 10:
program zapisy_v_file;
var i: integer;
var f: file of integer;
begin
assign (f,'c:\proba.dat');
rewrite (f);
for i:=1 to 10 do
write (f, i);
close(f);
end.

34.

Пример чтения из файла:
program chtenie_iz_fila;
var i,a: integer;
var f: file of integer;
begin
assign (f,'c:\proba.dat');
reset (f);
for i:=1 to 10 do
begin
read (f, a);
writeln(a);
end;
close(f);
end.

35.

Работа с текстовыми файлами:
Пример записи в файл 3-х строк, введенных пользователем:
program zapisy_v_file;
var i: integer;
var a: string;
var f: text;
begin
assign (f,'c:\proba.txt');
rewrite (f);
for i:=1 to 3 do
begin
readln(a);
writeln(f, a);
end;
close(f);
end.

36.

Чтение данных из файла неизвестной длины:
Применяется метка определения окончания
файла EOF(<файл>).
NOT EOF(f)
program chtenie_iz_fila;
var a: integer;
var f: file of integer;
begin
assign (f,'c:\proba.dat');
reset (f);
while NOT EOF (f) do
begin
read (f, a);
writeln(a);
end;
close(f);
end.
В текстовом файле в ABC-Pascal каждая строка
имеет метку окончания EOLN(<файл>),.
program chtenie_iz_fila;
var i: integer;
var a: string;
var f: text;
begin
assign (f,'c:\proba.txt');
reset (f);
while NOT EOLN(f) do
begin
readln(f, a);
writeln(a);
end;
close(f);
end.

37.

1.Выведите в файл “c:\kvadrat.dat” квадраты чисел
заданного диапазона.
2.Считайте данные из файла “c:\kvadrat.dat” и
выведите на экран.
3.Организуйте ввод данных об учащихся с клавиатуры
с сохранением в единый файл. Количество учащихся
задается в программе. Данные: фамилия, имя, класс.
4.Организуйте вывод данных об учащихся из файла в
другой программе.
5.Измените программу так, чтобы при повторном
запуске программы данные могли добавляться к уже
имеющимся.

38.

Чтение строк из файла
Слово или строку файла можно представить как
одномерный массив символов, тогда каждый символ можно
представить как элемент массива
информатика
A [1] :=и;
A[3] :=ф;
Используя условный оператор можно читать из файла
заданные строки (например слова на заданные буквы)

39.

Создать программу которая выбирает из
файла слова на заданную букву

40.

var i,s,v: integer;
a,b,c:string;
var f: text;
begin
Writeln ('Покажи слова на букву');
assign (f,'слова.txt');
Reset(f);
read(b);
while NOT EOLN(f) do
begin
readln(f,a);
if a[1]= b then
writeln(a);
end;
close(f);
end.

41.

Создать программу которая выводит
в файл данные по образцу.
English     Русский Правила