Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
AccessAdobe photoshopAlgoritmiAutocadBaze de dateCC sharp
CalculatoareCorel drawDot netExcelFox proFrontpageHardware
HtmlInternetJavaLinuxMatlabMs dosPascal
PhpPower pointRetele calculatoareSqlTutorialsWebdesignWindows
WordXml


VARIABILE GLOBALE SI VARIABILE LOCALE

pascal



+ Font mai mare | - Font mai mic



VARIABILE GLOBALE SI VARIABILE LOCALE



In exemplul anterior am observat ca variabilele declarate la inceputul programului principal (a,b,c,d,max) au fost utilizate i in procedura far nici un fel de restric ie, prin simpla apelare a lor. Deci variabila a am ini ializat‑o (citit‑o) in programul principal i am referit‑o (consultat‑o) in procedura.

In acest caz variabila declarata in programul principal este recunoscuta i in procedurile declarate tot in programul principal ca fiind variabila globala adica avand aria de intindere pe tot parcursul blocului la inceputul caruia a fost declarata (inclusiv procedurile subordonate acestui bloc).

Am aratat mai sus ca o procedura se declara in zona de declara ii a programului apelant care, la randul lui poate fi i el un subprogram, deci o procedura definita in zona de declara ii a unui alt program s.a.m.d. Astfel se realizeaza o ierarhie a procedurilor, care, in func ie de felul cum sunt declarate, vor fi recunoscute in procedurile de nivel imediat superior, sau in procedurile aflate la acela i nivel (adica in cele declarate in aceea i zona de declara ii) dar dupa procedura respectiva.

VARIABILE GLOBALE SI VARIABILE LOCALE

Deci regula de baza este urmatoarea: o procedura (ca orice alt identificator) trebuie declarata inainte de a fi apelata !

Deasemenea am aratat ca un subprogram este de fapt un program subordonat unui alt program care, la randul lui poate fi i el un subprogram. Deci procedurile sunt unitati de program relativ independente, cu zona de declara ii i zona de instruc iuni independente.

Astfel fiecare procedura poate avea zona ei de declara ii de variabile, ca in exemplul urmator:

procedure principal;

var |

a,b:integer; |

|

procedure secundar; |

var | |

c,d:integer; | procedura |

begin > secundar | procedura

. | > principal

. | |

end; / |

|

begin |

. |

. |

end; /

VARIABILE GLOBALE SI VARIABILE LOCALE

In acest exemplu, variabilele a i b fiind declarate in procedura principal, ele vor fi recunoscute in cadrul acestei proceduri, deci atat in blocul instruc iunilor executabile al ei cat i in cel al procedurii secundar (fiind subordonat ). Aceste variabile sunt globale i activeaza pe aria procedurii principal.

Variabilele c i d, fiind declarate in procedura secundar, ele vor fi recunoscute numai in cadrul ei, deci nu i in blocul de instruc iuni al procedurii principal. In acest caz variabilele c i d se numesc variabile locale i activeaza numai in procedura secundar.

Fie exemplul urm tor:

procedure ex1;

var a,b:integer; ‑1‑

procedure ex2;

var c,d:integer; ‑2‑

begin

.

.

end;

procedure ex3;

var a,b,c,d:integer; ‑3‑

begin

.

.

end;

begin

.

.

end.

VARIABILE GLOBALE SI VARIABILE LOCALE

Aici avem trei sec iuni de declara ii:

‑1‑ variabilele a,b recunoscute in: ex1, ex2 (deci sunt variabile globale), dar nu sunt recunoscute in ex3 deoarece acolo numele lor (identificatorii) sunt utiliza i pentru a defini alte variabile (locale) recunoscute numai in ex3 i care nu au nici o legatura cu cele din ex1 !

‑2‑ variabilele c,d sunt recunoscute in ex2 (variabile locale)

‑3‑ variabilele a,b,c,d sunt recunoscute in ex3 (variab. locale)

Exemplu:

program test1;

var a,b:integer;

procedure apel;

var b,c:integer;

begin

a:=10;

b:=10;

c:=10;

end;

begin

a:=5;

b:=5;

writeln(a,' ',b);

apel;

writeln(a,' ',b);

end.

Dupa execu ia acestui program, rezultatul va fi:

VARIABILE GLOBALE SI VARIABILE LOCALE

5 5

10 5

deoarece valoarea lui a, fiind o variabila globala, va fi schimbata in procedura apel, din valoarea existenta (5) in valoarea 10, in timp ce variabilele b i c, fiind locale in procedura apel, ele vor avea valoarea 10 in procedura. Variabila b din programul principal ramane locala, i deci va ramane cu valoarea 5.

Pana in momentul de fa a, am vazut cum procedurile 'pot discuta' intre ele cu ajutorul variabilelor globale, fapt simplu la prima vedere dar obositor in programare i chiar riscant, deci nu este recomandat.

Prin 'discu ie' in elegem transmiterea datelor in i din proceduri in programul apelant. In momentul apelului, procedura preia anumite date transmise de programul apelant, i dupa prelucrarea lor, procedura transmite in sens invers (in programul apelant) anumite rezultate; asemanator cu un 'mic' program independent. Ghilimelele de la mic semnific faptul ca procedurile sunt subordonate altor proceduri sau programe dar dimensiunea lor (numar de instruc iuni) nu are nici o importan a.

Datele se pot transmite in, i din proceduri in doua moduri:

‑ global: prin utilizarea variabilelor globale

- prin lista cu parametri: (cale recomandat ) pentru

VARIABILE GLOBALE SI VARIABILE LOCALE

fiecare variabila necesara in procedura este adusa fie valoarea ei, fie adresa ei, prin parametri, i declarata ca variabila locala.



Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 6275
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved