Ybadoo - Soluções em Software Livre
Tutoriais
Compiladores

(Price, 2005) Considere o seguinte programa escrito na sintaxe Pascal:

program main;
var
a, b : integer;

procedure p(x, y, z : integer);
begin
y := y + 1
z := z + x;
end;

begin
a := 2;
b := 3;
p(a + b, a, a);
write(a);
end.

Para cada um dos métodos de passagem de parâmetros a seguir, quais são os valores impressos pelo programa.

  1. Parâmetros são passados por valor;
  2. Parâmetros são passados por referência;
  3. Parâmetros são passados por nome;
  4. Parâmetros são passados por valor-resultado.

 

Parâmetros são passados por valor
VariávelInicialp(a + b, a, a)
a22
b33
x 5
y 2 3
z 2 7
Parâmetros são passados por referência
VariávelInicialp(a + b, a, a)
a22 3 8
b33
x 5
y a
z a
Parâmetros são passados por nome
VariávelInicialp(a + b, a, a)
a22 3 9
b33
x a + b
y a
z a
Parâmetros são passados por valor-resultado
VariávelInicialp(a + b, a, a)1p(a + b, a, a)2
a22 3 72 7 3
b333
x 55
y 2 3 (a)2 3 (a)
z 2 7 (a)2 7 (a)

Observações:

1 ordem dos assinalamentos no retorno da esquerda para a direita

2 ordem dos assinalamentos no retorno da direita para a esquerda

Price, Ana Maria de Alencar. (2005). Implementação de Linguagens de Programação: compiladores. 3ª edição. Porto Alegre: Instituto de Informática da UFRGS: Sagra Luzzatto. 212 páginas.