Ybadoo - Soluções em Software Livre
Tutoriais
Compiladores

Considere o seguinte programa escrito na sintaxe C:

float sum(int i, int lo, int hi, float term)
{
float temp = 0.0;

for(i = lo; i <= hi; i++)
{
temp = temp + term;
}

return temp;
}

void main()
{
int k = 1;

printf("%f", sum(k, 1, 5, 1/k));
}

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ávelInicialsum(k, 1, 5, 1/k)
k11
i 1 1 2 3 4 5 6
lo 1
hi 5
term 1.0
temp 0.0 1.0 2.0 3.0 4.0 5.0
Parâmetros são passados por referência
VariávelInicialsum(k, 1, 5, 1/k)
k11 1 2 3 4 5 6
i k
lo 1
hi 5
term 1.0
temp 0.0 1.0 2.0 3.0 4.0 5.0
Parâmetros são passados por nome
VariávelInicialsum(k, 1, 5, 1/k)
k11 1 2 3 4 5 6
i k
lo 1
hi 5
term 1/k
temp 0.0 1.0 1.5 1.83 2.08 2.28
Parâmetros são passados por valor-resultado
VariávelInicialsum(k, 1, 5, 1/k)
k11 6
i 1 1 2 3 4 5 6 (k)
lo 1
hi 5
term 1.0
temp 0.0 1.0 2.0 3.0 4.0 5.0