numete bloc. Deoarece subprogramele snt incluse n programul principal i pot conine la rndul lor alte subprograme, rezult c blocurile pot fi imbricate (incluse unul n altul). Aceast imbricare de blocuri este denumit structura de bloc a programului PASCAL.
Structura de bloc
Prin domeniul de vizibilitate al unei variabile se
ntelege zona din program n care este "vazuta" declaratia acesteia; adica zona de program n care este cunoscuta valoarea sa. Daca o variabila a fost declarata ntr-un subprogram atunci valoarea sa este cunoscuta numai n interiorul subprogramului respectiv. O astfel de variabila se numestelocala. Daca o variabila a fost declarata la nceputul programului (n zona de declaratii a acestuia) atunci aceasta este "vazuta" n tot programul si se numesteglobala.
Semnificatie acestora se vede in urmatorul
desen: Astfel : variabilele declarate in PP vor fi vizibile in S1, S2, S3, S4, S5. variabilele declarate in S1 vor fi vizibile in S1 si in S2, iar in PP, S3, S4, S5 nu; variabilele declarate in S3 vor fi vizibile in S4 si S5 iar in PP si S1, si S2 nu. Variabilele declarate in S4 vor fi vizibile doar acolo si nu in S5, S3, S1, S2 si PP
PP S1 S2 S3 S4 S5
Variabilel declarate in S3 sunt variabile
locale pentru pentru S3 dar sunt variabile globale pentru S4 si S5. Variabilele declarate in PP sunt globale deoarece sunt vizibile de toate subprogramele. Daca exista o variabila declarata si in S3 si in S4 (ex: var a:integer) atunci in S3 se va folosi variabila definita acolo iar in S4 variabila a declarata in S4 cea din S3 pierzandu-si semnificatia.
Variabilele globale se caracterizeaza
astfel: -declaratia definitie a lor este in afara oricarei functii; -li se aloca spatiu intr-un segment de date, inainte de executia programului; -au durata de viata statica; -sunt initiate implicit; pot fi initializate numai cu valori constante; -vizibilitatea lor poate fi extinsa la nivelul intregului program.
Variabile locale automatice se caracterizeaza astfel:
declaratia definitie a lor se face in interiorul unui bloc, si vicibilitatea este la nivelul acestuia; li se aloca spatiu pe stiva sau in registrele microprocesorului atunci cand declaratia definitie a lor este precedata de specificatorul register, cand se intalneste declaratia definitie; sunt dezalocate cand se iese din blocul respective; pot fi initializate cu valori constante sau cu valori variabile; vizibilitatea lor nu poate fi extinsa.