Pascal - Subprograma Chamada por Valor

o call by valueO método de passar argumentos para um subprograma copia o valor real de um argumento para o parâmetro formal do subprograma. Nesse caso, as alterações feitas no parâmetro dentro da função não afetam o argumento.

Por padrão, Pascal usa call by valuemétodo para passar argumentos. Em geral, isso significa que o código dentro de um subprograma não pode alterar os argumentos usados ​​para chamar o subprograma. Considere a definição do procedimento swap () a seguir.

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

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

Agora, vamos chamar o procedimento swap () passando valores reais como no exemplo a seguir -

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 o código acima é compilado e executado, ele produz o seguinte 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