Uvod u programiranje matematika XII predavanje Fajlovi Vesna

  • Slides: 32
Download presentation
Uvod u programiranje - matematika – XII predavanje Fajlovi Vesna Veličković vesna@pmf. ni. ac.

Uvod u programiranje - matematika – XII predavanje Fajlovi Vesna Veličković vesna@pmf. ni. ac. rs

Učitavanje vrednosti - konzolne aplikacije k: integer; x: real; S: string; • read: write

Učitavanje vrednosti - konzolne aplikacije k: integer; x: real; S: string; • read: write (' k = '); read (k) • readln: write (' x = '); readln (x) Očitava nisku znakova sa standardnog ulaza (tastature), konvertuje je u brojčanu vrednost i tu vrednost upisuje u promenljivu x • readln: write (' string = '); readln (S) Očitava nisku znakova sa standardnog ulaza (tastature), i upisuje je u string S • Read i readln se razlikuju samo kod tipa char c: char; readln (c) očitava jedan znak (može da bude i oznaka kraj reda), upisuje ga u promenljivu c, a zatim prelazi u novi red. Sa Readln se ignorišu svi znaci do kraja reda, što nije slučaj kod read.

Štampanje vrednosti - konzolne aplikacije • write: write (' x = ', x) •

Štampanje vrednosti - konzolne aplikacije • write: write (' x = ', x) • writeln štampa oznaku kraja reda • writeln ('Ana') odštampa prvo 'Ana' a zatim predje u novi red Write (i: 2) štampa vrednost integer promenljive i na 2 mesta Write (x: 8: 2) štampa vrednost realne promenljive x na 8 mesta sa dve decimale

Tipovi u Pascalu • Definicija tipa type <ime tipa> = <tip> ; Vrste tipova

Tipovi u Pascalu • Definicija tipa type <ime tipa> = <tip> ; Vrste tipova u Pascalu Prosti (nestruktuirani) Složeni (struktuirani) Redni tipovi INTEGER CHAR BOOLEAN intervalni nabrojani pointer REAL array record string file set

Fajlovi • Kada program završi sa radom, gube se svi podaci koji su bili

Fajlovi • Kada program završi sa radom, gube se svi podaci koji su bili u promenljivama. • Da bi sačuvali te podatke za kasniju upotrebu, pravimo fajlove. • Takodje, ako postoji veliki broj ulaznih podataka, zgodno je da oni budu unapred pripremljeni u nekom fajlu, a pri izvršenju te podatke ne unosimo ručno, već ih čitamo iz fajla. • Fajlovi mogu biti – binarni – tekstualni

Specifičnosti tipa file • File tip se razlikuje od svih ostalih po tome što

Specifičnosti tipa file • File tip se razlikuje od svih ostalih po tome što ne služi samo za obradu podataka, već prvenstveno da bi se program povezao sa fajlovima (datotekama) iz operativnog sistema. • Osnovna uloga file tipa je komunikacija programa sa njegovom okolinom.

Binarni fajlovi • Binarni fajl se sastoji iz sleda komponenata istog tipa. Taj tip

Binarni fajlovi • Binarni fajl se sastoji iz sleda komponenata istog tipa. Taj tip se naziva osnovni tip i može biti bilo koji tip osim fajla. file of <osnovni tip> type nas_fajl = file of integer; var f : nas_fajl;

Naredba Assign. File • Pre bilo kakvog rada sa fajlom, fajl promenljivu treba povezati

Naredba Assign. File • Pre bilo kakvog rada sa fajlom, fajl promenljivu treba povezati sa nekim fajlom iz operativnog sistema. To se radi naredbom Assign. File. var f : file of integer; . . . Assign. File (f, ‘Moj. Fajl. dat’); ili Assign. File (F, Open. Dialog 1. File. Name);

Otvaranje fajlova • Pre korišćenja fajla, treba ga otvoriti. • To se radi na

Otvaranje fajlova • Pre korišćenja fajla, treba ga otvoriti. • To se radi na različite načine, u zavisnosti od toga da li želimo – da kreiramo novi fajl, – da dodajemo u već postojeći fajl, ili – da čitamo iz fajla.

Otvaranje fajla za čitanje • Ako želimo da čitamo iz fajla, otvaramo ga naredbom

Otvaranje fajla za čitanje • Ako želimo da čitamo iz fajla, otvaramo ga naredbom reset. • Da bi se fajl otvorio za čitanje, treba da postoji u operativnom sistemu, inače se prouzrokuje greška. • Kada fajl otvorimo sa reset, on je spreman za čitanje i dostupna je prva komponenta. • Posle operacije čitanja se automatski prelazi na sledeću komponentu fajla.

