Pascal - Portée variable

Une portée dans toute programmation est une région du programme où une variable définie peut avoir son existence et au-delà de cette variable ne peut pas être accédée. Il y a trois endroits où les variables peuvent être déclarées en langage de programmation Pascal -

  • À l'intérieur d'un sous-programme ou d'un bloc appelé variables locales

  • En dehors de tous les sous-programmes appelés variables globales

  • Dans la définition des paramètres de sous-programme appelés paramètres formels

Expliquons ce que sont local et global variables et paramètres formels.

Variables locales

Les variables déclarées dans un sous-programme ou un bloc sont appelées variables locales. Ils ne peuvent être utilisés que par des instructions qui se trouvent à l'intérieur de ce sous-programme ou bloc de code. Les variables locales ne sont pas connues des sous-programmes en dehors des leurs. Voici l'exemple utilisant des variables locales. Ici, toutes les variables a , b et c sont locales au programme nommé exLocal .

program exLocal; 
var
   a, b, c: integer;

begin
   (* actual initialization *)
   a := 10;
   b := 20;
   c := a + b;
   
   writeln('value of a = ', a , ' b =  ',  b, ' and c = ', c);
end.

Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant -

value of a = 10 b = 20 c = 30

Maintenant, étendons un peu plus le programme, créons une procédure nommée display, qui aura son propre ensemble de variables a , b et c et affichera leurs valeurs, directement depuis le programme exLocal .

program exLocal;
var
   a, b, c: integer;
procedure display;

var
   a, b, c: integer;
begin
   (* local variables *)
   a := 10;
   b := 20;
   c := a + b;
   
   writeln('Winthin the procedure display');
   writeln('value of a = ', a , ' b =  ',  b, ' and c = ', c);
end;

begin
   a:= 100;
   b:= 200;
   c:= a + b;
   
   writeln('Winthin the program exlocal');
   writeln('value of a = ', a , ' b =  ',  b, ' and c = ', c);
   display();
end.

Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant -

Within the program exlocal
value of a = 100 b = 200 c = 300
Within the procedure display
value of a = 10 b = 20 c = 30

Variables globales

Les variables globales sont définies en dehors d'une fonction, généralement au-dessus du programme. Les variables globales conserveront leur valeur pendant toute la durée de vie de votre programme et elles peuvent être accédées à l'intérieur de n'importe laquelle des fonctions définies pour le programme.

UNE globalvariable est accessible par n'importe quelle fonction. Autrement dit, une variable globale est disponible pour une utilisation dans tout votre programme après sa déclaration. Voici un exemple d'utilisationglobal et local variables -

program exGlobal;
var
   a, b, c: integer;
procedure display;
var
   x, y, z: integer;

begin
   (* local variables *)
   x := 10;
   y := 20;
   z := x + y;
   
   (*global variables *)
   a := 30;
   b:= 40;
   c:= a + b;
   
   writeln('Winthin the procedure display');
   writeln(' Displaying the global variables a, b, and c');
   
   writeln('value of a = ', a , ' b =  ',  b, ' and c = ', c);
   writeln('Displaying the local variables x, y, and z');
   
   writeln('value of x = ', x , ' y =  ',  y, ' and z = ', z);
end;

begin
   a:= 100;
   b:= 200;
   c:= 300;
   
   writeln('Winthin the program exlocal');
   writeln('value of a = ', a , ' b =  ',  b, ' and c = ', c);
   
   display();
end.

Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant -

Within the program exlocal
value of a = 100 b = 200 c = 300
Within the procedure display
Displaying the global variables a, b, and c
value of a = 30 b = 40 c = 70
Displaying the local variables x, y, and z
value of x = 10 y = 20 z = 30

Veuillez noter que l'affichage de la procédure a accès aux variables a, b et c, qui sont des variables globales par rapport à l'affichage ainsi qu'à ses propres variables locales. Un programme peut avoir le même nom pour les variables locales et globales mais la valeur de la variable locale à l'intérieur d'une fonction aura la préférence.

Modifions un peu l'exemple précédent, maintenant les variables locales pour l'affichage de la procédure ont les mêmes noms que a , b , c -

program exGlobal;
var
   a, b, c: integer;
procedure display;

var
   a, b, c: integer;

begin
   (* local variables *)
   a := 10;
   b := 20;
   c := a + b;
   
   writeln('Winthin the procedure display');
   writeln(' Displaying the global variables a, b, and c');
   
   writeln('value of a = ', a , ' b =  ',  b, ' and c = ', c);
   writeln('Displaying the local variables a, b, and c');
   
   writeln('value of a = ', a , ' b =  ',  b, ' and c = ', c);
end;

begin
   a:= 100;
   b:= 200;
   c:= 300;
   
   writeln('Winthin the program exlocal');
   writeln('value of a = ', a , ' b =  ',  b, ' and c = ', c);   
   
   display();
end.

Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant -

Within the program exlocal
value of a = 100 b = 200 c = 300
Within the procedure display
Displaying the global variables a, b, and c
value of a = 10 b = 20 c = 30
Displaying the local variables a, b, and c
value of a = 10 b = 20 c = 30