Sunteți pe pagina 1din 9

Domeniul de viziblilitate.

EFECTE COLATERALE
Corpul unui program sau subprogram se numete
bloc. Deoarece subprogramele snt incluse n
programul principal i pot conine la rndul 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 declaraii se


nelege textul de program, n care numele introdus
desemneaz obiectul specificat de declaraia n
studiu. Domeniul de vizibilitate ncepe imediat dup
terminarea declaraiei i se sfrete o dat cu textul
blocului respectiv.
COMUNICAREA PRIN VARIABILE
GLOBALE
O variabil este global relativ la un subprogram atunci cnd 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 afieaz 2.OOOOOOOOOOE+00 }
writeln(F); { se afieaz 5.OOOOOOOOOOE+00 )
readln; end.
EFECTE COLATERALE
Prin efect colateral se nelege o atribuire (n corpul funciei) 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 afieaz 1 }
writeln(F(1)); { se afieaz 2 }
writeln(F(1)); { se afieaz 3 }
readln;
end.
Exemple si exercitii
Precizai structura dc bloc a programului ce urmeaz. Indicai domeniul de vizibilitate al fiecrei
declaraii i determinai obiectele desemnate de fiecare apariie 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
Comentai 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
Numii variabilele globale i variabilele locale din programul
ce urmeaz. Ce va afia pe ecran acest program?

Program P109; begin


{ Comunicarea prin variabile b: =a;
globale } Q;
var a : integer; R;
procedure P; a:=d;
var b, c, d : integer; end; { P }
procedure Q; begin
begin a:=1;
c :=b+1; P;
end; { Q } writeln (a);
procedure R; readln;
begin end.
d:=C+1;
end; { R }