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