BINARNE DATOTEKE U PASCALU Ponavljanje tekstualna datoteka niz
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, 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 Druga … komponenta 0. mjesto 1. mjesto 2. mjesto … Zadnja komponenta
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 7 Kraj datoteke 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. A) Na kraju tjedna program ispisuje sve postignute bodove i broj pokušaja. B) 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 2 1. Nacrtana je datoteka: 7 8 9 11 45 23 21 54 63 74 98 72 31 EOF 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)-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); ?
- Slides: 17