Pascal - Ambito variabile

Un ambito in qualsiasi programmazione è una regione del programma in cui una variabile definita può avere la sua esistenza e al di là di tale variabile non è possibile accedere. Ci sono tre posti in cui le variabili possono essere dichiarate nel linguaggio di programmazione Pascal:

  • All'interno di un sottoprogramma o di un blocco che si chiama variabili locali

  • Al di fuori di tutti i sottoprogrammi che si chiama variabili globali

  • Nella definizione dei parametri del sottoprogramma che viene chiamato parametri formali

Spieghiamo cosa sono local e global variabili e parametri formali.

Variabili locali

Le variabili dichiarate all'interno di un sottoprogramma o blocco sono chiamate variabili locali. Possono essere utilizzati solo da istruzioni che si trovano all'interno di quel sottoprogramma o blocco di codice. Le variabili locali non sono note ai sottoprogrammi al di fuori del proprio. Di seguito è riportato l'esempio utilizzando variabili locali. Qui, tutte le variabili di una , b e c sono locali rispetto a programma chiamato 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.

Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:

value of a = 10 b = 20 c = 30

Ora, cerchiamo di estendere po 'di più il programma, creiamo una procedura di nome di visualizzazione, che avrà il proprio insieme di variabili a , b e c e visualizzare i loro valori, direttamente dal programma 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.

Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:

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

Variabili globali

Le variabili globali sono definite al di fuori di una funzione, generalmente nella parte superiore del programma. Le variabili globali manterranno il loro valore per tutta la durata del programma ed è possibile accedervi all'interno di una qualsiasi delle funzioni definite per il programma.

UN globalpuò essere letta da qualsiasi funzione. Cioè, una variabile globale è disponibile per l'uso in tutto il programma dopo la sua dichiarazione. Di seguito è riportato un esempio di utilizzo diglobal e local variabili -

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.

Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:

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

Si noti che la visualizzazione della procedura ha accesso alle variabili a, bec, che sono variabili globali rispetto alla visualizzazione oltre che alle proprie variabili locali. Un programma può avere lo stesso nome per le variabili locali e globali, ma il valore della variabile locale all'interno di una funzione avrà la preferenza.

Cambiamo un po 'l'esempio precedente, ora le variabili locali per la visualizzazione della procedura hanno gli stessi nomi di 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.

Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:

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