270 likes | 426 Views
Uvod u programiranje - matematika – II I predavanj e. Vesna Veličković vesna@pmf.ni.ac.rs. CASE naredba. case <izraz> of <konstanta> { , <konstanta> } : <naredba>; { <konstanta> { , <konstanta> } : <naredba> ; } [ else <naredba> ] e nd
E N D
Uvod u programiranje- matematika –IIIpredavanje Vesna Veličković vesna@pmf.ni.ac.rs
CASE naredba case <izraz> of <konstanta> { , <konstanta>} : <naredba>; { <konstanta> { , <konstanta>} : <naredba> ; } [ else<naredba> ] end • Izraz iza case naziva se selektor. On mora biti nekog rednog tipa. • Konstanta može biti pridružena najviše jednoj naredbi.
Izvršenje CASE naredbe • Prvo se izračuna vrednost selektora. • Izvrši se naredba pridružena toj vrednosti. • Ako se vrednost selektora ne nalazi u spisku konstanti case naredbe, i • ako postoji else grana, izvrši se naredba iza else. • ako ne postoji else grana, nista se ne radi.
case mesec of 1, 3, 5, 7, 8, 10, 12 : brojDana := 31; 4, 6, 9, 11 : brojDana := 30; 2 : if godina mod 4 = 0 then brojDana := 29 else brojDana := 28 end
Domaći zadatak 4 • Učitati jedan jednocifren broj i odštampati ga slovima. Npr. ako se učita 7 treba odštampati “sedam”. • Pokušajte isto ovo da uradite sa dvocifrenim brojem.
Tipovi u Pascalu • Definicija tipa type <ime tipa> = <tip> ; Vrste tipova u Pascalu Prosti (nestruktuirani)Složeni (struktuirani) Redni tipovipointer INTEGERREAL array CHAR record BOOLEAN string intervalni file nabrojaniset
Integer tipovi u Delphi-u Integer = LongInt, Cardinal = LongWord
Real tipovi u Pascal-u Comp je 64-bitni integer (opseg vrednosti -263 .. 263-1)
Real tipovi u Delphi-u Real = Double
Intervalni tip <konstanta 1> .. <konstanta 2> • Konstante treba da budu istog, rednog tipa. • Ovaj tip se naziva osnovni tip. • Skup mogućih vrednosti je skup svih vrednosti osnovnog tipa izmedju vrednosti zadatih konstanti, računajući i njih. type interval = 3..6; čine celi brojevi 3,4,5,6. Osnovni tip je integer. • Sve operacije, funkcije i relacije se prenose iz osnovnog tipa.
Nabrojani tip ( <konstanta> { , <konstanta> } ) . • Skup mogućih vrednosti je skup svih nabrojanih vrednosti. type dan = (pon,utor,sreda,cet,pet,sub,ned); • Ord prve vrednosti je 0, ord druge je 1 itd. • Na osnovu ovoga se definišu funkcije pred i succ i relacije. ord(sreda) = 2, cet < ned, succ (pet) = sub
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 tipova u Pascal-u 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. fileof <osnovni tip> type nas_fajl = fileof integer; var f : nas_fajl;
Naredba assign • Pre bilo kakvog rada sa fajlom, fajl promenljivu treba povezati sa nekim fajlom iz operativnog sistema. To se radi naredbom assign. var f : fileof integer; ... assign (f, ‘MojFajl.dat’);
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 CloseFile.
Prisup fajlu • U programiranju postoji više načina za pristupanje podacima u fajlu. • U Pascal-u postoje • 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 fileofchar, 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 u Pascal-u tipa text. • Sve što znamo za rad sa tastaturom i ekranom 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.