Pular para o conteúdo principal

Questão de Programação — Linguagens de programação — CESPE / CEBRASPE 2023

ProgramaçãoLinguagens de programação
Código
ce163364
Banca
CESPE / CEBRASPE
Órgão
TBG
Ano
2023
Nível
Superior
Cargo
Ênfase: Desenvolvimento de Software
Imagem associada para resolução da questãoA partir do código JavaScript precedente, julgue o item a seguir.Ao ser executado, o código inicialmente irá mostrar na tela apenas um botão similar ao mostrado a seguir.Imagem associada para resolução da questãoSe esse botão for clicado, será apresentado um resultado similar ao que se segue.Imagem associada para resolução da questão
  1. CCerto
  2. EErrado
Revelar gabarito e comentário

GabaritoC — Certo

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

JavaScript: funções geradoras e o protocolo de iteração

Gabarito: letra C (CERTO). O código define uma função geradora que, a cada chamada do método next(), incrementa um contador e retorna um objeto com as propriedades value e done — comportamento típico do protocolo de iteração do JavaScript. Ao ser executado, a página exibe apenas o botão; o resultado só aparece após o clique, que dispara a chamada ao gerador e exibe o valor retornado.

Uma função geradora é declarada com a sintaxe function* e, quando invocada, retorna um objeto iterador. Esse objeto possui o método next(), que executa o corpo da função até encontrar a palavra-chave yield (ou return), retornando um objeto com duas propriedades: value, que contém o valor produzido, e done, um booleano que indica se a iteração terminou. No código da questão, a função mostra() cria um contador n iniciado em 0 e define um método next() que soma 11 a n a cada chamada e retorna { value: n, done: false }.

Na prática, o fluxo é o seguinte: ao carregar a página, o JavaScript apenas define a função e associa o evento de clique ao botão — nada é exibido além do próprio botão. Quando o usuário clica, o evento dispara a chamada ao gerador, que executa next() e retorna o valor atualizado do contador. Esse valor é então inserido na página, por exemplo, via innerHTML ou textContent, produzindo o resultado mostrado na terceira imagem. A descrição do enunciado — primeiro o botão, depois o resultado após o clique — corresponde exatamente a esse comportamento.

A pegadinha da banca está em confundir o momento da execução: o código não exibe o resultado imediatamente ao carregar a página, mas apenas após a interação do usuário. Isso porque a chamada ao gerador e a exibição do valor estão dentro do manipulador de evento de clique, não no corpo principal do script. O candidato que lê o código rapidamente pode pensar que o valor é mostrado junto com o botão, mas a estrutura do código — com o addEventListener ou atributo onclick — deixa claro que a execução é condicionada ao clique.

Guarde a distinção entre a definição da função geradora e sua execução: a definição apenas cria o iterador quando chamada; a execução, que produz os valores, ocorre a cada next(). É exatamente essa separação que a questão explora — o botão é exibido no carregamento, e o resultado, somente após o clique.

  1. 1Carrega a página
  2. 2Exibe apenas o botão
  3. 3Usuário clica no botão
  4. 4Dispara o gerador (next())
  5. 5Exibe o valor retornado
LEVEL · soulevel.com.br

Alternativa C — ✅ Correto ⟵ GABARITO

A afirmativa está correta porque descreve com precisão o comportamento do código. Ao ser executado, o script carrega a página e renderiza apenas o botão, sem qualquer saída adicional — a função geradora é definida, mas não invocada nesse momento. O resultado só aparece quando o usuário clica no botão, pois é o evento de clique que dispara a chamada ao gerador e a exibição do valor retornado. Essa sequência — botão primeiro, resultado depois — é exatamente o que as imagens 2 e 3 ilustram, confirmando a descrição do enunciado.

Gabarito: letra C

Link permanente: /questoes/ce163364