Sunteți pe pagina 1din 14

Domenii de

vizibilitate
clasa XII-a
prof. Aurelia Feghiu
!!!
În C++ variabilele trebuie
declarate și odată cu declararea
li se alocă în memorie spațiu în
conformitate cu tipul lor.
O variabilă se caracterizează prin:
Sistemul de operare alocă fiecărui
program, în memoria RAM, trei
zone în care putem memora
variabile: 1. clasa de 2. vizibilitate
memorare
1 zona de date

2 zona de stivă

3. durata de viață 4. tipul variabilei

3 zona liberă
(heap)
Clasa de memorare reprezintă zona de
memorie unde poate fi alocat spațiu pentru o
variabilă. Ea poate fi: zona de date, zona de
stivă, heap-ul sau un registru al procesorului
– o memorie specială, de mici dimensiuni,
foarte rapidă, existentă în procesor (CPU).

1. clasa de 2. vizibilitate 3. durata de 4. tipul


memorare viață variabilei
Vizibilitatea unei variabile precizează partea din codul sursă
(liniile programului C++) unde se poate folosi respectiva
variabilă și poate fi:
la nivel de bloc – variabila este vizibilă numai într-un bloc al
programului
la nivel de fișier – variabila este vizibilă în tot fișierul sursă
cu care lucrăm
la nivel de clasă – specific programării orientate pe obiecte

1. clasa de 2. vizibilitate 3. durata de 4. tipul


memorare viață variabilei
Durata de viață reprezintă timpul în care variabilei îi este alocat
spațiu în memorie și poate fi:
durată statică – variabila are alocat spațiu pe tot parcursul
execuției programului
durata locală – variabila are alocat spațiu numai pe
parcursul execuției instrucțiunilor dintr-un bloc
durata dinamică – variabila se creează (i se alocă spațiu) și se
distruge de către programator, în timpul executării
programului

1. clasa de 2. vizibilitate 3. durata de 4. tipul


memorare viață variabilei
ÎN C++ VARIABILE
POT FI:
locale,
globale
și dinamice.
VARIABILE LOCALE

#include <iostream>
¡Idea using namespace std; Variabilele x și y declarate
genial!
Variabilele locale se în programul de mai sus
declară într-un sunt locale. Variabila x
void F(){
anumit bloc al poate fi utilizată numai în
programului, în int x;
funcție F(), iar variabila y
corpul unei funcții. x = 5; numai în funcția main().
Fie programul de
cout << x << endl; Mai mult, cele două
mai jos:
} variabile ar fi putut avea
int main(){ același nume și nu ar fi
fost nicio confuzie.
int y = 10;
F();
cout << y << endl;
return 0;
}
VARIABILELE LOCALE
RESPECTĂ URMĂTOARELE
REGULI:

1 li se alocă memorie în zona


de stivă
4 sunt inițializate cu valori
aleatorii.
2 sunt vizibile numai în blocul
5
standardul C++ nu
în care au fost declarate garantează inițializarea lor
3 durata de viață a lor este cu o anumită valoare.
execuția instrucțiunilor din
blocul în care au fost
declarate
VARIABILE GLOBALE

#include <iostream>using namespace


¡Idea std; În programul de mai
genial!
Variabilele int x; sus variabilele x și y
globale se void F(){ sunt globale.
declară în afara cout << x << endl;
Variabila x poate fi
oricărei funcții. x = 10;
La declarare, ele
utilizată atât în
}
sunt inițializate funcția main() cât și
int y;
cu 0. in F(), iar variabila y
int main(){
numai în main().
cout << x << " " << y << endl;
x = 5; y = 15;
F();
cout << x << " " << y << endl;
return 0;
}
VARIABILELE GLOBALE
RESPECTĂ URMĂTOARELE
REGULI:

1 li se alocă memorie în zona


de date
4 sunt inițializate cu
valoarea 0
sunt vizibile în toate
2 funcțiile care urmează în
codul sursă declarării lor

durata de viață a lor este


3 execuția întregului program
#include <iostream> cout << x << endl; //10, variabila locala in
ÎNTR-UN PROGRAM
using namespace std; F()
PUTEM AVEA ȘI
}
VARIABILE GLOBALE ȘI int x;
Awesome
idea!
VARIABILE LOCALE, BA int y;
CHIAR VARIABILE void F(){
GLOBALE ȘI LOCALE CU cout << x << endl; //5, variabila int main(){
ACELAȘI NUME. globala cout << x << endl; //0, variabila globală
URMĂTORUL PROGRAM int x = 10; x = 5;
EXEMPLIFICĂ ACEASTĂ cout << x << endl; //10, variabila cout << x << endl; //5, variabila globala
locala in F() F();
SITUAȚIE. RULAȚI-L ȘI
{ cout << x << endl; //5, variabila globala
ANALIZAȚI VALORILE int x = 20; int x = 100;
AFIȘATE PENTRU A cout << x << endl; //20, variabila cout << x << endl; //100, variabila
DEDUCE MODUL ÎN CARE locala în F(), blocul interior locala in main()
5 ELE VIZIBILE!
SUNT } return 0;
}
Dacă într-un program avem
variabile cu același nume, dar cu
domenii de vizibilitate diferite,
are prioritate variabila cu
domeniul de vizibilitate cel mai
mic. În particular, dacă ave o
variabilă globală și una locală cu
același nume are prioritate
variabila locală.
ACTIVITĂȚI
INTERACTIVE

1 Link

S-ar putea să vă placă și