Uvod u programiranje matematika XII predavanje Fajlovi Vesna
- Slides: 32
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 (' 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) • 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 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 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 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 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 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 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 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 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ć 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 (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. • 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, 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 (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 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, 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 č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. . 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); 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. . 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 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 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 (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 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 (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 (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 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; 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); 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 not eof (g) do begin read (g, y); write (h, y); end; Close. File (f); Close. File (g); Close. File (h); end.
- Objektno orijentisano programiranje
- Integral substitusi
- Induksi matematika diskrit
- Perbedaan matematika ekonomi dan non matematika ekonomi
- Vesna turuk
- Vesna radoman
- Dr neven tučkar
- Mletačka dalmacija
- Dr vesna gotovac
- Vesna grupa
- Bůh vesna
- Vesna bujan
- Vesna knezevic predic
- Nicole schuurman
- Vesna tornjanski
- Vesna turuk
- Vesna radoman
- Varnostni odklon
- Kurje oko latinski naziv
- Vesna sokol
- Vesna loborec
- Bog jarilo
- Vesna bjedov
- Vesna jevremovic
- Radne sedmice fon
- Vesna turuk
- Vesna antonic
- čigumiji
- Vesna nemec
- Vesna sehovac
- Vesna futo vugdelija
- Komunikacija psihologija
- Vesna baltezarevic