Файлы. Определение понятий

Содержание

Слайд 2

Файлы Файлом называется совокупность данных, записанная во внешней памяти под определенным

Файлы

Файлом называется совокупность данных, записанная во внешней памяти под определенным именем.

Целесообразность применения файлов диктуется следующими причинами:
Ввод больших объемов данных, подлежащих обработке, утомителен и требует большого времени. Гораздо удобнее создать отдельный файл данных, который может быть подготовлен заранее и, самое главное, применяться неоднократно.
Файл данных может быть подготовлен другой программой, становясь, таким образом, связующим звеном между двумя разными задачами, а также средством связи программы с внешней средой.
Программа, использующая данные из файла, не требует присутствия пользователя в момент фактического исполнения.
Любой файл имеет три характерные особенности. Во-первых, у него есть имя, что дает возможность программе работать одновременно с несколькими файлами. Во-вторых, он содержит компоненты одного типа. В-третьих, длина вновь создаваемого файла никак не оговаривается при его объявлении и ограничивается только емкостью устройств внешней памяти.
Слайд 3

ОПРЕДЕЛЕНИЕ ПОНЯТИЙ Физический Файл – это поименованная область на диске, содержащая

ОПРЕДЕЛЕНИЕ ПОНЯТИЙ
Физический Файл – это поименованная область на диске, содержащая какую-либо

информацию.
Логический файл – это одна из структур данных, используемых в программировании.
Слайд 4

И другие СТРУКТУРА ЛОГИЧЕСКОГО ФАЙЛА Это способ восприятия файла в программе,

И другие

СТРУКТУРА ЛОГИЧЕСКОГО ФАЙЛА
Это способ восприятия файла в программе, т.е. «шаблон»,

через который мы смотрим на физическую структуру файла на диске. В ЯП таким шаблонам соответствуют типы данных, допустимые в качестве компонент файлов.
File of byte:

File of char:

File of integer:

Слайд 5

У массива количество элементов фиксировано, а у файлов количество элементов может

У массива количество элементов фиксировано, а у файлов количество элементов может

изменяться в процессе работы.(Количество в каждый момент времени неизвестно, но в конце файла стоит символ Eof)
Массив целиком располагается в ОП, а файл находится на диске.
Нумерация элементов массива выполняется соответственно значений нижней и верхней границ, указанных при его объявлении. Нумерация элементов файла выполняется слева направо, начиная с нуля

Логическая структура файла в принципе очень похожа на структуру массива.
Различия:

Слайд 6

Классификация Файлов в ПАСКАЛЕ

Классификация Файлов в ПАСКАЛЕ

Слайд 7

РАБОТА С ТЕКСТОВЫМИ ФАЙЛАМИ var список имен файлов : text; Текстовый

РАБОТА С ТЕКСТОВЫМИ ФАЙЛАМИ
var список имен файлов : text;
Текстовый файл может

состоять из любых символов (в том числе и цифр)
Для работы с каким-либо физическим файлом (тем, который существует на диске) его необходимо связать с файловой переменной
Assign (имя файла, ‘путь к файлу’);

ИСПОЛЬЗОВАНИЕ
Файлы используются для хранения данных. Из них можно считывать начальные данные, записывать результаты, изменять информацию в файле.

Слайд 8

НАПРИМЕР: На диске есть файл: D:\MyFile.dat Или: Var f : text;

НАПРИМЕР:

На диске есть файл:
D:\MyFile.dat

Или:
Var f : text;
Name: string;
. . .
Begin
. .

.
Name : = ‘D:\MyFile.dat ‘ ;
Assign ( f, name);

. . .
Var f : text;
. . .
Begin
. . .
Assign (f; ‘D:\MyFile.dat’ );

Слайд 9

ПРИНЦИПЫ РАБОТЫ С ФАЙЛАМИ Открытие Чтение из файла или запись в файл Закрытие

ПРИНЦИПЫ РАБОТЫ С ФАЙЛАМИ

Открытие
Чтение из файла или запись в файл
Закрытие

Слайд 10

ПРИНЦИПЫ РАБОТЫ С ФАЙЛАМИ RESET (название файла) – открытие файла для

ПРИНЦИПЫ РАБОТЫ С ФАЙЛАМИ

RESET (название файла) – открытие файла для чтения

из него информации в ОП. Если файла не существует, то будет выведена ошибка
REWRITE (название файла) – открытие файла для записи данных в файл. Если файла не существует, то он будет создан
APPEND (название файла) – открытие с целью дополнения данных. Если файла не существует, то он будет создан
CLOSE (название файла) – закрытие файла с сохранением
Слайд 11

ИСПОЛЬЗОВАНИЕ ДАННЫХ ИЗ ФАЙЛА Для считывания данных из файла в ОП

