Variabile locale și globale

Rețineți că fiecare modul (procedură, funcție, program) constă dintr-un antet (procedură ..., funcție ..., program ...) și un bloc.

Dacă blocul oricărei proceduri p1 conține procedura p2 din interior. atunci vom spune că p2 este încorporat în p1.

Orice identificatori introduși în interiorul oricărui bloc (proceduri, funcții) pentru descrierea variabilelor, constantelor, tipurilor, procedurilor sunt numiți locali pentru acest bloc. Un astfel de bloc, împreună cu modulele sale, se numește domeniul acestor variabile locale, constante, tipuri și proceduri.

Constantele, variabilele, tipurile descrise în blocul de programe se numesc globale. Se pare că este mai ușor să se rezolve doar variabilele globale, descriind-le pe toate în program. Dar utilizarea de variabile locale permite sistemului să optimizeze mai bine programele, să le facă mai vizibile și să reducă probabilitatea de erori.

La scrierea programelor care au module imbricate, trebuie să urmați următoarele reguli:

  1. Descrieți identificatorii din blocul în care sunt utilizați, dacă este posibil.
  2. Dacă același obiect (variabilă, tip, constant) este folosit în două sau mai multe blocuri, atunci este necesar să descriem acest obiect în cea mai exterioară dintre ele, conținând toate celelalte blocuri folosind acest obiect.
  3. Dacă variabila folosită în procedură trebuie să își păstreze valoarea înainte de următorul apel al acestei proceduri, atunci această variabilă trebuie descrisă în blocul extern care conține această procedură.

Localizarea variabilelor oferă programatorului mai multă libertate în alegerea identificatorilor. Deci, dacă două proceduri a și b sunt complet separate unul de celălalt (adică nu sunt imbricate unul în altul), atunci identificatorii din ele pot fi aleși destul de arbitrar, în special, pot fi repetați. În acest caz, identificatorii de potrivire corespund diferitelor zone de memorie, fără legătură între ele.

Dacă același identificator este descris în blocul b și este descris a doua oară în blocul c încorporat în b. atunci trebuie să ne amintim că acești doi identificatori identici corespund celulelor de memorie diferite.

Variabilele globale i și a sunt alocate două locații de memorie. Primii operatori sunt: ​​= 2.0 și i: = 15. Apoi este apelată procedura p (a). În procesul de operare p se alocă celula pentru variabila locală i și se trimite numărul 3. După terminarea procedurii p, această celulă i este "uitată" de program. După revenirea la operatorul scriere, programul cunoaște numai o celulă i - globală, adică Aceasta, care conține numărul 15. Prin urmare, programul va imprima i = 15, a = 23.0, deoarece. a = 3 + 10 * 2.

Dacă variabilele locale și globale aparțin aceluiași tip complex, atunci acest tip trebuie descris în secțiunea de tip. și descriu variabilele prin acest tip general.

În acest exemplu, variabilele a și b sunt descrise în termenii tipului general ab. Dacă variabilele locale și globale sunt descrise identic, dar nu printr-un tip comun, atunci programul poate "nu înțelege" că aceste variabile aparțin aceluiași tip.

În acest exemplu, variabilele a și b sunt aceleași matrice, adică tipurile acestor variabile sunt aceleași, dar programul, totuși, "nu ia în considerare" că a și b aparțin aceluiași tip. Acest lucru se datorează faptului că descrierea matricelor este dată în blocuri diferite.

Articole similare