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)² / 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:
Autilizar o método size, no lugar do atributo length, para obter o tamanho do vetor, nas linhas 3, 5 e 8;
Breescrever a divisão na forma expandida, na linha 5, ficando no formato xm = xm / x.length;
Cutilizar Math.pow para elevar ao quadrado, na linha 7, no lugar do operador ^, ficando Math.pow(xi-xm,2);
Dmodificar a estrutura for, na linha 3, do modelo tradicional para o uso do operador of;
Eutilizar const no lugar de let para definir as variáveis soma e xm, na linha 2.
Revelar gabarito e comentário▾
GabaritoC — utilizar Math.pow para elevar ao quadrado, na linha 7, no lugar do operador ^, ficando Math.pow(xi-xm,2);
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
Erro no cálculo do desvio padrão em JavaScript
Gabarito: letra C. O erro está na linha 7, onde o operador ^ é usado para elevar ao quadrado. Em JavaScript, ^ é o operador bitwise XOR, não exponenciação. O correto é utilizar Math.pow(xi - xm, 2) ou o operador ** (exponenciação). As demais alternativas não corrigem o problema ou introduzem novos erros.
A banca testa o conhecimento sobre operadores aritméticos e funções matemáticas em JavaScript, especificamente a diferença entre o operador ^ e o método Math.pow.
Alternativa A — ❌ Incorreta
Propõe usar o método size no lugar de length. Arrays em JavaScript não possuem método size; a propriedade length é a forma correta de obter o tamanho do vetor. Além disso, isso não corrige o erro de exponenciação.
Alternativa B — ❌ Incorreta
Sugere reescrever a divisão na forma expandida (xm = xm / x.length). O operador /= já realiza essa operação de forma correta e concisa; não há erro nessa linha. Portanto, essa alteração é desnecessária e não resolve o problema.
Alternativa C — ✅ Correta ⟵ GABARITO
A linha 7 usa (xi-xm)^2, onde ^ é o operador XOR bit a bit. Para calcular a potência, deve-se usar Math.pow(xi-xm, 2) (ou (xi-xm)**2 com o operador de exponenciação ES2016). Essa substituição corrige o cálculo do quadrado do desvio, tornando a função funcional.
PEGA ESSA DICA!
Em JavaScript, lembre-se: ^ é XOR, não exponenciação. Use Math.pow(base, expoente) ou o operador ** para potências.
Alternativa D — ❌ Incorreta
Modificar o primeiro for para usar of não faz sentido, pois o primeiro laço precisa do índice para percorrer o vetor e acumular a soma. O for...of é usado no segundo laço e está correto. Essa alteração não corrigiria o erro e ainda quebraria a lógica.
Alternativa E — ❌ Incorreta
Usar const no lugar de let para soma e xm impediria a reatribuição, já que ambos são atualizados (incremento e divisão). Isso geraria um erro de execução. A declaração com let é adequada.
Conclusão: O único erro na função é o uso do operador ^ para exponenciação. A correção adequada é substituí-lo por Math.pow, como indicado na alternativa C. Gabarito: letra C.