Pascal - Chiamata di sottoprogramma per valore

Il call by valueIl metodo per passare argomenti a un sottoprogramma copia il valore effettivo di un argomento nel parametro formale del sottoprogramma. In questo caso, le modifiche apportate al parametro all'interno della funzione non hanno effetto sull'argomento.

Per impostazione predefinita, Pascal utilizza call by valuemetodo per passare argomenti. In generale, ciò significa che il codice all'interno di un sottoprogramma non può modificare gli argomenti utilizzati per chiamare il sottoprogramma. Considera la definizione della procedura swap () come segue.

procedure swap(x, y: integer); 
var
   temp: integer;

begin
   temp := x;
   x:= y;
   y := temp;
end;

Ora, chiamiamo la procedura swap () passando i valori effettivi come nell'esempio seguente:

program exCallbyValue;
var
   a, b : integer;
(*procedure definition *)
procedure swap(x, y: integer); 

var
   temp: integer;

begin
   temp := x;
   x:= y;
   y := temp;
end;

begin
   a := 100;
   b := 200;
   writeln('Before swap, value of a : ', a );
   writeln('Before swap, value of b : ', b );
   
   (* calling the procedure swap  by value   *)
   swap(a, b);
   writeln('After swap, value of a : ', a );
   writeln('After swap, value of b : ', b );
end.

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

Before swap, value of a :100
Before swap, value of b :200
After swap, value of a :100
After swap, value of b :200