Considere o seguinte programa escrito na sintaxe C:
void serie(int i, int lo, int hi, int term, int result)
{
result = term;
for (i = lo; i < hi; i++)
{
result = result + term;
}
}
void main()
{
int k = 0;
int v[5] = {0, 0, 0, 0, 0};
serie(k, 1, 5, 2 * k + 1, v[k]);
}
Para cada um dos métodos de passagem de parâmetros listados a seguir, quais são os valores das variáveis k
e v
após a chamada ao método serie
?
- Parâmetros são passados por valor;
- Parâmetros são passados por referência;
- Parâmetros são passados por nome;
- Parâmetros são passados por valor-resultado.
Parâmetros são passados por valorVariável | Inicial | serie(k, 1, 5, 2 * k + 1, v[k]) |
---|
k | 0 | |
v[0] | 0 | |
v[1] | 0 | |
v[2] | 0 | |
v[3] | 0 | |
v[4] | 0 | |
i | | 0 1 2 3 4 5 |
lo | | 1 |
hi | | 5 |
term | | 1 |
result | | 0 1 2 3 4 5 |
Parâmetros são passados por referênciaVariável | Inicial | serie(k, 1, 5, 2 * k + 1, v[k]) |
---|
k | 0 | 0 1 2 3 4 5 |
v[0] | 0 | 0 1 2 3 4 5 |
v[1] | 0 | |
v[2] | 0 | |
v[3] | 0 | |
v[4] | 0 | |
i | | k |
lo | | 1 |
hi | | 5 |
term | | 1 |
result | | v[0] |
Parâmetros são passados por nomeVariável | Inicial | serie(k, 1, 5, 2 * k + 1, v[k]) |
---|
k | 0 | 0 1 2 3 4 5 |
v[0] | 0 | 0 1 |
v[1] | 0 | 0 3 |
v[2] | 0 | 0 5 |
v[3] | 0 | 0 7 |
v[4] | 0 | 0 9 |
i | | k |
lo | | 1 |
hi | | 5 |
term | | 2 * k + 1 |
result | | v[k] |
Parâmetros são passados por valor-resultadoVariável | Inicial | serie(k, 1, 5, 2 * k + 1, v[k]) |
---|
k | 0 | 0 5 |
v[0] | 0 | 0 5 |
v[1] | 0 | |
v[2] | 0 | |
v[3] | 0 | |
v[4] | 0 | |
i | | 0 1 2 3 4 5 (k) |
lo | | 1 |
hi | | 5 |
term | | 1 |
result | | 0 1 2 3 4 5 (v[0]) |