Table des matières indexe chapitre suivant

Chapitre 13 : Portée et visibilité des identificateurs

Tables des matières


1. Structure d'un programme

Un programme PASCAL se compose de l'en­tê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 sous­programmes. Les sous­programmes comportent eux­mêmes un bloc (cfr Ch 6) , et ainsi de suite. Un programme est donc constitué d'une imbrication de blocs.


2. Identificateurs locaux

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.

3. Identificateurs globaux

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 ci­dessus est locale pour le bloc x et globale pour le bloc y.


4. Règles d'accès aux objets

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}                                                                 
        --------------------------------------------------------------------------------------


Table des matières indexe chapitre suivant