Questão nº 79
Questão de Tecnologia da Informação · FGV TCE-SP 2023 (nº 79)
O desvio padrão é uma importante medida de dispersão na análise estatística, sendo definido pela fórmula a seguir.
onde é um dos valores do conjunto, é a média e é 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); (alternativa correta)
- 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.
Resposta comentada
Gabarito Alternativa C
O desvio padrão mede o quanto os valores de um conjunto de dados se espalham em torno da média (o valor central). Para calculá-lo, precisamos somar o quadrado da diferença de cada valor para a média, dividir pelo número de valores e tirar a raiz quadrada.
(A) Incorreta: Em JavaScript, arrays usam o atributo length para retornar seu tamanho, não um método size().
(B) Incorreta: A sintaxe xm /= x.length é um atalho para xm = xm / x.length, e ambas são formas corretas e equivalentes de realizar a divisão.
(C) Correta: O operador ^ em JavaScript é o operador bitwise XOR (OU exclusivo bit a bit), e não o operador de exponenciação. Para elevar um número ao quadrado, deve-se usar Math.pow(base, expoente) ou o operador ** (exponenciação). Este é o erro que William cometeu.
(D) Incorreta: A estrutura for(let i=0; i<x.length; i++) é uma forma perfeitamente válida e correta de iterar sobre os elementos de um array por índice em JavaScript.
(E) Incorreta: As variáveis xm e soma têm seus valores alterados (reatribuídos) durante a execução da função. Variáveis declaradas com const não podem ser reatribuídas, o que causaria um erro em tempo de execução. let é o correto para variáveis mutáveis.
Fonte: FGV TCE-SP 2023 Auxiliar Técnico da Fiscalização - TI (Caderno Tipo 1). Reproduzida para fins de estudo.