(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.