170 likes | 324 Views
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
E N D
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
Binarna datoteka • datoteka u koju spremamo niz istovrsnih podataka • podaci u datoteci imaju isti oblik kao podaci u memoriji • nije čitljiva u tekst editoru
Deklaracija varijable Varf : file oftip podataka koje spremamo; x : tip podataka koje spremamo; Primjer: var f:file ofinteger; x:integer;
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.
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 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; 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));? Na kojem mjestu se nalazi pokazivač nakon izvođenja instrukcije seek(f, filesize(f)-3);? Na kojem mjestu se nalazi pokazivač nakon izvođenja instrukcije seek(f, filesize(f) div 2);? Na kojem mjestu se nalazi pokazivač nakon izvođenja instrukcije seek(f, 1);? 21 7 45 98 EOF