Domeniul de viziblilitate.Efecte colaterale

9
Domeniul de viziblilitate. EFECTE COLATERALE

description

Domeniul de viziblilitate.Efecte colaterale

Transcript of Domeniul de viziblilitate.Efecte colaterale

Page 1: Domeniul de viziblilitate.Efecte colaterale

Domeniul de viziblilitate. EFECTE COLATERALE

Page 2: 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.

Page 3: Domeniul de viziblilitate.Efecte colaterale

Structura de bloc

Page 4: Domeniul de viziblilitate.Efecte colaterale

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.

Domeniul de vizibilitate

Page 5: Domeniul de viziblilitate.Efecte colaterale

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.ExempluProgram 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 }beginc:=2;b: =a* c ;end; { P }function F : real;var a : 1..5; {variabilă locală în F }begina:=3;F:=a+b;end; { F }begina: = 1; P;writeln(b); { se afişează 2.OOOOOOOOOOE+00 }writeln(F); { se afişează 5.OOOOOOOOOOE+00 )readln; end.

COMUNICAREA PRIN VARIABILE GLOBALE

Page 6: Domeniul de viziblilitate.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;beginF:=a*x;a:=a+1; { atribuire defectuoasă }end; { F }begina:=1;writeln(F(1)) ; { se afişează 1 }writeln(F(1)); { se afişează 2 }writeln(F(1)); { se afişează 3 }readln;end.

EFECTE COLATERALE

Page 7: Domeniul de viziblilitate.Efecte colaterale

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;beginF1:=x+c;end; { F1 }function F2(c : real) : real;const x=2.0;beginF2:=x+c;end; { F2 }function F3(x : char) : char;const c=3;beginF3:=chr (ord(x)+c);end; { F3 }beginwriteln('F1=', F1(1));writeln('F2=', F2(1));writeln{'F3=', F3('1'));readln;end.

Exemple si exercitii

Page 8: Domeniul de viziblilitate.Efecte colaterale

Comentaţi programul ce urmează:Program P117; { Eroare }var a : real;procedure P(xvar a : integebegina:=3.14;writeln(x+a);end; { P }begina:=3.14;P(a);end.

Exemple si exercitii

Page 9: Domeniul de viziblilitate.Efecte colaterale

Program P109;{ Comunicarea prin variabile globale }var a : integer;procedure P;var b, c, d : integer;procedure Q;beginc :=b+1;end; { Q }procedure R;begind:=C+1;

end; { R }beginb: =a;Q;R;a:=d;end; { P }begina:=1;P;writeln (a);readln;end.

Exemple si exercitiiNumiţi variabilele globale şi variabilele locale din programul ce urmează. Ce va afişa pe ecran acest program?