Blocuri
Blocul este o secvență de instrucțiuni cuprinsă între acolade. Forma
sintactică a blocului este, deci, următoarea:
{
secvență_de_instrucțiuni
}
unde secvență_de_instrucțiuniconstă dintr-un număr oarecare de instrucțiuni
succesive, putând fi și vidă. Instrucțiunile din această secvență pot fi
atât simple, cât și structurate, inclusiv alte blocuri.
Din punct de vedere al programării
structurate, blocul este realizarea structurii de control
secvențiale. Aceasta inseamnă că instrucțiunile dintr-un bloc
se execută una dupa alta, în ordinea în care ele sunt scrise în program.
Tocmai de aceea se și folosește termenul secvență de
instrucțiuni pentru a indica ce conține blocul.
Exemplu
În programul de mai jos, conținut în fișierul Blocuri.java, se exemplifică folosirea
unor blocuri imbricate (cuprinse unul în altul). Prin comentarii s-a
semnalat începutul și sfârșitul fiecărui bloc, deși aceasta nu se face
în mod curent. Remarcăm că însuși corpul metodei main (și al oricărei
alte metode) este tot un bloc. Fiecare bloc conține atât declarații de
variabile, cât și instrucțiuni-expresie
/* Exemplu de program care contine blocuri
imbricate */
class Blocuri { // aici incepe corpul clasei Blocuri
public static void main(String args[]) { // aici
incepe blocul A
int m=8, n=-3;
double u=m*3.5+32, v=2, w;
w=m*u+v;
System.out.println("m="+m+" n="+n+" u="+u+" v="+v+"
w="+w);
m++;
{ // aici incepe blocul B, continut in A
int a=5;
double p=m*w-3.5, q;
q=n*p-a; // s-a folosit n din blocul exterior
{ // aici incepe blocul C continut in B
System.out.println("m="+m+" a="+a+" p="+p+"
q="+q);
} // aici se termina blocul C
} // aici se termina blocul B
} // aici se termina blocul A (corpul metodei main)
} // aici se incheie corpul clasei Blocuri
|
La executarea acestui program se afișează următoarele
rezultate:
m=8 n=-3 u=60.0 v=2.0 w=482.0
m=9 a=5 p=4334.5 q=-13008.5 |
Remarcăm că:
- în expresiile prin care se calculează valoarea inițială a
variabilei u s-a luat în considerație valoarea variabilei m
determinată anterior;
- în blocul B, la calcularea valorii inițiale a variabilei p s-au
folosit valorile variabilelor m si w calculate la executarea unor
instrucțiuni-expresie anterioare; se confirmă astfel că inițializarea
variabilelor nu se face la compilare, când aceste valori nu sunt
cunoscute, ci la executarea declarației. |
|
Variabile locale și domenii de
vizibilitate
Variabilele declarate într-un bloc sunt variabile locale
ale blocului respectiv. Domeniul de vizibilitate al unei
variabile locale începe în locul din program în care aceasta a fost
declarată și se încheie la sfârșitul blocului care conține declarația
respectivă. Variabila este deci "vizibilă" (poate fi utilizată) în
propriul său bloc și în toate blocurile interioare acestuia, în domeniul
de vizibilitate.
Exemplu:
În programul din fișierul Blocuri.java,
dat ca exemplu mai sus, variabilele m, n, u, v și w
sunt declarate în blocul A (în însuși corpul metodei main) și
sunt vizibile (pot fi utilizate) atât în acest bloc, cât și în blocurile
interioare B și C. În schimb variabilele a, p și q pot
fi utilizate numai în blocul B, în care sunt declarate, și în blocul C
situat în interiorul acestuia.
În memoria mașinii virtuale Java, variabilele locale sunt
plasate pe stiva procesului curent. La executarea unei
instrucțiuni-declarație, variabilele conținute în aceasta sunt puse pe
stivă, în ordinea în care ele apar în declarația respectivă. Când se
ajunge la sfârșitul blocului în care au fost declarate, variabilele sunt
scoase de pe stivă. Cât timp se află pe stivă, variabilele sunt
vizibile și deci pot fi utilizate. |
© Copyright 2000 - Severin
BUMBARU, Universitatea "Dunărea de Jos" din Galați
