Questão 54 · Informática: Programação e algoritmos
Analise o script JS a seguir. <script> function xpto() { let n = 0; return {next: function() { if (n < 10) { n += 2; return {value:n/2, done:false}} else { return {value: -1, done: true}} } } } saida = "" const n = xpto(); x = n.next(); while (x.done == false) { saida += x.value + "/"; x = n.next(); } alert(saida); </script> O resultado da execução desse código é:
- A) -1/-2/-3/-4/-5/
- B) 0/1/2/3/4/5/
- C) 1/2/3/4/5/
- D) 5/4/3/2/1/
- E) 5/4/3/2/1/0
Marque a alternativa correta:
Gabarito: C
Gabarito definitivo divulgado pela banca FGV (BANESTES 2021).
Comentário
Gabarito: C.
A função xpto cria uma variável n local, inicializada com 0, e retorna um objeto com o método next. A cada chamada de next, enquanto n for menor que 10, n soma 2 e o método devolve value = n/2 com done falso. As chamadas produzem:
- n = 2, value = 1;
- n = 4, value = 2;
- n = 6, value = 3;
- n = 8, value = 4;
- n = 10, value = 5.
Na chamada seguinte, n não é menor que 10, e o método devolve done verdadeiro, encerrando o while. Como a saída acumula cada valor seguido de uma barra, o alert exibe 1/2/3/4/5/.
- (A) valores negativos nunca são acumulados: o -1 só é devolvido junto de done verdadeiro, quando o laço já terminou, e value é n/2 com n positivo.
- (B) o 0 nunca é produzido, pois n é somado antes de o valor ser devolvido.
- (D) os valores saem em ordem crescente (1 a 5), não decrescente.
- (E) a ordem é decrescente, e o 0 e a ausência da barra final não correspondem ao que o código produz.
Dica: em iteradores, acompanhe o valor de n a cada chamada e pare quando done for verdadeiro; o valor devolvido junto de done verdadeiro não entra na saída deste código.
Fundamentos: closures em JavaScript · padrão iterador com next, value e done · laço while e acumulação de strings
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 BANESTES 2021 (Desenvolvimento de Sistemas), questão 54, com o gabarito definitivo da banca. Comentário: Equipe Cravei · como fazemos e revisamos.