slide1 n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
файлове PowerPoint Presentation
Download Presentation
файлове

Loading in 2 Seconds...

play fullscreen
1 / 22

файлове - PowerPoint PPT Presentation


  • 111 Views
  • Uploaded on

файлове. Дефиниция на файл.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'файлове' - karma


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide1

файлове

  • Дефиниция на файл.
  • Когато една програма работи с големи обеми от данни, възниква необходимостта те да се съхранят на някакво запаметяващо устройство - твърд диск, дискета, за да може тези данни да се ползват при следващо пускане на програмата или да се ползват от някаква друга програма. 
  • Съхранените на някакво запаметяващо устройство данни се наричат файл. 
  • Според вида на данните и начина на тяхната организация има различни видове файлове. Според начина на достъп до отделните данни във файловете те биват: с последователен и с пряк достъп. Начинът на достъп зависи и от вида на запаметяващото устройство. Например, лентовите устройства допускат само последователен достъп. Работата с файлове зависи и от операционната система. Различните операционни системи имат различни правила за задаване на запаметяващи устройства, директории и имена на файлове. Например в MS DOS името на файла е една дума до 8 латински букви и цифри дълга, а в MS Windows 95/ 98/ NT/ Me/ 2000/ XP името на файла може да е от няколко думи с обща дължина да 256 символи. В това ръководство ще се предържаме към правилата на MS DOS.
slide2

2. Файл от определен тип.

  • Файл от определен тип е крайна наредена съвкупност от еднотипни данни на външен носител.
  • Отделните елементи могат да бъдат от всякакъв тип с изключение от тип файл. Например елементите на един такъв файл могат да са от тип integer, real, boolean, char, низ от символи, масив, запис.
  • 3. Деклариране на файлова променлива.
  • За да се работи в една програма с файл трябва да се декларира файлова променлива. Деклариране на променлива за файл от определен тип става по следния начин:
  •     име: file of тип;
  • където име е името на файловата променлива, а тип е типа на елементите на файла.
slide3

Пример:

type        masiv = array[1 .. 100] of real;        student = recordname: string[50];            fn: longint;            estim: real        end;    var        f: file of integer;                 { файл от цели числа }names: file of string[50];    { файл от низове от по 50 символа }masf: file of masiv;              { файл от масиви от по 100 реални числа }studf: file of student;           { файл от записи }

slide4

4. Процедури и файлове за работа с файлове.

4.1. Връзка между името на файла и файловата променлива.

За да се работи с един файл трябва първо да се осъществи връзка между името на файла на външния носител и файловата променлива. Това става чрез библиотечна процедура

    procedure assign(f: file of тип; s: string);

където f е файловата променлива, а низът s задава името на файла на външния носител. Ако е зададено само името на файла, то се счита, че файлът е в същата директория, в която е изпълнимата програма (с разширение .exe), която се получава след компилиране на програмата на Pascal. В низа s може да се зададе име на устройство и път до директорията, в която се намира файла. При това се ползват правилата на съответната операционна система за задаване на устройство и път до директория.

4.2. Отваряне на файл.

След като се направи връзката между файловата променлива и името, файлът трябва де се отвори. Файловете от определен тип се отварят по два различни начина:

- когато се създава нов файл :

slide5

Отварянето на нов файл става чрез библиотечната процедура

    procedure rewrite(f: file of тип);

където f e файловата променлива. Тази процедура създава нов, празен файл с име и място указани преди това в процедурата assign. Ако вече има файл с това име, той се унищожава и се създава новия файл. В новия файл може само да се пише.

- на вече съществуващ файл: Отварянето на вече съществуващ файл става чрез библиотечната процедура

    procedure reset(f: file of тип);

където f e файловата променлива. Тази процедура отваря файл с име и място указани преди това в процедурата assign. В така отворения файл може и да се чете, и да се пише.

Ако не съществува файл, свърза с f, се издава съобщение за грешка.

4.3. Четене и писане във файл.

Във файлове от определен тип може да се четат и пишат само данни от типа на файла. Те са подредени една след друга и данната, която се чете или се пише, се сочи от четящо-пишеща глава . При отварянето на файл с reset тази глава сочи първия елемент на файла, който е с номер 0. При всяко четене и писане във файла главата се премества толкова елемента надясно, колкото данни са прочетени или записани.

slide6

- писане във файл: Писането във файла става с библиотечната процедура

    write(файлова_променлива, израз1, израз2, ..., изразN)

където стойностите на израз1, израз2, ..., изразN са от типа на елементите на файла. След записването на стойността на съответния израз във файла четящо-пишещата глава се премества един елемент надясно, т.е. след изпълнението на процедурата write главата се е преместила N елемента надясно. Писането може да продължи, докато има място на външния носител.

- Четене от файл: Четенето от файл става с библиотечната процедура

    read(файлова_променлива, променлива1, променлива2, ...,променливаN)

