23
Globalne i lokalne varijable Sović-Padovan Adriana

Globalne i lokalne varijable

Embed Size (px)

Citation preview

Globalne i lokalne varijable

Sović-Padovan Adriana

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