ИСПОЛЬЗОВАНИЕ ДАННЫХ ИЗ ФАЙЛА

Для считывания данных из файла в ОП используют

read и readln.
Запись в файл осуществляется процедурами write и writeln
Слайд 12

ИСПОЛЬЗОВАНИЕ ДАННЫХ ИЗ ФАЙЛА

ИСПОЛЬЗОВАНИЕ ДАННЫХ ИЗ ФАЙЛА

Слайд 13

Если в списке переменных есть числовая переменная (integer или real), то

Если в списке переменных есть числовая переменная (integer или real), то

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

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

Функции и директивы для работы с файлами
Функция Eof (имя файла) –

true, если достигнут конец файла и False – иначе.
Функция FileExists(‘имя_файла’) определяет наличие файла на диске ( true – есть, false – нет).
Слайд 15

ПРИМЕРЫ ПРОГРАММ Задача № 1

ПРИМЕРЫ ПРОГРАММ
Задача № 1

Слайд 16

ПРИМЕРЫ ПРОГРАММ Задача № 2 Пусть на диске (в текущем каталоге)

ПРИМЕРЫ ПРОГРАММ
Задача № 2
Пусть на диске (в текущем каталоге) есть файл

myfile.dat, который состоит из некоторого числа целых чисел, разделенных пробелами. Написать программу, вычисляющую сумму этих элементов.
Слайд 17

Program Files; uses Crt; var f :text; x: integer; Summa:longint; begin

Program Files;
uses Crt;
var f :text;
x: integer;
Summa:longint;
begin
clrscr;
assign(f, 'myfile.txt');
if not FileExists('myfile.txt')
then


writeln('ошибка открытия файла')
else
begin

reset(f);
Summa:=0;
while not Eof(f) do
begin
read(f,x);
Summa:=Summa+x;
end;
Writeln('Summa= ', Summa:8);
Close(f);
end;
readln;
end.

Слайд 18

СОЗДАНИЕ ФАЙЛОВ 1 способ – с помощью текстового редактора, например Блокнот

СОЗДАНИЕ ФАЙЛОВ
1 способ – с помощью текстового редактора, например Блокнот или

Pascal.
2 способ – программными средствами. Открыть файл процедурой Rewrite ( f )
Процедурой REWRITE нельзя открыть запись информации в уже существующий файл. При выполнении этой процедуры старый файл с таким же именем уничтожается и никаких сообщений в программу не передается.
Слайд 19

Задача № 3 Написать программу, в которой в текстовый файл записываются

Задача № 3
Написать программу, в которой в текстовый файл записываются данные

про 10 учеников: имя, вес и рост.
Перед созданием файла программа должна проверять наличие файла с таким именем на диске и спрашивать, что ей делать в случае обнаружения такого файла – прекратить работу или перезаписать файл.
Слайд 20

Program Zapfile; Uses Crt; Const db='deti.txt'; var f: text; name: string

Program Zapfile;
Uses Crt;
Const db='deti.txt';
var f: text;
name: string [10];
ves: real;
ROST: real;
Otvet: char;
procedure

zapf;
begin Rewrite(f);
For var i:=1 to 10 do Begin
Writeln('введите имя, вес и рост:');
Readln(name, ves, rost);
Write(f,name:10,' ',ves:4,' ');
writeln(f,rost:5:2)
End;

Close(f);
end;
Begin
Clrscr;
Assign(f, db) ;
{проверяем, существует ли
такой файл}
If FileExists(db) then
Begin
writeln('файл deti.txt существует. Заменить его? (y/n)');
Readln(otvet);
if otvet = 'n' then halt
Else if otvet = 'y' then
zapf;
End
Else
zapf;
Readln;
End.

Слайд 21

Задача № 4 Написать программу, которая считывает слова из одного текстового

Задача № 4
Написать программу, которая считывает слова из одного текстового файла

и записывает их в столбик в другой текстовый файл.
Пояснение: слова разделяются символом пробел. Поэтому мы будем считывать символы из первого файла и «складывать» их в слово до тех пор, пока не встретиться пробел. Потом это слово запишем во второй файл и опять начнем формировать следующее слово. И так до тех пор, пока не достигнем конца первого файла.
Слайд 22

