← Questões de Programação

Programação · FGV · 2023

Questão comentada de Programação

O desvio padrão é uma importante medida de dispersão na análise estatística, sendo definido pela fórmula a seguir. dp = raiz_quadrada(somatório(xi – xm)2 / n), onde xi é um dos valores do conjunto, xm é a média e n é o tamanho do conjunto. William implementou a seguinte função, em JavaScript, para o cálculo do desvio padrão, onde x é um vetor com os valores do conjunto na amostra analisada. 1. const dp = (x) => { 2. let xm = 0, soma = 0; 3. for(let i=0; i<x.length; i++) 4. xm += x[i]; 5. xm /= x.length; 6. for(let xi of x) 7. soma += (xi-xm)^2; 8. return Math.sqrt(soma / x.length); 9. } No entanto, William, ao criar a função para cálculo do desvio padrão, cometeu um erro, e, para consertá-lo, ele precisa:

Gabarito: C

O ponto central da questão é lembrar a diferença entre operadores em JavaScript. Na fórmula do desvio padrão, você precisa somar os desvios ao quadrado, isto é, cada valor menos a média, elevado a 2. Em JavaScript, o operador ^ não faz potência: ele faz XOR bit a bit. Parece detalhe de programador distraído, mas em prova isso derruba muita gente. Na função dada, as linhas 3 a 5 calculam corretamente a média, e a linha 8 usa Math.sqrt, que também está correta para tirar a raiz quadrada. O erro está na linha 7, porque (xi - xm)^2 não eleva ao quadrado de verdade. Para corrigir, deve-se usar uma forma própria para potência, como Math.pow(xi - xm, 2), ou outra técnica equivalente de exponenciação. Por isso o gabarito é a letra C. A banca quer que você perceba que ^ não serve para exponenciação em JavaScript. Esse é um erro clássico em linguagens de programação: símbolo parecido com o de matemática, mas significado diferente na linguagem. Resumo de prova: média com divisão, soma dos quadrados dos desvios e raiz no final. Se um operador parece matemático demais para ser verdade, desconfie. Em JavaScript, nem tudo que brilha é potência.

Continue treinando

Questões relacionadas