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 valor| Variá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ência| Variá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 nome| Variá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-resultado| Variá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]) |