Program slovo; {Запись слов из файла f в столбик в файл

Program slovo;
{Запись слов из файла f
в столбик в файл h}
uses Crt;
var

f,h:text;
bukva:char;
clovo:string;
begin clrscr;
assign(f,'f.pas');
assign(h,'h.pas');
reset(f);
rewrite(h);
clovo:=' ';
while not eof(f) do

begin
read(f, bukva);
if bukva<>' ' then
begin
clovo:=clovo+bukva;
end
else
begin
writeln(h,clovo);
writeln(clovo);
clovo:=' ';
End ;
end;
readln;
Close (f); Close (h); end.

Слайд 23

Написать программу, которая на диске компьютера создает файл nambers.txt и записывает

Написать программу, которая на диске компьютера создает файл nambers.txt и записывает

в него 5 введенных с клавиатуры целых чисел. При помощи текстового редактора (например, БЛОКНОТА) просмотрите файл и убедитесь, что запись в файл произошла.
Написать программу, которая дописывает в файл nambers.txt 5 введенных с клавиатуры целых чисел. При помощи текстового редактора (например, БЛОКНОТА) просмотрите файл и убедитесь, что запись в файл произошла.

Задание на урок:

Слайд 24

Типизированные файлы

Типизированные файлы

Слайд 25

Типизированные файлы - это файлы, все элементы в которых одного типа

Типизированные файлы
- это файлы, все элементы в которых одного типа
var f:

file of integer;
f1: file of real;
f3: file of string[10];
При работе с типизированным файлом можно сначала определить тип данных, а затем определить файл:
type massiv=array[1..5] of integer;
var f : file of massiv;
В типизированном файле можно использовать любой тип кроме файлового.
Слайд 26

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

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

использование прямого доступа следует помнить, что элементы файла всегда нумеруются, начиная с нуля!
Чтение из типизированного файла осуществляется только процедурой Read, а запись-Write
Read(файловая переменная, список переменных);
Write(файловая переменная, список переменных);
Слайд 27

Если указатель текущей позиции находится за последним элементом, т.е в позиции

Если указатель текущей позиции находится за последним элементом, т.е в позиции

EOF(f)=true, то выполнение процедуры Read приводит к ошибке.
При записи в файл, указатель перемещается на следующий элемент.
При достижении конца файла-файл расширяется

указатель текущей позиции

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

Слайд 28

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

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

Слайд 29

Недостатки типизированных файлов: Нельзя создать или просмотреть в текстовом редакторе. В

Недостатки типизированных файлов:

Нельзя создать или просмотреть в текстовом редакторе.
В него

нельзя дописывать данные в режиме append.
Слайд 30

Пример. Составить программу, которая создает типизированный файл, состоящий из случайного числа

Пример.
Составить программу, которая создает типизированный файл, состоящий из случайного числа случайных

целых чисел, выводит этот файл на экран компьютера. Затем сортирует элементы файла и выводит на экран уже отсортированный файл.
*чтобы получить данные из типизированного файла в читаемом виде, необходимо вывести их на экран не через стандартный редактор, а средствами вывода PascalABC.
Слайд 31

Program Filesort; uses crt; var f: file of integer; x, y

Program Filesort;
uses crt;
var f: file of integer;
x, y : integer;

i, j : integer;
begin
{$I-}
Clrscr;
assign (f, 'sort_dat.pas');
{$I+} { Создаем файл случайных чисел}
Rewrite ( f );
Randomize;
J :=random( 100 ); { количество элементов файла }
For i:=1 to j do
begin
x:=random(100);
write( f, x );
End;
close ( f );
writeln ('исходный файл');
reset ( f );
for i:=1 to fileSize ( f ) do
begin
read ( f, x );
write ( x:4 );
end;

writeln;
close ( f ); { сортировка }
reset ( f );
for I :=fileSize(f)-1 downto 1 do
{ всплывание очередного максимального элемента на 1-ую позицию}
for j:=0 to I -1 do
begin
seek ( f, j );
Read (f, x, y);
if x>y then
begin
seek(f, j);
write ( f, y, x );
end;
end;
close ( f );
reset ( f );
writeln ('отсортированный файл');
for i:=1 to fileSize ( f ) do
begin
read( f, x );
write ( x:4 );
end;
readln;
close ( f );
end.

Слайд 32

Задачи на урок: 1) Написать программу, которая создает типизированный файл, состоящий

Задачи на урок:
1) Написать программу, которая создает типизированный файл, состоящий из

случайного числа целых случайных чисел, и затем выводит содержание этого файла на экран компьютера.
2) Используя файл, созданный в предыдущей задаче, найти:
а) самое большое число в этом файле.
б) количество одинаковых чисел в нем.
в) порядковые номера чисел, кратных 3.
Слайд 33

Что такое типизированные файлы? Чем они отличаются от текстовых файлов? В

Что такое типизированные файлы?
Чем они отличаются от текстовых файлов?
В чем преимущества

и недостатки типизированных файлов?
Какие вы знаете процедуры и функции для обработки типизированных файлов?
Какими командами осуществляется ввод и вывод информации в типизированный файл?
Слайд 34

