Professional Documents
Culture Documents
Osnove Pascala1
Osnove Pascala1
Osnove Pascala1
PASCAL
Sintaksa definira stroga pravila pisanja rijei nekog jezika. Npr. reenica:
Idem kui autobuzom ima sintaksnu greku jer jedna rije nije ispravno
napisana.
Gramatika jezika definira pravila povezivanja rijei u reenice. Npr. reenica:
Jue u ii na izlet je gramatiki pogrena iako ne sadri greke u sintaksi.
Semantika definira znaenje, odnosno smisao reenice. Mogue je formirati
sintaksno i gramatiki ispravne reenice koje su potpuno besmislene, dakle
semantiki pogrene, npr.: Dva mlada ptia plave kose sjede na banderi i
umau keks u struju.
Sintaksa i gramatika nekog programskog jezika mogu se precizno opisati
formalnim matematikim pravilima (tzv. Backus-Naurova forma), to
omoguava prevoditelju (kompilatoru) da izvri detaljnu provjeru sintakse i
gramatike napisanog programa i ukae na eventualne greke. Sa
semantikom je znatno vei problem, jer ju je praktino nemogue u
potpunosti formalizirati, tako da sematike greke kompilator ne moe otkriti,
ve se one otkrivaju u fazi testiranja programa.
Primjer:
CONST istina=true;
pi=3.14159;
inch=2.54;
Primjer:
VAR ocjena: integer;
prosjek:real;
slovo: char;
Svaka promjenljiva mora imati svoj tip podataka koji odreuje skup
vrijednosti (domenu) koje promjenljiva moe uzimati. Svi tipovi podataka u
Pascalu se mogu podijeliti na proste tipove i sloene tipove.
U proste tipove podataka spadaju sljedei tipovi podataka:
CJELOBROJNI TIP
REALNI TIP
ZNAKOVNI TIP
LOGIKI (BOOLOV) TIP
POBROJANI I
INTERVALNI TIP.
Prva etiri navedena tipa su osnovni tipovi,a preostala dva su izvedeni tipovi
podataka.
Realni tip predstavlja konani podskup skupa racionalnih brojeva. Ovaj tip
omoguava zaposivanje decimalnih brojeva npr. -3.56, 3567.987,
-0.099999 ...
Vrlo velike i male vrijednosti realnih brojeva zapisuju se u sljedeem obliku:
mantisa*10eksponent
Ovakav nain zapisivanja brojeva poznat je kao nain pisanja sa pokretnim
zarezom, gdje eksponent pokazuje za koliko mjesta treba pomaknuti
decimalnu tokuulijevo ili udesno ovisno o tome da li je eksponent pozitivan
ili negativan. Na raunalu broj u pokretnom zarezu se zapisuje u obliku:
mantisa E predznak eksponent
npr. 2.5E4 - vrijednost 2.5 x 10 =2.5 x 10000=25000
4
Pridruivanje vrijednosti
Nekoj promjenivoj x dodjeljuje se vrijednost pomou iskaza
pridruivanja koji ima oblik:
x:=izraz;
gdje je x promjenjiva kojoj se dodjeljuje vrijednost izraza sa desne
strane, npr.
x:=a+b;
prosjek:=sumaocjena/brojocjena;
s:=s+i;
a:=15;
b:=sqrt(a);...
Naredbe za unos
Naredba pascala kojom se osigurava itanje (unos) podataka je read
odnosno readln
Sintaksa naredbe readln je:
readln(lista promjenjivih);
npr. readln(a,b,c,d);
Sintaksa naredbe read je ista kao i kod naredbe readln, meutim ove dvije
naredbe se razlikuju i to po tome to se nakon izvravanja naredbe readln
pokaziva za uitavanje novog podatka pomjera na poetak novog reda, to
kod naredbe read nije sluaj.
Naredbe za ispis
Ispis poruka, vrijednosti neke promjenljive ili rezultata obrade vri se pomou
naredbi write i writeln. Naredba writeln ima oblik:
writeln(lista promjenjivih, konstanti, izraza);
pri emu su promjenljive, konstante i izrazi u zagradi odvojeni zarezima.
Primjeri:
writeln ('a=',5,'b=',3);
writeln(P=,p);
writeln(Zbroj je: ;a+b);
writeln(Pascal);
writeln(x:5:2); za ispis varijable x rezervirano je 5
mjesta, od ega 2 za decimale.
program rastojanje;
uses crt;
var x1,x2,y1,y2,d:real;
{ x1, y1 koordinate prve toke}
{ x2, y2 koordinate druge toke}
{ d rastojanje}
begin
crlscr;
writeln(Unesi koordinate prve toke);
readln(x1,y1);
writeln(Unesi koordinate druge toke);
d:=sqrt(sqr(x2-x1) + sqr(y2-y1));
writeln(Rastojanje izmeu toaka je:, d:5:3);
readln;
end.
program standard;
const x=25.0;
var kv,ko,aps,prirodni:real;
begin
aps:=abs(x);
prirodni:=ln(x);
kv:=sqr(x);
ko:=sqrt(x);
writeln('apsolutna vr.(x)=',aps);
writeln('kvadrat(x)=',kv:4:2);
writeln(kv.korijen(x)=',ko:4:2);
writeln(ln(x)=,prirodni:5:3);
end.
program cel_far;
uses crt;
var tempC, tempF: real;
begin
crlscr;
writeln(Unesi temperaturu u Celzijima);
readln(tempC);
tempF:=tempC*1.8+32;
writeln(Temperatura po Forenhajtu, tempF:8:2)
end.
NAREDBA IF
Jednostruki izbor: IF logiki_izraz THEN S
Ako logiki izraz ima vrijednost istina (true) onda e se izvriti sekvenca
naredbi S.
npr. IF a>b THEN writeln('a je vee od b');
NAREDBA CASE
Sintaksa naredbe:
CASE selektorski_izraz OF
L1:S1;
L2:S2;
L3:S3;
.
Ln:Sn
END;
.
npr CASE round(prosjek) OF
1: writeln('nedovoljan');
2: writeln('dovoljan');
3:writeln('dobar');
4:writeln('vrlodobar');
5:writeln('odlian')
END;
program ocjene;
var ocjena : integer;
begin
Writeln('Unesi ocjenu : ');
Readln(ocjena);
case ocjena of
1: WriteLn('Nedovoljan');
2: WriteLn('Dovoljan');
3: WriteLn('Dobar');
4: WriteLn('Vrlo dobar');
5: WriteLn('Odian');
End;
End.
Srednja mjeovita kola epe | Robert Vrbi
Vjeba
program ocjene2;
var ocjena:integer;
begin
write('unesi ocjenu: ');
readln(ocjena);
if ocjena=1 then
writeln('nedovoljan')
else if ocjena=2 then
writeln ('dovoljan')
else if ocjena=3 then
writeln ('dobar')
else if ocjena=4 then
writeln ('vrlo dobar')
else if ocjena=5 then
writeln ('odlian')
end.
Srednja mjeovita kola epe | Robert Vrbi
Iskazi ponavljanja - petlje
program suma;
uses crt;
var i, s: longint;
begin
clrscr;
s:=0;
for i:=1 to 1000 do s:=s+i;
writeln('zbroj svih brojeva od 1 do 1000 iznosi',s);
end.
Fibonaccijev niz se esto povezuje i sa brojem zlatnog reza fi (phi, ), ili brojem
kojeg mnogi zovu i "Boanskim omjerom". Uzmemo li jedan dio Fibonaccijevog
niza, 2, 3, 5, 8, te podijelimo li svaki slijedei broj s njemu prethodnim, dobit
emo uvijek broj priblian broju 1,618 (3/2=1,5; 5/3=1,66; 8/5=1,6). Broj 1,618
jeste broj fi. Odnosi mjera kod biljaka, ivotinja i ljudi, sa zapanjujuom
preciznou se pribliava broju fi.
WHILE petlja
Iskaz WHILE omoguava izvravanje nekog iskaza sve dok je neki
uvjet ispunjen, odnosno istina (true). Kada uvjet prestane biti istina,
prestaje i izvravanje iskaza, odnosno iskae se iz petlje i program se
nastavlja izvravanjem iskaza koji je izvan WHILE strukture.
while log_izraz do iskaz;
program suma;
uses crt;
var i, s: longint;
begin
clrscr;
s:=0;
i:=1;
while i<=1000 do
begin
s:=s+i;
i:=i+1;
end;
writeln('zbroj svih brojeva od 1 do 1000 iznosi',s);
end.
program suma;
uses crt;
var i, s: longint;
begin
clrscr;
s:=0;
i:=1;
repeat
s:=s+i;
i:=i+1;
until i>1000;
writeln('zbroj svih brojeva od 1 do 1000 iznosi ',s);
end.