Domeniul de viziblilitate. 
EFECTE COLATERALE
Corpul unui program sau subprogram se numeşte 
bloc. Deoarece subprogramele sînt incluse în 
programul principal şi pot conţine la rîndul lor alte 
subprograme, rezultă că blocurile pot fi imbricate (in-cluse 
unul în altul). Această imbricare de blocuri este 
denumită structura de bloc a programului PASCAL.
Structura de bloc
Domeniul de vizibilitate 
Prin domeniul de vizibilitate al unei declaraţii se 
înţelege textul de program, în care numele introdus 
desemnează obiectul specificat de declaraţia în 
studiu. Domeniul de vizibilitate începe imediat după 
terminarea declaraţiei şi se sfîrşeşte o dată cu textul 
blocului respectiv.
COMUNICAREA PRIN VARIABILE 
GLOBALE 
O variabilă este globală relativ la un subprogram atunci cînd ea este declarată în programul 
sau subprogramul ce îl cuprinde fară să fie redeclarată în subprogramul în studiu. 
Exemplu 
Program P108; { Comunicarea prin variabile globale } 
var a, { variabilă globală în P } 
b : real; {variabilă globală în P, 
procedure P; 
var c : integer; { variabilă locală în P } 
begin 
c:=2; 
b: =a* c ; 
end; { P } 
function F : real; 
var a : 1..5; {variabilă locală în F } 
begin 
a:=3; 
F:=a+b; 
end; { F } 
begin 
a: = 1; P; 
writeln(b); { se afişează 2.OOOOOOOOOOE+00 } 
writeln(F); { se afişează 5.OOOOOOOOOOE+00 ) 
readln; end.
EFECTE COLATERALE 
Prin efect colateral se înţelege o atribuire (în corpul funcţiei) a unei 
valori la o variabilă globală sau la un parametru formal variabilă. 
Program PI 10; 
{ Efect colateral - atribuire la o variabilă globală} 
var a : integer; { variabilă globală } 
function F(x : integer) : integer; 
begin 
F:=a*x; 
a:=a+1; { atribuire defectuoasă } 
end; { F } 
begin 
a:=1; 
writeln(F(1)) ; { se afişează 1 } 
writeln(F(1)); { se afişează 2 } 
writeln(F(1)); { se afişează 3 } 
readln; 
end.
Exemple si exercitii 
Precizaţi structura dc bloc a programului ce urmează. Indicaţi domeniul de vizibilitate al fiecărei 
declaraţii şi determinaţi obiectele desemnate de fiecare apariţie a identificatorilor c şi x. 
Program P106; 
{ Redefinirea constantelor ) 
const c=1; 
function F1(x : integer) : integer; 
begin 
F1:=x+c; 
end; { F1 } 
function F2(c : real) : real; 
const x=2.0; 
begin 
F2:=x+c; 
end; { F2 } 
function F3(x : char) : char; 
const c=3; 
begin 
F3:=chr (ord(x)+c); 
end; { F3 } 
begin 
writeln('F1=', F1(1)); 
writeln('F2=', F2(1)); 
writeln{'F3=', F3('1')); 
readln; 
end.
Exemple si exercitii 
Comentaţi programul ce urmează: 
Program P117; { Eroare } 
var a : real; 
procedure P(x 
var a : intege 
begin 
a:=3.14; 
writeln(x+a); 
end; { P } 
begin 
a:=3.14; 
P(a); 
end.
Exemple si exercitii 
Numiţi variabilele globale şi variabilele locale din programul 
ce urmează. Ce va afişa pe ecran acest program? 
Program P109; 
{ Comunicarea prin variabile 
globale } 
var a : integer; 
procedure P; 
var b, c, d : integer; 
procedure Q; 
begin 
c :=b+1; 
end; { Q } 
procedure R; 
begin 
d:=C+1; 
end; { R } 
begin 
b: =a; 
Q; 
R; 
a:=d; 
end; { P } 
begin 
a:=1; 
P; 
writeln (a); 
readln; 
end.

Domeniul de viziblilitate.Efecte colaterale

  • 1.
    Domeniul de viziblilitate. EFECTE COLATERALE
  • 2.
    Corpul unui programsau subprogram se numeşte bloc. Deoarece subprogramele sînt incluse în programul principal şi pot conţine la rîndul lor alte subprograme, rezultă că blocurile pot fi imbricate (in-cluse unul în altul). Această imbricare de blocuri este denumită structura de bloc a programului PASCAL.
  • 3.
  • 4.
    Domeniul de vizibilitate Prin domeniul de vizibilitate al unei declaraţii se înţelege textul de program, în care numele introdus desemnează obiectul specificat de declaraţia în studiu. Domeniul de vizibilitate începe imediat după terminarea declaraţiei şi se sfîrşeşte o dată cu textul blocului respectiv.
  • 5.
    COMUNICAREA PRIN VARIABILE GLOBALE O variabilă este globală relativ la un subprogram atunci cînd ea este declarată în programul sau subprogramul ce îl cuprinde fară să fie redeclarată în subprogramul în studiu. Exemplu Program P108; { Comunicarea prin variabile globale } var a, { variabilă globală în P } b : real; {variabilă globală în P, procedure P; var c : integer; { variabilă locală în P } begin c:=2; b: =a* c ; end; { P } function F : real; var a : 1..5; {variabilă locală în F } begin a:=3; F:=a+b; end; { F } begin a: = 1; P; writeln(b); { se afişează 2.OOOOOOOOOOE+00 } writeln(F); { se afişează 5.OOOOOOOOOOE+00 ) readln; end.
  • 6.
    EFECTE COLATERALE Prinefect colateral se înţelege o atribuire (în corpul funcţiei) a unei valori la o variabilă globală sau la un parametru formal variabilă. Program PI 10; { Efect colateral - atribuire la o variabilă globală} var a : integer; { variabilă globală } function F(x : integer) : integer; begin F:=a*x; a:=a+1; { atribuire defectuoasă } end; { F } begin a:=1; writeln(F(1)) ; { se afişează 1 } writeln(F(1)); { se afişează 2 } writeln(F(1)); { se afişează 3 } readln; end.
  • 7.
    Exemple si exercitii Precizaţi structura dc bloc a programului ce urmează. Indicaţi domeniul de vizibilitate al fiecărei declaraţii şi determinaţi obiectele desemnate de fiecare apariţie a identificatorilor c şi x. Program P106; { Redefinirea constantelor ) const c=1; function F1(x : integer) : integer; begin F1:=x+c; end; { F1 } function F2(c : real) : real; const x=2.0; begin F2:=x+c; end; { F2 } function F3(x : char) : char; const c=3; begin F3:=chr (ord(x)+c); end; { F3 } begin writeln('F1=', F1(1)); writeln('F2=', F2(1)); writeln{'F3=', F3('1')); readln; end.
  • 8.
    Exemple si exercitii Comentaţi programul ce urmează: Program P117; { Eroare } var a : real; procedure P(x var a : intege begin a:=3.14; writeln(x+a); end; { P } begin a:=3.14; P(a); end.
  • 9.
    Exemple si exercitii Numiţi variabilele globale şi variabilele locale din programul ce urmează. Ce va afişa pe ecran acest program? Program P109; { Comunicarea prin variabile globale } var a : integer; procedure P; var b, c, d : integer; procedure Q; begin c :=b+1; end; { Q } procedure R; begin d:=C+1; end; { R } begin b: =a; Q; R; a:=d; end; { P } begin a:=1; P; writeln (a); readln; end.