Upload
causevic-nezir
View
214
Download
1
Embed Size (px)
DESCRIPTION
Opseg (Scope) Varijabli
Citation preview
ProgramiranjeI_sylabus.doc
Uvod u programiranje::Vježbe
http://dl.fit.ba/
1
Fakultet informacijskih tehnologija
Datum:22.10.2006
Opseg (scope) varijabli
Opseg varijabli ilustrirat ćemo primjerom:
#include <iostream> using namespace std; int a (); //prototip funkcije a int b (); // prototip funkcije b int x=1; // globalna varijabla int main ()//glavni program { int x= 5; // lokalna varijabla cout<<"lokalna varijabla x - vanjski blok "<< x<< endl; { int x= 7; // lokalna varijabla u unutarnjem bloku cout<<"lokalna varijabla x - unutarnji blok "<< x<< endl; } cout<<"lokalna varijabla x - vanjski blok"<< x<< endl; a();//prvi put pozivamo funkciju a b();//prvi put pozivamo funkciju b a();//drugi put put pozivamo funkciju a b();//drugi put pozivamo funkciju b system ("pause"); } int a () //definicija funkcije a { int x=25; // inicijalizira se pri svakom pozivanju funkcije cout<<"lokalna varijabla x - na pocetku funkcije a "<< x<< endl; x++; cout<<"lokalna varijabla x - na kraju funkcije a "<< x<< endl; return 0; } int b() //definicija funkcije b { cout<<"globalna varijabla x - na pocetku funkcije b "<< x<< endl; x*=10; cout<<"globalna varijabla x - na kraju funkcije b "<< x<< endl; return 0;}
ProgramiranjeI_sylabus.doc
Uvod u programiranje::Vježbe
http://dl.fit.ba/
2
Fakultet informacijskih tehnologija
Šta zaključujete iz navedenog primjera?
• varijabla deklarirana unutar nekog bloka (blok je omeñen vitičastim
zagradama{}) vrijedi samo unutar tog bloka;
{
int x= 7; // lokalna varijabla u unutarnjem bloku cout<<"lokalna varijabla x - unutarnji blok "<< x<< endl; }
• dok se izvršava unutarnji blok (tačka 1) vrijednost varijable istog tipa i imena (int
x=5) iz vanjskog bloka nije „vidljiva“;
• po završetku unutarnjeg bloka vrijednost varijable int x=5 iz vanjskog bloka
ponovno postaje vidljiva;
cout<<"lokalna varijabla x - vanjski blok"<< x<< endl;(linija 18)
• varijable čija vrijednost je „vidljiva“ i dostupna unutar jednog bloka ili funkcije,
odnosno na ograničenom mjestu, se nazivaju lokalne varijable;
• varijabla deklarirana izvan svih blokova i funkcija, tzv. globalna varijabla, „poznata“ je svim blokovima i funkcijama koje slijede nakon njezine deklaracije;
int x=1; // globalna varijabla (linija 7)
• vrijednost globalne varijable dostupna je u svim blokovima i funkcijama koje se
nalaze nakon njezine deklaracije, pod uvjetom da unutar tih blokova i funkcija ne
postoji lokalna varijabla istog tipa i imena ( vidi tačku 2)
int x=1; // globalna varijabla (linija 7)
int b() //definicija funkcije b { cout<<"globalna varijabla x - na pocetku funkcije b "<< x<< endl; x*=10; //pri prvom pozivu funkcije vrijednost globalne varijable je promijenjena sa 1 na 10, a u drugom pozivu na 100 cout<<"globalna varijabla x - na kraju funkcije b "<< x<< endl; return 0;}
Dio programa u kojem se neki identifikator (u našem slučaju varijabla) može
jednoznačno odrediti i koristiti naziva se opsegom. Opseg može biti:
• Datoteka (file scope)
• Funkcija (funkction scope)
• Blok (block scope)
• Prototip funkcije (function-prototipe scope).
ProgramiranjeI_sylabus.doc
Uvod u programiranje::Vježbe
http://dl.fit.ba/
3
Fakultet informacijskih tehnologija
Grafički bi to mogli predstaviti ovako:
int main ()
{ int x= 5;
}
int a () // funkcija a ima lokalnu varijablu x { int x=25;
}
{int x= 7;}
#include <iostream> using namespace std; int x=1;
int b () // u funkciji b nema lokalne varijable x { x*=10; //u ovom izrazu se koristi globalna varijabla
}