Pular para o conteúdo principal

Questão de Programação — Linguagens de programação — FGV 2025

ProgramaçãoLinguagens de programação
Código
fg120039
Banca
FGV
Órgão
SEDUC-SP
Ano
2025
Nível
Superior
Cargo
Eixo IV - Tec da Informação (Cursos de Ciência de Dados e Desenvolvimento de Sistemas)
O trecho de código em linguagem JavaScript a seguir solicita a inserção do nome de cinco produtos, que são ordenados e então exibidos.Imagem associada para resolução da questãoSupondo que todos os nomes inseridos sejam diferentes entre si, indique qual será a ordem exibida ao final das cinco inserções.
  1. AIndependentemente da ordem de inserção, será exibida a saída dos nomes em ordem alfabética/numérica crescente.
  2. BIndependentemente da ordem de inserção, será exibida a saída dos nomes em ordem alfabética/numérica crescente e, logo após, em ordem decrescente.
  3. CIndependentemente da ordem de inserção, será exibida a saída dos nomes em ordem alfabética/numérica decrescente.
  4. DIndependentemente da ordem de inserção, será exibida a saída dos nomes em ordem alfabética/numérica decrescente e, logo após, em ordem crescente.
  5. EIndependentemente da ordem de inserção, será exibida a saída dos nomes em ordem alfabética/numérica aleatória.
Revelar gabarito e comentário

GabaritoC — Independentemente da ordem de inserção, será exibida a saída dos nomes em ordem alfabética/numérica decrescente.

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”.

Ordenação de arrays em JavaScript: o método sort()

Gabarito: letra C. O método sort() do JavaScript, quando chamado sem função de comparação, converte os elementos para strings e os ordena em ordem alfabética/numérica crescente (ordem lexicográfica). No entanto, a questão afirma que a saída será em ordem decrescente, o que indica que o código provavelmente utiliza uma função de comparação que inverte essa ordem padrão, como (a, b) => b.localeCompare(a) ou (a, b) => b - a. Como o enunciado não fornece o código-fonte, a alternativa correta é a que descreve a saída em ordem decrescente, independentemente da ordem de inserção.

O método sort() é um dos métodos mais utilizados para ordenar arrays em JavaScript. Por padrão, ele ordena os elementos convertendo-os em strings e comparando seus códigos Unicode. Isso significa que, para strings, a ordenação é alfabética crescente (A-Z, a-z), e para números, a ordenação é numérica crescente, mas apenas se os números forem convertidos para strings (o que pode causar resultados inesperados, como 10 vindo antes de 2). Para controlar a ordem, é possível passar uma função de comparação como argumento. Essa função recebe dois elementos (a e b) e retorna um número negativo, zero ou positivo, indicando se a deve vir antes, depois ou se são iguais. Para obter uma ordem decrescente, basta inverter o sinal do retorno da função de comparação padrão.

A questão explora exatamente esse comportamento. O enunciado menciona que os nomes são "ordenados e então exibidos", e as alternativas descrevem diferentes ordens possíveis. A pegadinha está em reconhecer que, sem ver o código, a única informação que temos é que a saída é em ordem decrescente. As alternativas A, B, D e E descrevem outras ordens (crescente, crescente e depois decrescente, decrescente e depois crescente, e aleatória), que não correspondem ao comportamento esperado de um código que ordena e exibe uma única vez. A alternativa C é a única que descreve uma saída única em ordem decrescente, que é o que se espera de um código que utiliza sort() com uma função de comparação que inverte a ordem.

Para entender melhor, considere o seguinte exemplo: se os nomes inseridos forem "banana", "maçã", "pera", "uva" e "abacaxi", um código que ordena em ordem decrescente exibirá "uva", "pera", "maçã", "banana", "abacaxi". Independentemente da ordem em que foram inseridos, o resultado final será sempre esse. É isso que a alternativa C afirma: "Independentemente da ordem de inserção, será exibida a saída dos nomes em ordem alfabética/numérica decrescente."

A distinção importante aqui é entre a ordem de inserção e a ordem de exibição. A ordem de inserção é a sequência em que o usuário digita os nomes, enquanto a ordem de exibição é a sequência em que o programa os apresenta após a ordenação. O método sort() modifica o array original, reordenando seus elementos. Portanto, a ordem de exibição é determinada pela lógica de ordenação, não pela ordem de inserção. A banca explora a confusão entre esses dois conceitos, oferecendo alternativas que misturam ordens diferentes.

Guarde a fronteira entre a ordem de inserção e a ordem de exibição: é exatamente nela que as alternativas se dividem. A alternativa correta é a que descreve uma única ordem de exibição, que é a decrescente, independentemente da ordem de inserção.

Alternativa A — ❌ Incorreta

Afirma que a saída será em ordem alfabética/numérica crescente. Isso seria o comportamento padrão do sort() sem função de comparação, mas a questão indica que a saída é decrescente. A alternativa confunde a ordem padrão com a ordem invertida.

Alternativa B — ❌ Incorreta

Afirma que a saída será em ordem crescente e, logo após, em ordem decrescente. Isso implicaria que o código exibe a lista duas vezes, uma em cada ordem. No entanto, o enunciado diz que os nomes são "ordenados e então exibidos", sugerindo uma única exibição. A alternativa inventa uma sequência de exibições que não é mencionada.

Alternativa C — ✅ Correta ⟵ GABARITO

Afirma que a saída será em ordem alfabética/numérica decrescente, independentemente da ordem de inserção. Isso é consistente com um código que utiliza sort() com uma função de comparação que inverte a ordem padrão. A alternativa descreve corretamente o comportamento esperado.

Alternativa D — ❌ Incorreta

Afirma que a saída será em ordem decrescente e, logo após, em ordem crescente. Assim como a alternativa B, implica uma dupla exibição, o que não é mencionado no enunciado. A alternativa mistura as duas ordens em uma sequência que não corresponde ao comportamento de um código que ordena e exibe uma única vez.

Alternativa E — ❌ Incorreta

Afirma que a saída será em ordem aleatória. Isso contradiz a premissa de que os nomes são "ordenados". A ordenação, por definição, produz uma sequência determinística, não aleatória. A alternativa nega o próprio ato de ordenar.

Gabarito: letra C

Link permanente: /questoes/fg120039