Binarne datoteke u Pascalu
Ponavljanje – tekstualna datoteka niz znakova organiziranih u redove datoteku možemo otvoriti bilo kojim programom za rad s tekstom čitamo redom od početka do kraja datoteke procedure read, readln, write, writeln pomiču pokazivač na sljedeći znak ili početak sljedećega reda
Ponavljanje – tekstualna datoteka
Binarna datoteka datoteka u koju spremamo niz istovrsnih podataka podaci u datoteci imaju isti oblik kao podaci u memoriji nije čitljiva u tekst editoru
Organizacija datoteke Početak datoteke Pokazivač Kraj datoteke Prva komponenta Druga komponenta … Zadnja komponenta 0. mjesto 1. mjesto 2. mjesto
Deklaracija varijable Var f : file of tip podataka koje spremamo; x : tip podataka koje spremamo; Primjer: var f:file of integer; x:integer; Početak datoteke Kraj datoteke 7 8 9 17 … 67
Procedure i funkcije Procedure: assign(f,put); rewrite(f); reset(f); close(f); read(f,x); write(f,x); seek(f,n); - postavlja pokazivač na mjesto s oznakom n
Procedure i funkcije Funkcije: eof(f) filesize(f) – vraća broj komponenata filepos(f) – vraća trenutačnu vrijednost pokazivača (oznaku mjesta na kojem se nalazi)
Zadatak Igrač u svakom pokušaju sprema postignute bodove u (binarnu) datoteku. Na kraju tjedna program ispisuje sve postignute bodove i broj pokušaja. Najveće postignute bodove i u kojem pokušaju su ostvareni.
A) Ispis svih spremljenih bodova var f:file of integer; x:integer; begin assign(f,'d:\bodovi'); reset(f); while not(eof(f)) do begin read(f,x); write(x,' '); end; close(f); readln; end. ili
A) Ispis svih spremljenih bodova var f:file of integer; x,i:integer; begin assign(f,'d:\bodovi'); reset(f); for i:=1 to filesize(f) do begin read(f,x); write(x,' '); end; close(f); readln; end.
Izlazni ekran
U skladu s tekstom zadatka var f:file of integer; x,i:integer; begin assign(f,'d:\bodovi'); reset(f); for i:=1 to filesize(f) do begin read(f,x); writeln(i,’. pokusaj: ’,x); end; close(f); readln; end.
B) Najveći bodovi
B) Najveći bodovi assign(f,'d:\bodovi'); reset(f); rbr_max:=0; read(f,max); for i:=1 to filesize(f)-1 do begin read(f,x); if x>max then begin max:=x; rbr_max:=filepos(f); end; writeln('Broj pokusaja: ',rbr_max); write('Ostvareni bodovi: ',max); close(f);
Zadaci Nacrtana je datoteka: Na kojem mjestu se nalazi pokazivač nakon izvođenja instrukcije seek(f, 5);? Na kojem mjestu se nalazi pokazivač nakon izvođenja instrukcije seek(f, filesize(f));? seek(f, filesize(f)-3);? seek(f, filesize(f) div 2);? seek(f, 1);? 2 7 8 9 11 45 23 21 54 63 74 98 72 31 EOF 7 45 21 98 EOF