Тип данных Record -Запись

Тип данных Record -Запись

Слайд 35

Назначение записей. Тип данных Запись (Record) используется в тех случаях, когда

Назначение записей.

Тип данных Запись (Record) используется в тех случаях, когда необходимо

обрабатывать структурированные данные, которые описывают несколько различных свойств объекта.
Например, нам надо использовать следующие данные про наших друзей:
Фамилия
Имя
Адрес
Телефон
Эти данные имеют разный тип. Но из них можно составить структурированный тип данных – запись.
Слайд 36

Описание типа данных Record type имя записи = record имя поля

Описание типа данных Record
type имя записи = record
имя поля

1 : тип поля1;
- - -
имя поля n : тип поля n ;
end;
Например:

type friends = record
Fam : string [ 12 ]; Name : string [ 12 ]; Adress : string [ 25 ]; Telef : string [ 9 ]; end;

Структура Друзья
Фамилия : строка [ 12 ] Имя : строка [ 12 ] Адрес : строка [ 25 ] Телефон : строка [ 9 ]

Слайд 37

Составные имена полей С полями, входящими в запись, можно выполнять те

Составные имена полей

С полями, входящими в запись, можно выполнять те же

действия, что и с обычными переменными соответствующего типа.
Для обращения к полям записи используют составные имена, части которых разделены точкой:
имя записи.имя поля
Friends.Fam - фамилия друга
Friends.Telef - телефон друга
Составные имена могут участвовать в выражениях как обычные переменные:
Friends.Telef:='123-45-67';
Слайд 38

Работа с элементами записи: Использование команды присоединения With With drug do

Работа с элементами записи:
Использование команды присоединения With

With drug do
begin
writeln

('фамилия');
readln ( fam );
writeln ('имя');
readln ( name);
tel := '276-90-90‘;
end;

With имя записи do
begin
действия с полями;
end;

Составные имена довольно громоздки.
Чтобы иметь возможность обращаться непосредственно к самому полю в записи, используют команду With

Например:

Слайд 39

Использование записей в типизированных файлах. В разделе описания типов задать тип

Использование записей в типизированных файлах.

В разделе описания типов задать тип данных

Record
В разделе описания переменных объявить переменную этого типа и файл такого типа.
В программе сформировать запись в заданную переменную и потом целиком записать ее в файл.
При чтении из файла информацию считывать в эту переменную.
Слайд 40

Задание № 1 Написать программу, которая создает типизированный файл содержащий информацию

Задание № 1

Написать программу, которая создает типизированный файл содержащий информацию о

друзьях, и потом выводит эту информацию на экран из файла. Количество друзей должно запрашиваться в начале программы.
Слайд 41

Program Druzya; uses crt; type friends = record Fam, Name :

Program Druzya;
uses crt;
type friends = record
Fam, Name : string[ 12

];
Date : string[ 8 ];
Adress : string[ 50 ];
Tel : string[ 9 ]
end;
Var drug : friends;
f : file of friends;
i,n : integer;
Begin
Clrscr;
assign (f, 'friends.pas');
{ Создание файла }
Rewrite ( f );
write ('Укажите количество друзей ');
readln (n);
Слайд 42

for i:=1 to n do begin with drug do begin writeln

for i:=1 to n do
begin
with drug do
begin
writeln

('Введите фамилию ',i,'-го друга ');
readln (Fam);
writeln ('Введите имя ',i,'-го друга ');
readln (name);
writeln ('Введите адрес ',i,'-го друга ');
readln (Adress);
writeln ('Введите телефон ',i,'-го друга ');
readln (Tel);
end;
write (f, drug);
end;
close ( f );
Слайд 43

writeln(' Вывод из файла: '); reset ( f ); for i:=fileSize(f)-1

writeln(' Вывод из файла: ');
reset ( f );
for i:=fileSize(f)-1 downto 0 do

begin
seek ( f, i);
read (f, drug);
with drug do
begin
writeln (Fam);
writeln (Name);
writeln (Adress);
writeln (Tel);
end;
writeln;
end;
end;
close ( f ); readln; end.
Слайд 44

Задачи на урок: 1) Написать программу, которая при первом запуске создает

Задачи на урок:
1) Написать программу, которая при первом запуске создает файл

F записей, а при повторных запусках эта программа дописывает в этот файл следующую информацию: фамилия, имя, год рождения, рост и вес.
2, а) Написать программу, которая считывает файл F созданный в предыдущей программе и выводит на экран данные по фамилиям, первые буквы которых A, Б или В.
2, б) Написать программу, которая сортирует записи в файле F по алфавиту по фамилиям.
2, в) Написать программу, которая в файле находит самого высокого человека и выводит его данные.