Un programme PASCAL se compose de l'entête du programme et d'un bloc (cfr § 2 de l'Introduction). Dans ce bloc, on peut déclarer des étiquettes, des constantes, des types, des variables et des sousprogrammes. Les sousprogrammes comportent euxmêmes un bloc (cfr Ch 6) , et ainsi de suite. Un programme est donc constitué d'une imbrication de blocs.
Un identificateur introduit dans une des parties déclarations d'un bloc est dit local au bloc.
procedure swap (var a,b : integer); --------------------- bloc ------------------ | | var t : integer; | begin | t := a; a := b; b := t | end; ---------------------------------------------- t est une variable locale au bloc. procedure swap (var a,b : integer); ------------------------- bloc x ----------------- | | var i : integer; | procedure y; | | ------------------ bloc y ----------------- | | begin {y} | | ... | | | | end; {y} | -------------------------------------------- | | begin {x} | ... | end; {x} -------------------------------------------------- La procédure y est une procédure locale au bloc x, tout comme la variable i.
Un identificateur déclaré á l'extérieur d'un bloc c'estádire une des parties déclarations d'un bloc englobant sont dites globales pour le bloc.
Exemple
La variable i dans le deuxième exemple cidessus est locale pour
le bloc x et globale pour le bloc y.
L'identificateur d'un objet peut être utilisé dans le bloc où il
est déclaré pour accéder á l'objet et dans tout bloc inclus dans
ce bloc á l'exception de ceux où un même identificateur est
redéclaré (ce dernier identificateur étant alors associé á un
autre objet).
Une déclaration crée une paire {identificateur, objet}.
Lorsqu'on effectue une déclaration, on crée un objet (une variable,
une constante, un type) et on lui donne un nom qui est
l'identificateur de l'objet.
Exemple
procedure swap (var a,b : integer); ---------------------- bloc x -------------------------------------------------------- | | var i : integer; | procedure y; | ------------------------------ bloc y ------------------------------------------ | | var i : integer | | begin {y} | | | | ... {l'identificateur i ici se réfère á celui déclaré dans le bloc y} | | end; {y} | --------------------------------------------------------------------------------- | begin {x} | ... {l'identificateur i ici se réfère á celui déclaré dans le bloc x} | | end; {x} --------------------------------------------------------------------------------------