където променлива1, променлива2, ..., променливаN са от типа на елементите на файла. При прочитане на елемент от файла, сочен от четящо-пишещата глава той се зарежда в съответната променлива и главата се премества към следващия елемент надясно. Така след завършване на процедурата read главата се преместила N елемента надясно. Четенето ще продължи, докато се стигне до края на файла.

slide7

4.4. Затваряне на файл.

Когато завърши работата с файла, той трябва да се затвори. Затварянето на файл става с библиотечната процедура

    procedure close(f: file of тип);

където f е файловата променлива.

4.5. Проверка за край на файл.

Когато се чете от един файл, при достигане края на файла трябва да се спре четенето. Проверката за край на файла става чрез библиотечната функция

    function eof(f: file of тип):boolean;

където f е файловата променлива. Тази функция връща true, когато четящо-пишещата глава е достигнала маркера за край на файла или файла е празен и false, когато главата сочи елемент от файла. Обикновено тази функция се поставя в условието на оператора за цикъл while.

Ако името на файла е пропуснато, подразбира се стандарният файл input. Тогава краят на файла е достигнат, ако е прочен символът за край на файл (Ctrl+Z). Ако от клавиатурата не е въведен символ, функцията не е определена. Използването и в този случай води до пауза до въвеждане на символ.

4.6. Стандартни файлове.

Inputи Outputса имена на стандартни файлове в Паскал. Input е свързан със стандартното входно устройство (обикновено клавиатурата), а output-със стандартното изходно устройство (обикновено екрана). Ако в оператора readне е указан файл, подразбира се input. Аналогично, ако в оператора write не е указан файл, подразбира се output.

slide8

Пример 1: Броят на елементите на файла е известен; елементите са числа

{Broia na elementite na faila e izvesten}

program zad1;

var i,n,x:integer;

f: file of integer;

begin

write('n=');read(n);

assign(f,'chisla.dat');

rewrite(f);

for i:=1 to n do begin

write('Vavedete cialo chislo:');read(x);

write(f,x);

end;

close(f);

writeln;

writeln('Vie vavedohte slednite celi cisla:');

reset(f);

for i:=1 to n do begin

read(f,x);

writeln(x)

end;

end.

slide9

Пример 2: Броят на елементите на файла не е известен; елементите са числа

{Broia na elementite na faila e ne e izvesten}

program zad1;

var i,x:integer;

f: file of integer;

begin

assign(f,'chisla2.dat');

rewrite(f);

write('Vavedete cialo chislo:');read(x);

while not eof do begin

write(f,x);

write('Vavedete cialo chislo:');read(x);

end;

close(f);

writeln;

writeln('Vie vavedohte slednite celi cisla:');

reset(f);

while not eof(f) do begin

read(f,x);

writeln(x)

end;

end.

slide10

Пример 3: Броят на елементите на файла не е известен; елементите са числа

{Broia na elementite na faila e ne e izvesten}

program zad1;

var i,x:integer;

f: file of integer;

begin

assign(f,'chisla2.dat');

rewrite(f);

write('Vavedete cialo chislo:');read(x);

while not eof do begin

write(f,x);

write('Vavedete cialo chislo:');readln(x){проблем};

end;

close(f);

writeln;

writeln('Vie vavedohte slednite celi cisla:');

reset(f);

while not eof(f) do begin

read(f,x);

writeln(x)

end;

end.

slide11

Пример 4: Броят на елементите на файла е известен; елементите са числа

{Broia na elementite na faila e izvesten}

program zad1;

var i,n,x:integer;

f: file of integer;

begin

write('n=');read(n);

assign(f,'chisla.dat');

rewrite(f);

for i:=1 to n do begin

write('Vavedete cialo chislo:');readln(x){няма проблем};

write(f,x);

end;

close(f);

writeln;

writeln('Vie vavedohte slednite celi cisla:');

reset(f);

for i:=1 to n do begin

read(f,x);

writeln(x)

end;

end.

slide12

Пример 5: Броят на елементите на файла е известен; елементите са символи

{Broia na elementite na faila e izvesten}

program zad1;

var i,n:integer;

x:char;

f: file of char;

begin

write('n=');read(n);{проблем}

assign(f,'simvoli.dat');

rewrite(f);

for i:=1 to n do begin

write('Vavedete simvol:');read(x);{проблем}

write(f,x);

end;

close(f);

writeln;

writeln('Vie vavedohte slednite simvoli:');

reset(f);

for i:=1 to n do begin

read(f,x);

writeln(x)

end;

end.

slide13

Пример 6: Броят на елементите на файла е известен; елементите са символи

{Broia na elementite na faila e izvesten}

program zad1;

var i,n:integer;

x:char;

f: file of char;

begin

write('n=');readln(n);{няма проблем}

assign(f,'simvoli.dat');

rewrite(f);

for i:=1 to n do begin

write('Vavedete simvol:');readln(x);{няма проблем}

write(f,x);

end;

close(f);

writeln;

writeln('Vie vavedohte slednite simvoli:');

reset(f);

for i:=1 to n do begin

read(f,x);

writeln(x)

