Variabile Locale și Globale. Domeniu de Vizibilitate în C++ 11
1. Obiectivele lecției:
- Să înțeleagă diferența dintre variabilele locale și globale.
- Să înțeleagă conceptul de domeniu de vizibilitate.
- Să implementeze exemple practice pentru utilizarea corectă a variabilelor locale și globale.
2. Variabile locale
- Definiție:
- Variabilele locale sunt declarate în interiorul unui bloc de cod, cum ar fi o funcție sau un bloc delimitat de {}.
- Sunt accesibile doar în interiorul blocului în care au fost declarate.
- Caracteristici:
- Sunt create atunci când blocul de cod începe execuția și sunt distruse când blocul se termină.
- Au o vizibilitate limitată la blocul în care sunt definite.
- Exemplu:
#include <iostream>
using namespace std;
void afiseaza() {
int x = 10; // Variabilă locală
cout << „Valoarea lui x: ” << x << endl;
}
int main() {
afiseaza();
// cout << x; // Eroare: x nu este vizibil în main
return 0;
}
3. Variabile globale
- Definiție:
- Variabilele globale sunt declarate în afara oricărei funcții și sunt accesibile în orice parte a programului, după punctul lor de declarație.
- Caracteristici:
- Sunt create odată cu începutul programului și distruse odată cu terminarea programului.
- Pot fi accesate și modificate de oriunde, ceea ce poate duce la conflicte dacă nu sunt utilizate cu atenție.
- Exemplu:
#include <iostream>
using namespace std;
int x = 20; // Variabilă globală
void afiseaza() {
cout << „Valoarea lui x în afiseaza(): ” << x << endl;
}
int main() {
cout << „Valoarea lui x în main(): ” << x << endl;
afiseaza();
return 0;
}
4. Domeniul de vizibilitate (Scope)
- Definiție:
- Domeniul de vizibilitate reprezintă partea programului în care o variabilă poate fi accesată.
- Tipuri de domeniu de vizibilitate:
- Bloc local: Vizibilitate limitată la blocul în care variabila este declarată.
- Bloc global: Vizibilitate pe tot parcursul programului, după declarație.
- Blocuri imbricate: Variabilele declarate în blocuri interioare ascund variabilele cu același nume din blocurile exterioare.
5. Conflicte între variabile locale și globale
- Utilizarea numelor identice:
- O variabilă locală cu același nume ca o variabilă globală va ascunde variabila globală în interiorul blocului său.
- Exemplu:
#include <iostream>
using namespace std;
int x = 50; // Variabilă globală
void afiseaza() {
int x = 10; // Variabilă locală
cout << „Variabilă locală x: ” << x << endl;
cout << „Variabilă globală x: ” << ::x << endl; // Accesare variabilă globală
}
int main() {
afiseaza();
cout << „Variabilă globală x în main(): ” << x << endl;
return 0;
}
6. Avantaje și dezavantaje
- Variabile locale:
- Avantaje:
- Evită conflictele dintre funcții.
- Utilizează memoria doar pe durata blocului în care sunt folosite.
- Dezavantaje:
- Nu sunt accesibile din alte funcții sau părți ale programului.
- Avantaje:
- Variabile globale:
- Avantaje:
- Accesibile din orice funcție, facilitând partajarea datelor.
- Dezavantaje:
- Pot duce la conflicte dacă sunt folosite neglijent.
- Pot face debugging-ul mai dificil.
- Avantaje:
7. Exemple practice
- Exemplu: Utilizarea variabilelor globale pentru configurări comune
#include <iostream>
using namespace std;
const int MAX_VAL = 100; // Variabilă globală constantă
void verifica(int val) {
if (val > MAX_VAL) {
cout << „Valoarea depășește limita maximă!” << endl;
} else {
cout << „Valoarea este validă.” << endl;
}
}
int main() {
int valoare = 120;
verifica(valoare);
return 0;
}
- Exemplu: Preferința pentru variabile locale
#include <iostream>
using namespace std;
int suma(int a, int b) {
int rezultat = a + b; // Variabilă locală
return rezultat;
}
int main() {
cout << „Suma: ” << suma(5, 7) << endl;
return 0;
}
8. Activități practice pentru elevi
- Scrieți un program care utilizează o variabilă globală pentru a număra câte funcții au fost apelate.
- Realizați un program care demonstrează cum o variabilă locală ascunde o variabilă globală cu același nume.
- Implementați un program care folosește variabile locale pentru a calcula produsul elementelor unui vector.
9. Scheme logice
- Accesarea variabilelor:
- Start -> Declarare variabilă globală -> Declarare variabilă locală -> Verificare accesibilitate -> Stop.
- Conflicte între variabile:
- Start -> Declarare variabile cu același nume (global/local) -> Utilizare variabilă locală -> Accesare explicită a variabilei globale -> Stop.
10. Concluzie
- Variabilele locale sunt utilizate pentru scopuri specifice, limitând vizibilitatea acestora la un bloc.
- Variabilele globale sunt utile pentru date care trebuie partajate între mai multe funcții, dar pot genera conflicte dacă nu sunt gestionate cu atenție.
- Alegerea tipului de variabilă depinde de cerințele programului, iar o bună practică este utilizarea minimă a variabilelor globale.