La différence principale entre Pascal et FORTRAN par exemple est structurelle. Tout programme Pascal est composé à l'aide de blocs [angl. block]. On dit que le langage Pascal supporte la notion de bloc. Un bloc se compose de déclarations ou de définitions suivies d'instructions. Un bloc fait toujours partie soit d'une fonction, soit d'une procédure, soit du programme dit programme principal, soit d'une interface. Tous les identificateurs définis dans un bloc sont dits local à ce bloc ce qui veut dire qu'ils sont connus à l'intérieur de ce bloc, depuis la fin de leur définition jusqu'à la fin de ce même bloc. La partie d'un bloc dans laquelle un identificateur est connu (que ce soit un identificateur d'étiquette, de constante, de type, de variable, de fonction ou de procédure) est appelée domaine de validité [angl. scope; all. Wertebereich] de l'identificateur.
Des identificateurs qui sont définis à l'intérieur du bloc principal sont dits global [angl. global], c'est-à-dire non locaux à une certaine procédure ou fonction. Ces identificateurs sont significatifs dans tout le texte du programme.
Tout ceci implique que les identificateurs définis dans un même bloc doivent avoir des noms différents. Cependant, deux objets peuvent avoir le même nom s'ils sont définis dans deux blocs différents.
Tout bloc doit avoir la structure suivante:
< block >
::= < declaration and definition part >< statement part >
< declaration and definition part >
::= < label declaration part >< constant definition part >
< type definition part >< variable declaration part >
< procedure/function declaration part >
Un bloc comporte une partie de déclaration d'étiquettes [angl. label declaration part] optionnelle suivie d'une partie de définition de constantes [angl. constant definition part] optionnelle suivie d'une partie de définition de types [angl. type definition part] optionnelle suivie d'une partie de déclaration de variables [angl. variable declaration part] optionnelle suivie d'une partie de déclaration de procédures et de fonctions [angl. procedure/function declaration part] optionnelle et se terminant obligatoirement par une instruction [angl. statement].
Dans Pascal, on ne fait pas de différence entre le bloc fonction, le bloc procédure, le bloc du programme principal ou bloc principal et le bloc d'une interface. On peut déclarer des procédures et des fonctions dans le bloc principal aussi bien que dans un bloc fonction ou un bloc procédure. On dit qu'il est possible d'emboîter des procédures et des fonctions. Les procédures et les fonctions pouvant être emboîtées, il en est de même pour leurs domaines de validité.
A chaque bloc emboîté est attribué un niveau d'emboîtement [angl. level of nesting].
Figure 5.1 Structure à blocs emboîtés
La figure 5.1 représente un exemple d'une structure à blocs emboîtés. Le domaine de validité d'un identificateur X est le bloc entier à l'intérieur duquel il est défini, y compris les blocs définis dans le même bloc que l'identificateur X.
|
Les objets définis dans les blocs |
sont accessibles dans les blocs |
|
M |
M, P, A, B, Q, R, S |
|
P |
P, A, B |
|
A |
A, B |
|
B |
B |
|
Q |
Q, R, S |
|
R |
R |
|
S |
S |
Table 5.1 Domaines de validité des identificateurs
© Aflo Informatique , 2003-2004