Pascal - Llamada a subprograma por valor

los call by valueEl método de pasar argumentos a un subprograma copia el valor real de un argumento en el parámetro formal del subprograma. En este caso, los cambios realizados en el parámetro dentro de la función no tienen ningún efecto sobre el argumento.

Por defecto, Pascal usa call by valuemétodo para pasar argumentos. En general, esto significa que el código dentro de un subprograma no puede alterar los argumentos utilizados para llamar al subprograma. Considere la definición del procedimiento swap () como sigue.

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

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

Ahora, llamemos al procedimiento swap () pasando valores reales como en el siguiente ejemplo:

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.

Cuando se compila y ejecuta el código anterior, produce el siguiente resultado:

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