180 likes | 364 Views
Uvod u programiranje - matematika – IX predavanj e. Vesna Veličković vesna@pmf.ni.ac.rs. Tipovi u Pascalu. Definicija tipa type <ime tipa> = <tip> ; Vrste tipova u Pascalu P rosti (nestruktuirani) Složeni (struktuirani) R edni tipovi pointer INTEGER REAL array CHAR record
E N D
Uvod u programiranje- matematika –IX predavanje Vesna Veličković vesna@pmf.ni.ac.rs
Tipovi u Pascalu • Definicija tipa type <ime tipa> = <tip> ; Vrste tipova u Pascalu Prosti (nestruktuirani)Složeni (struktuirani) Redni tipovipointer INTEGER REAL array CHAR record BOOLEAN string intervalni file nabrojani set
Slog = record • Više promenljivih, uobičajeno različitih tipova, povezujemo u jednu celinu, slog. • Ta celina ima jedinstveno ime. • Promenljive koje čine slog imaju svoje ime preko koga im se pristupa. One se nazivaju poljima. • Slog se realizuje pomoću record tipa.
Record tip record <ime polja> { , <ime polja> } : <tip> { ; <ime polja> { , <ime polja> } : <tip> } end type datum = record dan : 1 .. 31; mesec : 1 .. 12; godina : integer; end;
Upotreba record tipa var danas, sutra : datum; begin ... danas.dan := 26; sutra.god:=2013; ... sutra := danas; ... end;
Promenljiva i tip • Tip opisuje kako će neka promenljiva tog tipa izgledati kada se bude napravila. • Definicijom tipa se ne pravi nikakva promenljiva (ne odvaja se memorijski prostor) • Deklaracijom promenljive se odvaja memorijski prostor za nju (primenljiva se pravi), dodeljuje joj se ime i navodi njen tip. Tip odredjuje kako se tumače bitovi te promenljive i šta se sa njom može raditi.
With naredba • Da ne bi stalno ponavljali ime record promenljive, možemo koristiti with naredbu. with danas do dan := 7; mesec := 4; godina := 2013; end;
Učitavanje i štampanje record tipa • Učitavanje i štampanje record tipa se vrši po-komponentno. procedure ucitaj (var d:datum); begin read (d.dan); read (d.mesec); read (d.godina); end; procedurestampaj (d:datum); begin write (d.dan); write (d.mesec); write (d.godina); end;
program primer; type datum = record dan ... end; procedure ucitaj (var d: datum); ... procedure ucitaj ( d: datum); ... var d1, d2, d3 : datum; begin ucitaj (d1); ucitaj (d2); ... stampaj (d3); end.
Domaći zadatak 15 • Deklarisati tip datum. • Učitati jedan datum i odrediti i odštampati datum sutrašnjeg dana. • Godina je prestupna ako je deljiva sa 4 ali nije deljiva sa 100, ili je deljiva sa 400.
Primer Trougao • Deklarisati tip trougao. • Učitati jedan trougao. • Izračunati i odštampati njegovu površinu i obim.
program tr; type tacka = record x, y : real; end; trougao = record A, B, C : tacka; end; var t : trougao; P, O : real; procedure ucitaj (var t: trougao); begin read (t.A.x, t.A.y); read (t.B.x, t.B.y); read (t.C.x, t.C.y); end;
function rastojanje (M,N:tacka) : real; begin rastojanje := sqrt (sqr(M.x-N.x) + sqr(M.Y-N.y)); end; function Obim (t:trougao) : real; var sa, sb, sc : real; begin sa := rastojanje (t.B, t.C); sb := rastojanje (t.A, t.C); sc := rastojanje (t.A, t.B); Obim := sa + sb + sc; end;
function Povrsina (t:trougao) : real; var sa, sb, sc, s : real; begin sa := rastojanje (t.B, t.C); sb := rastojanje (t.A, t.C); sc := rastojanje (t.A, t.B); s := (sa + sb + sc) / 2; Povrsina := sqrt (s*(s-sa)*(s-sb)*(s-sc)); end; begin {program} ucitaj (t); O := Obim (t); writeln ('O = ', O); P := Povrsina (t); writeln ('P = ', P); end.
Domaći zadatak 16 • Deklarisati tip tacka. • Učitati jednu tačku u ravni i ispitati da li pripada oblasti sa slike.
Primer • Deklarisati tip krug. • Učitati dva kuga iispitati da li imaju zajedničkih tačaka. program krugovi; type tacka = record x,y : real; end; krug = record O : tacka; r : real; end;
procedure UcitajKrug (var k : krug); begin read (k.O.x, k.O.y, k.r); end; function d (A, B : tacka): real; begin d := sqrt(sqr(A.x-B.x) + sqr(A.y-B.y)) end; function Imaju (k1, k2 : krug); begin Imaju := d(k1.O,k2.O) < k1.r+k2.r end;
begin{program} UcitajKrug (k 1); UcitajKrug (k 2); if Imaju (k1,k2) then writeln(’Imaju zajednickih tacaka’) else writeln (‘Nemaju zajednickih tacaka’) end.