Otvaranje fajla za pisanje • Ako želimo da upisujemo u fajl, otvaramo ga naredbom

Otvaranje fajla za pisanje • Ako želimo da upisujemo u fajl, otvaramo ga naredbom rewrite. • Ako postoji fajl sa datim imenom u operativnom sistemu, naredbom rewrite se briše njegov sadržaj. Zato treba biti oprezan. • Kada fajl otvorimo sa rewrite , on je spreman za upis. Prva komponenta će se zapisati na početku fajla. • Svaka sledeća komponenta se upisuje na kraj fajla. Posle operacije upisivanja se automatski prelazi na kraj fajla.

Otvaranje fajla za dodavanje sadržaja • Ako želimo da dodamo neki sadržaj u već

Otvaranje fajla za dodavanje sadržaja • Ako želimo da dodamo neki sadržaj u već postojeći fajl, otvaramo ga naredbom append. • Kada fajl otvorimo sa append, on je spreman za dodavanje sadržaja. • Prva dodata komponenta, a i sve ostale, će se upisati na kraj već postojećeg fajla. • Posle operacije upisivanja se automatski prelazi na kraj fajla.

Zatvaranje fajla • Kada završimo sve željene operacije sa fajlom, zatvaramo ga naredbom close

Zatvaranje fajla • Kada završimo sve željene operacije sa fajlom, zatvaramo ga naredbom close (u Pascal-u). • U Delphi-ju naredba close zatvara prozor, pa se za zatvaranje fajla koristi Close. File.

Prisup fajlu • U programiranju postoji više načina za pristupanje podacima u fajlu. •

Prisup fajlu • U programiranju postoji više načina za pristupanje podacima u fajlu. • Postoji – sekvencijalni i – direktni pristup. • Mi ćemo raditi sekvencijalni pristup. • Kod direktnog pristupa možemo direktno pristupiti proizvoljnoj komponenti fajla pomoću naredbe seek (f, n), gde je f fajl promenljiva, a n je indeks komponente koju tražimo.

