(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.
Variável | Inicial | p(a + b, a, a) |
---|---|---|
a | 2 | 2 |
b | 3 | 3 |
x | 5 | |
y | 2 3 | |
z | 2 7 |
Variável | Inicial | p(a + b, a, a) |
---|---|---|
a | 2 | 2 3 8 |
b | 3 | 3 |
x | 5 | |
y | a | |
z | a |
Variável | Inicial | p(a + b, a, a) |
---|---|---|
a | 2 | 2 3 9 |
b | 3 | 3 |
x | a + b | |
y | a | |
z | a |
Variável | Inicial | p(a + b, a, a)1 | p(a + b, a, a)2 |
---|---|---|---|
a | 2 | 2 3 7 | 2 7 3 |
b | 3 | 3 | 3 |
x | 5 | 5 | |
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.