Uvod u programiranje - matematika -

Download Report

Transcript Uvod u programiranje - matematika -

Uvod u programiranje
- matematika –
III predavanje
Vesna Veličković
[email protected]
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 tipovi
INTEGER
CHAR
BOOLEAN
intervalni
nabrojani
pointer
REAL
array
record
string
file
set
Integer tipovi u Pascal-u
Ime tipa
opseg vredniosti
byte
bit
ShortInt
-128 .. 127
1
8
Integer
-32 768 .. 32 767
2
16
LongInt
-2 147 483 648 .. 2 147 483 647
4
32
Byte
0 .. 255
1
8
Word
0 .. 65 535
2
16
Integer tipovi u Delphi-u
Ime tipa
opseg vredniosti
format
ShortInt
-128 .. 127
sign. 8-bit
SmallInt
-32 768 .. 32 767
sign. 16-bit
LongInt
-2 147 483 648 .. 2 147 483 647
sign. 32-bit
Int64
-263 .. 263-1
sign. 64-bit
Byte
0 .. 255
unsign. 8-bit
0 .. 65 535
unsign. 16-bit
0 .. 4 294 967 295
unsign. 32-bit
World
LongWord
Integer = LongInt, Cardinal = LongWord
Real tipovi u Pascal-u
opseg vredniosti
značajne
cifre
bit
Real
2.9 e-39 .. 1.7 e38
11 - 12
6
Single
1.5 e-45 .. 3.4 e38
7-8
4
Double
5.0 e-324 .. 1.7 e308
15 - 16
8
3.6 e-4951 .. 1.1 e4932
19 - 20
10
-9.2 e-18 .. 9.2 e18
19 - 20
8
Ime tipa
Extended
Comp
Comp je 64-bitni integer (opseg vrednosti -263 .. 263-1)
Real tipovi u Delphi-u
opseg vredniosti
značajne
cifre
bit
Real48
2.9 e-39 .. 1.7 e38
11 - 12
6
Single
1.5 e-45 .. 3.4 e38
7-8
4
Double
5.0 e-324 .. 1.7 e308
15 - 16
8
3.6 e-4951 .. 1.1 e4932
19 - 20
10
-263 .. 263-1
19 - 20
8
19 - 20
8
Ime tipa
Extended
Comp
Currency
Real = Double
-922337203685477.5808 ..
922337203685477.5807
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.
file of <osnovni tip>
type
nas_fajl = file of 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 : file of 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 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 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.