2. Deklariranje varijabli
• Deklariranje varijabli u Pascalu možemo
izvršiti na 3 mjesta:
- izvan svih potprograma
- unutar potprogram ili bloka
- u definiciji potprograma
20.1.2014
GLOBALNE I LOKALNE VARIJABLE 2
3. Globalne varijable
• Deklarirane u glavnom dijelu programa
• Vrijednosti poznate u svim dijelovima
programa
• Možemo ih koristiti u svakom dijelu
programa
20.1.2014
GLOBALNE I LOKALNE VARIJABLE 3
4. Lokalne varijable
• Deklarirane unutar nekog potprograma
• Mogu se koristiti samo unutar tog
potprograma
20.1.2014
GLOBALNE I LOKALNE VARIJABLE 4
5. Zašto lokalne varijable?
• Olakšavanje postupka ispravljanja
pogrešaka
• Štedi se memorijski prostor
• Težiti što većem broju lokalnih a što
manjem broju globalni varijabli
20.1.2014
GLOBALNE I LOKALNE VARIJABLE 5
6. Početne vrijednosti
• Globalne varijable imaju početnu
vrijednost jednaku 0
• Početna vrijednost lokalne varijable je
neodređena i ovisi o sadržaju koji se
koristio u memoriji prije izvođenja
programa
20.1.2014
GLOBALNE I LOKALNE VARIJABLE 6
7. Napomene
• Potprogrami mogu promijeniti vrijednost
globalnih varijabli
• Promjene globalnih varijabli dobro raditi u
glavnom programu, ako to procedura ili
funkcija moraju raditi dobro je da to bude
preko formalnih parametara
• Imena lokalnih i globalnih varijabli u
jednom kodu mogu biti ista
20.1.2014
GLOBALNE I LOKALNE VARIJABLE 7
8. Primjer 1
• Napisati kod koji će imati glavni dio programa i
proceduru “Znak”
• U glavnom programu potrebno je deklarirati tri
varijable (a, b i c) tipa char i inicirati njihove
vrijednosti dok ćemo u proceduri deklarirati
varijable b i d te inicijalizirati vrijednost svih
varijabli
• Potrebno je ispisati vrijednost varijabli u glavnom
programu (prije i poslije poziva procedure) te u
samoj proceduri
20.1.2014
GLOBALNE I LOKALNE VARIJABLE 8
9. Rješenje primjera 1
program znakovi;
var a, b, c: char;
procedure Znak;
var b, d: char;
begin
a := '+';
b := '*';
c := '+';
d := '*';
writeln('Ispis u proceduri');
writeln('a:',a,' b:',b,' c:',c,' d:',d);
writeln;
end;
20.1.2014
GLOBALNE I LOKALNE VARIJABLE 9
10. Rješenje primjera 1 (2)
begin
a := '*';
b := '+';
c := '*';
writeln('Ispis u glavnom prije poziva procedure');
writeln('a:',a,' b:',b, ' c: ',c);
writeln;
Znak;
writeln('Ispis u glavnom nakon poziva procedure');
writeln('a:',a,' b:',b, ' c:',c);
writeln;
end.
20.1.2014
GLOBALNE I LOKALNE VARIJABLE 10
11. Zadatak 1
• Napisati program koji tri broja x, y i z
sortira prema rastućem poretku od većeg
prema manjem. Vrijednosti ova tri broja se
unose u glavnom dijelu programa
• Program koristiti proceduru naziva “sort”
kojom se razmjenjuju vrijednosti dvije
varijable
20.1.2014
GLOBALNE I LOKALNE VARIJABLE 11
12. Zadatak 1- rješenje
program poredak;
var
x, y, z : integer;
procedure sort(var a, b : integer);
var tmp : integer;
begin
tmp:=a;
a:=b;
b:=tmp
end;
begin
write('Unesi x: ');
readln(x);
write('Unesi y: ');
readln(y);
write('Unesi z: ');
readln(z);
if x>y then sort(x,y);
if x>z then sort(x,z);
if y>z then sort(y,z);
writeln('Sortirano: ', x,' ', y,' ' ,z);
end.
20.1.2014
GLOBALNE I LOKALNE VARIJABLE 12
13. Primjer 2
• Potrebno je napisati program sa 2 procedure A i B,
B je definirana i poziva se unutar A
• Po dijelovima programa definirati i inicirati varijable na ovaj
način: glavni program: x = 1
procedura A: x i y = 0
procedura B: x, y i z =1
• Ispisati vrijednost varijabli: unutar glavnog programa nakon
poziva procedure A, unutar procedura A i B te u proceduri
A nakon poziva procedure B
20.1.2014
GLOBALNE I LOKALNE VARIJABLE 13
14. Primjer 2 - rješenje
program d;
var x: integer;
procedure A;
var y: integer;
procedure B;
var z: integer;
begin
x := 1;
y := 1;
z := x + y;
writeln('U proceduri B x=' , x , ' y=',y, ' z=', z);
writeln;
end;
20.1.2014
GLOBALNE I LOKALNE VARIJABLE 14
15. Primjer 2 rješenje (2)
begin
x := 0;
y := 0;
writeln('U proceduri A x=' , x , ' y=', y);
writeln;
B;
writeln('U proceduri A nakon što je pozvana procedura B x=' , x , ' y=',
y);
writeln;
end;
begin
x := 10;
A;
writeln('U glavnom programu nakon poziva procedure A x=', x);
writeln;
end
20.1.2014
GLOBALNE I LOKALNE VARIJABLE 15
16. Zadatak 2
• Napisati program kojim se u proceduri
“zbroj” traži suma brojeva djeljivih sa 7 u
skupu brojeva od 100 do 200
• Rezultat ispisati u glavnom dijelu
programu
20.1.2014
GLOBALNE I LOKALNE VARIJABLE 16
17. Zadatak 2 - rješenje
program prog;
var s : integer;
procedure zbroj(var s1: integer);
var i, ss1 : integer;
begin
ss1 := 0;
for i := 100 to 200 do
if (i mod 7 = 0) then ss1 := ss1+i;
s1 :=ss1;
end;
begin
zbroj(s);
writeln('Trazeni zbroj je: ',s);
end.
20.1.2014
GLOBALNE I LOKALNE VARIJABLE 17
18. Primjer 3
• Napisati kod koji će u glavnom dijelu
programa tražiti unos 2 broja
• U proceduri “minmax” se gleda koji od ta
dva broja je veći a koji manji te ispisujemo
minimum i maksimum
20.1.2014
GLOBALNE I LOKALNE VARIJABLE 18
19. Primjer 3 - rješenje
program mim;
var a, b: integer;
procedure minmax;
var min, max: integer;
begin
if a>b then
begin
min := b;
max := a;
writeln('Minimum je:', min);
writeln('Maksimum je:', max);
end;
if a<b then
begin
min := a;
max := b;
20.1.2014
GLOBALNE I LOKALNE VARIJABLE 19
20. Primjer 3 – rješenje (2)
writeln('Minimum je:', min);
writeln('Maksimum je:', max);
end;
end;
begin
writeln('Unesite broj a:');
readln(a);
writeln('Unesite broj b:');
readln(b);
minmax;
end.
20.1.2014
GLOBALNE I LOKALNE VARIJABLE 20
21. Zadatak 3
• Potrebno je napisati program koji će u
glavnom dijelu unositi broj sekundi.
• U proceduri “pretvorba” se unesen broj
pretvara u sate, minute i sekunde i to se
ispisuje
20.1.2014
GLOBALNE I LOKALNE VARIJABLE 21
22. Zadatak 3 - rješenje
program prog;
var n: integer;
procedure pretvorba;
var sat, sek, min: integer;
begin
sat := n div 3600;
sek := n mod 3600;
min := sek div 60;
sek := sek mod 60;
writeln('Pretvoreno= ',sat, ' h ',min,' min i ',sek,' sek');
end;
begin
writeln('Unesite broj sekundi:');
readln(n);
pretvorba;
end.
20.1.2014
GLOBALNE I LOKALNE VARIJABLE 22
23. Zadaci za zadaću
• Napisati program u kojem se u glavnom
dijelu programa unosi 2 broja, u proceduri
“suma” se ta dva broja zbrajaju i ispisuje
se zbroj
• Napisati program kojim se u proceduri
“zbroj” traži suma brojeva djeljivih sa 2 i 5
u skupu brojeva od 1 do 100, te rezultat
prikazati u glavnom programu
20.1.2014
GLOBALNE I LOKALNE VARIJABLE 23