Učitavanje i upisivanje u binarni fajl • Učitavanje iz binarnog fajla read ( f,

Učitavanje i upisivanje u binarni fajl • Učitavanje iz binarnog fajla read ( f, n); read ( f, a, b, c); • Upisivanje u binarni fajl write ( f, n); write ( f, a, b, c); • Primetite da kod binarnih fajlova ne koristimo readln i writeln.

Tekstualni fajlovi • Tekstualni fajl se sastoji iz sleda znakova (char) podeljenih u redove

Tekstualni fajlovi • Tekstualni fajl se sastoji iz sleda znakova (char) podeljenih u redove (linije). • Njihov tip je Text. Liči na tip file of char, ali ima i dodatne mogućnosti. • eof (f) (skraćenica od “end of file”) je logička funkcija koja ispituje da li se nalazimo na kraju fajla f. • eoln (f) (skraćenica od “end of line”) je logička funkcija koja ispituje da li se nalazimo na kraju neke linije fajla f.

Standardni ulaz i standardni izlaz • • Standardni ulaz je tastatura. Standardni izlaz je

Standardni ulaz i standardni izlaz • • Standardni ulaz je tastatura. Standardni izlaz je ekran. Oni su tipa Text. Sve što znamo za rad sa tastaturom i ekranom u Pascal-u važi i za bilo koji drugi tekstualni fajl.

Učitavanje i upisivanje u tekstualni fajl • Učitavanje iz tekstualnog fajla read ( f,

Učitavanje i upisivanje u tekstualni fajl • Učitavanje iz tekstualnog fajla read ( f, a, b, c); readln ( f, a, b, c); • Upisivanje u tekstualni fajl write ( f, a, b, c); writeln ( f, a, b, c); • Primetite da kod tekstualnih fajlova koristimo readln i writeln.

 • Pri čitanju iz tekstualnog fajla čita se znak po znak. Posle operacije

• Pri čitanju iz tekstualnog fajla čita se znak po znak. Posle operacije čitanja se automatski prelazi na sledeću komponentu fajla. • Ako je potrebno pročitati broj, taj niz znakova se automatski konvertuje u broj odredjenog tipa. • Da ne bi napravili grešku tako što pokušamo da čitamo nepostojeću komponentu fajla, pre svakog čitanja treba ispitati da li se nalazimo na kraju fajla, pomoću funkcije eof.

Iz niza u fajl program Iz. Niza. UFajl; type niz = array [1. .

Iz niza u fajl program Iz. Niza. UFajl; type niz = array [1. . 100] of integer; fajl = file of integer; var a : niz; n : integer; f : fajl; procedure Ufajl (a: niz; n: integer; var f : fajl); . . . begin {program}. . . Ufajl (a, n, f); . . . end.

Iz niza u fajl procedure Ufajl (a: niz; n: integer; var f : fajl);

Iz niza u fajl procedure Ufajl (a: niz; n: integer; var f : fajl); var i : integer; begin Assign. File (f, 'f. dat'); rewrite (f); for i: =1 to n do write (f, a[i]); Close. File (f); end;

Iz fajla u niz program Iz. Fajla. UNiz; type niz = array [1. .

Iz fajla u niz program Iz. Fajla. UNiz; type niz = array [1. . 100] of integer; fajl = file of integer; var a : niz; n : integer; f : fajl; procedure Uniz (var f : fajl; var a: niz; var n: integer); . . . begin {program}. . . Uniz (f, a, n); . . . end.

Iz fajla u niz procedure Uniz (var f : fajl; var a: niz; var

Iz fajla u niz procedure Uniz (var f : fajl; var a: niz; var n: integer); begin Assign. File (f, 'f. dat'); reset (f); n : = 0; while not eof (f) do begin n : = n + 1; read (f, a[n]); end; Close. File (f); end;

Fajl slogova • Dat je fajl f čije su komponente slogovi, broj i njegov

Fajl slogova • Dat je fajl f čije su komponente slogovi, broj i njegov kvadratni koren. U fajl g upisati one brojeve iz f čiji su koreni veći od 100. type slog = record n : integer; koren : real; end; var f : file of slog; g : file of integer; a : slog;

begin Assign. File (f, 'f. dat'); reset (f); Assign. File (g, 'g. dat'); rewrite

begin Assign. File (f, 'f. dat'); reset (f); Assign. File (g, 'g. dat'); rewrite (g); while not eof (f) do begin read (f, a); if a. koren > 100 then write (g, a. n); end; Close. File (f); Close. File (g); end;

 • Data su dva tekstualna fajla f i g. Ispitati da li su

• Data su dva tekstualna fajla f i g. Ispitati da li su jednaki, do na prazninu. var f, g : Text; x, y : char; kraj : boolean; procedure trazi (var z: char; var h: text); begin z : = ' '; while (z = ' ') and not eof (f) do read (h, z); end;

begin Assign. File (f, 'f. dat'); reset (f); Assign. File (g, 'g. dat'); rewrite

begin Assign. File (f, 'f. dat'); reset (f); Assign. File (g, 'g. dat'); rewrite (g); trazi (f, x); trazi (g, y); kraj : = false; while not kraj and not eof (f) and not eof (g) do begin if x <> y then kraj : = true else begin trazi (f, x); trazi (g, y); end;

if kraj then <štampaj 'Razlikuju se. ‘> else if eof (f) then if eof

if kraj then <štampaj 'Razlikuju se. ‘> else if eof (f) then if eof (g) then <štampaj 'Isti su. '> else <štampaj 'g je duzi. '> else <štampaj 'f je duzi. '> Close. File (f); Close. File (g); end;

Spajanje fajlova (Merge) • Data su dva fajla f i g uredjena po rastućem

Spajanje fajlova (Merge) • Data su dva fajla f i g uredjena po rastućem redosledu. Formirati fajl h koji sadrži sve elemente fajlova f i g onoliko puta koliko se oni javljaju. Fajl h treba da bude uredjen po rastućem redosledu. var f, g, h : text; x, y : char; ima_x, ima_y : boolean; begin Assign. File (f, 'f. dat'); reset (f); Assign. File (g, 'g. dat'); reset(g); Assign. File (h, 'h. dat'); rewrite (h);

ima_x : = false; if not eof (f) then begin ima_x : = true;

ima_x : = false; if not eof (f) then begin ima_x : = true; read (f, x); end; ima_y : = false; if not eof (g) then begin ima_y : = true; read (g, y); end;

while ima_x and ima_y do if x < y then begin write (h, x);

while ima_x and ima_y do if x < y then begin write (h, x); if not eof (f) then read (f, x) else ima_x : = false end; else begin write (h, y); if not eof (g) then read (g, y) else ima_y : = false end;

while not eof (f) do begin read (f, x); write (h, x); end; while

while not eof (f) do begin read (f, x); write (h, x); end; while not eof (g) do begin read (g, y); write (h, y); end; Close. File (f); Close. File (g); Close. File (h); end.