globalne i lokalne varijable
TRANSCRIPT
20.1.2014 GLOBALNE I LOKALNE VARIJABLE 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 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 4
Lokalne varijable
• Deklarirane unutar nekog potprograma
• Mogu se koristiti samo unutar tog potprograma
20.1.2014 GLOBALNE I LOKALNE VARIJABLE 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 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 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 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 9
Rješenje primjera 1
program znakovi;var a, b, c: char;
procedure Znak;var b, d: char;begina := '+';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 10
Rješenje primjera 1 (2)
begina := '*';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 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 12
Zadatak 1- rješenjeprogram poredak;var x, y, z : integer;
procedure sort(var a, b : integer); var tmp : integer; begin tmp:=a; a:=b; b:=tmp end;
beginwrite('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 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 14
Primjer 2 - rješenjeprogram d;var x: integer;
procedure A;var y: integer;procedure B;var z: integer;beginx := 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 15
Primjer 2 rješenje (2)beginx := 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;
beginx := 10;A;writeln('U glavnom programu nakon poziva procedure A x=', x);writeln;end
20.1.2014 GLOBALNE I LOKALNE VARIJABLE 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 17
Zadatak 2 - rješenjeprogram prog;var s : integer;
procedure zbroj(var s1: integer);var i, ss1 : integer;beginss1 := 0;for i := 100 to 200 doif (i mod 7 = 0) then ss1 := ss1+i;s1 :=ss1;end;
beginzbroj(s);writeln('Trazeni zbroj je: ',s);end.
20.1.2014 GLOBALNE I LOKALNE VARIJABLE 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 19
Primjer 3 - rješenjeprogram mim;var a, b: integer;
procedure minmax;var min, max: integer;beginif a>b thenbeginmin := b;max := a;writeln('Minimum je:', min);writeln('Maksimum je:', max);end;if a<b thenbeginmin := a;max := b;
20.1.2014 GLOBALNE I LOKALNE VARIJABLE 20
Primjer 3 – rješenje (2)
writeln('Minimum je:', min);writeln('Maksimum je:', max);end;end;
beginwriteln('Unesite broj a:');readln(a);writeln('Unesite broj b:');readln(b);
minmax;
end.
20.1.2014 GLOBALNE I LOKALNE VARIJABLE 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 22
Zadatak 3 - rješenjeprogram prog;var n: integer;
procedure pretvorba;var sat, sek, min: integer;beginsat := 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;
beginwriteln('Unesite broj sekundi:');readln(n);pretvorba;end.
20.1.2014 GLOBALNE I LOKALNE VARIJABLE 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