end;

end.

slide14

Пример 7: Броят на елементите на файла не е известен; елементите са символи

{Broia na elementite na faila e ne e izvesten}

program zad1;

var x:char;

f: file of char;

begin

assign(f,'simvoli.dat');

rewrite(f);

write('Vavedete simvol:');read(x);{проблем}

while not eof do begin

write(f,x);

write('Vavedete simvol:');read(x);{проблем}

end;

close(f);

writeln;

writeln('Vie vavedohte slednite simvoli:');

reset(f);

while not eof(f) do begin

read(f,x);

writeln(x)

end;

end.

slide15

Пример 8: Броят на елементите на файла не е известен; елементите са символи

{Broia na elementite na faila e ne e izvesten}

program zad1;

var x:char;

f: file of char;

begin

assign(f,'simvoli.dat');

rewrite(f);

write('Vavedete simvol:');readln(x);{проблем}

while not eof do begin

write(f,x);

write('Vavedete simvol:');readln(x);{проблем}

end;

close(f);

writeln;

writeln('Vie vavedohte slednite simvoli:');

reset(f);

while not eof(f) do begin

read(f,x);

writeln(x)

end;

end.

slide16

Пример 9: Броят на елементите на файла не е известен; елементите са символи

{Broia na elementite na faila e ne e izvesten}

program zad1;

var x:char;

f: file of char;

begin

assign(f,'simvoli.dat');

rewrite(f);

write('Vavedete simvol:');read(x);{ не е проблем}

while not eof do begin

readln;

write(f,x);

write('Vavedete simvol:');read(x);{не е проблем}

end;

close(f);

writeln;

writeln('Vie vavedohte slednite simvoli:');

reset(f);

while not eof(f) do begin

read(f,x);

writeln(x)

end;

end.

slide17

4.7. Пряк достъп до елементите на файл.

- Ако трябва да се позиционира главата върху определен елемент от файла за да се прочете или да се запише нова стойност в него се използва библиотечната процедура

    procedure seek(f: file of тип; k: integer);

където f е файловата променлива, а k е номера на елемент от файла, върху който се позиционира главата. Номерата на елементите във файла се номерират от 0 на нататък, т.е. първият елемент е с номер 0. Точно чрез seek се осъществява пряк достъп до файл.

Забележка: файлът трябва да бъде отворенс reset.

Ако броят на елементите на файла е n, то seek(f,n) премества указателя на файла след последния му елемент и функцията eof(f) има стойност true.

- Чрез библиотечната функция

function filesize(f: file ofтип): integer;

се проверява броя на елементите във файл.

Забележка: файлът трябва да бъде отворенс reset.

Ако файлът е празен, функцията връща 0.

- Библиотечната функция

    function filepos(f: file of тип): integer;

определя номера на елемента сочен от четящо-пишещата глава.

Ако указателят е в началото на файла, функцията връща 0. Ако указателят на файла е в края на файла, то filepos(f)=filesize(f).

Забележка: файлът трябва да бъде отворенс reset.

slide18

5. Някой алгоритми за работа с файлове

5.1. Копиране на файлове

program copyfile;

var f,g:file of integer;

x:integer;

begin

assign(f,'chisla.dat');

assign(g,'copyfile.dat');

rewrite(g);

reset(f);

while not eof(f) do begin

read(f,x);

write(g,x);

end;

close(f);close(g);

reset(g);

writeln('Elementi na kopieto:');

while not eof(g) do begin

read(g,x);

write(x,' ');

end;

end.

slide19

5.2. Търсене на елемент във файл

program tarsenet;

var f:file of integer;

x,a:integer;

found:boolean;

begin

assign(f,'chisla.dat');

reset(f);

write('Vavedete chislo:');read(a);found:=false;

if eof(f) then writeln('Failat e prazen. Elementat ne e nameren.')

else begin

read(f,x);

while (not eof(f)) and (not found) do begin

if a=x then found:=true;

read(f,x);

end;

if found then writeln('Elementat e nameren')

else writeln('elementat ne e nameren');

close(f);

end;

end.

slide20

5.3. Включване на елемент във файл.

Операцията е възможна единствено в края на файл.

1- ви вариант: презаписва се първият елемент

program vklucvane;

var f:file of integer;

x:integer;

begin

assign(f,'chisla.dat');

reset(f);

write('Vavedete chislo:');read(x);

write(f,x);

close(f);

end.

slide21

2-ри вариант: добавяне на елемент в края на файл

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

program vklucvane;

var f:file of integer;

x:integer;

begin

assign(f,'chisla.dat');

reset(f);

while not eof(f) do read(f,x);

write('Vavedete chislo:');read(x);

write(f,x);

close(f);

end.

slide22

3-ти вариант: добавяне на елемент в края на файл

var f:file of integer;

x,br:integer;

begin

assign(f,'chisla.dat');

reset(f);

br:=filesize(f);

seek(f,br);

write('Vavedete chislo:');read(x);

write(f,x);

close(f);

end.