FGV · DPE/MT · 2015 · Analista de Sistemas

Questão 55 · Informática: Programação e algoritmos

O código em PHP (versão 5.4.4) apresentado a seguir deve calcular e exibir a média de uma lista de números, utilizando uma versão que não requer o cálculo e armazenamento da soma dos números. <?php function media($lista) { $atual = 0; for ($i = 0; $i < count($lista); $i++) { $atual += ($lista[$i]+$atual)/($i+1); } return $atual; } $a = array(1, 2, 3.5, 7.5); echo media($a);?> O programa, porém, não produz o resultado esperado.
Assinale a opção que indica, respectivamente, o valor exibido e a correção que deve ser feita.

  1. A) 7.5; trocar ($i+1) por ($i).
  2. B) 6.5; trocar ($i+1) por ($i).
  3. C) 7.5; trocar o sinal de adição antes de $atual por um sinal de subtração.
  4. D) 6.5; trocar o sinal de adição antes de $atual por um sinal de subtração.
  5. E) 7.5; remover o sinal de adição antes do operador de atribuição.

Marque a alternativa correta:

Gabarito: C

Gabarito definitivo divulgado pela banca FGV (DPE/MT 2015).

Comentário

Gabarito: C.

O código calcula a média de forma incremental, sem guardar a soma: a cada passo, o valor atual deve se aproximar do novo elemento em uma fração de 1 / (i + 1). Essa é a fórmula da média acumulada: média_i = média_(i-1) + (x_i - média_(i-1)) / (i + 1).

Ao executar o código como está, com a lista 1, 2, 3.5, 7.5, o resultado é:

  • i = 0: 0 + (1 + 0) / 1 = 1
  • i = 1: 1 + (2 + 1) / 2 = 2.5
  • i = 2: 2.5 + (3.5 + 2.5) / 3 = 4.5
  • i = 3: 4.5 + (7.5 + 4.5) / 4 = 7.5

O programa exibe 7.5. O erro está no sinal de adição dentro do parêntese, em ($lista[$i] + $atual). Trocando esse sinal por subtração, a expressão fica ($lista[$i] - $atual), que corresponde à fórmula acima e produz a média correta, 14 / 4 = 3.5. Por isso, a alternativa C é a correta.

Por que as outras estão erradas:

  • (A) trocar ($i + 1) por ($i) causaria divisão por zero na primeira passagem, e o valor 7.5 não seria a correção.
  • (B) o valor 6.5 não é o exibido pelo código, que é 7.5.
  • (D) o valor 6.5 não corresponde à execução; a troca de sinal é a correção, mas o valor exibido é 7.5.
  • (E) remover o sinal de adição antes da atribuição muda o cálculo e não corrige a média.

Dica de prova: em questões de código, rastreie a execução passo a passo antes de decidir o valor exibido e a correção. Confira também a fórmula descrita pelo enunciado: a média acumulada usa a diferença entre o novo valor e a média atual.

Fundamentos: média incremental sem armazenar a soma · rastreamento de código em PHP · fórmula da média acumulada

Comentário gerado pela Cravei IA a partir do enunciado e do gabarito definitivo divulgado pela banca, e conferido por uma verificação automática. A IA pode errar: o gabarito oficial sempre prevalece.

Fonte: prova FGV DPE/MT 2015 (Analista de Sistemas), questão 55, com o gabarito definitivo da banca. Comentário: Equipe Cravei · como fazemos e revisamos.

Concursos abertos que cobram Informática

TCE/MA 2026 Analista, Auditor e TécnicoUNCISAL 2026 Professor do Magistério SuperiorPROCON/AL 2026 Analista e Fiscal de Defesa do Consumidor