— Não deveria parar tão cedo, observou a repórter ao testar o programa que ela mesma escreveu para contar as…
Publicado por Alexandre Lombardi dos Santos, fundador do GeraProva
Analisar programas para detectar e remover erros, ampliando a confiança na sua correção.
Fonte: Base Nacional Comum Curricular (MEC).Questão
— Não deveria parar tão cedo, observou a repórter ao testar o programa que ela mesma escreveu para contar as vogais em suas transcrições. Em cada execução, o resultado final apresentava sempre 1, embora o texto contivesse várias letras 'a'. Ao investigar, ela encontrou este pseudocódigo: funcao contarA(texto): total <- 0 para i de 1 ate comprimento(texto): se texto[i] = 'a' entao total <- total + 1 fim se retornar total fim para A repórter deseja garantir a confiabilidade do resultado, eliminando qualquer erro que impeça a função de processar todos os caracteres. Ela precisa ajustar o código para que o algoritmo contabilize corretamente todas as ocorrências de 'a' antes de encerrar a função. Analise o pseudocódigo apresentado e determine qual ajuste corrige o programa para contabilizar corretamente todas as ocorrências da letra 'a' em 'texto' antes de encerrar a função?
- A) Mover a instrução retornar total para após o fim do laço, garantindo que o resultado seja devolvido somente depois de percorrer toda a string
- B) Inicializar total com 1 antes do laço para compensar a primeira ocorrência de 'a'
- C) Substituir se texto[i] = 'a' por se texto[i] <> 'a' para contar apenas caracteres diferentes de 'a'
- D) Alterar o laço para para i de 0 ate comprimento(texto) para ajustar o índice
- E) Trocar texto[i] = 'a' por texto[i] = 'A' para considerar apenas letras maiúsculas
✅ Resposta correta: alternativa A
Resolução passo a passo
- Leia o pseudocódigo com atenção. O laço 'para i de 1 ate comprimento(texto)' percorre os caracteres da string, e a instrução 'se texto[i] = 'a' entao total <- total + 1' soma 1 sempre que o caractere atual é 'a'. A lógica de contagem está correta.Passo 2: Observe onde está a instrução 'retornar total'. Ela está DENTRO do laço, logo após o 'fim se'. Na primeira iteração, a função já devolve o valor e encerra, sem percorrer o restante do texto. Por isso o resultado é sempre 1 (ou o valor parcial da primeira posição), mesmo com várias letras 'a'.Passo 3: Para corrigir, basta mover 'retornar total' para depois do 'fim para', de modo que o valor só seja devolvido após o término do laço, quando todos os caracteres já foram verificados. Essa é a alternativa A, que coincide com o gabarito oficial.Passo 4: A alternativa B está errada porque inicializar total com 1 adiciona um valor falso e não resolve o retorno antecipado; o resultado continuaria incorreto.Passo 5: A alternativa C está errada porque trocar a condição para 'diferente de a' conta outros caracteres, em vez de contar as letras 'a'.Passo 6: A alternativa D está errada porque o índice 1 já cobre a primeira posição do texto; começar em 0 tentaria acessar uma posição inexistente nesta convenção de índices e não corrige o retorno antecipado.Passo 7: A alternativa E está errada porque o enunciado pede a contagem da letra 'a' minúscula; considerar apenas maiúsculas ignoraria as ocorrências pedidas.
💡 Dica: Verifique a posição da instrução de retorno dentro do laço para garantir que todas as ocorrências sejam contadas.
Alternativa por alternativa
O 'retornar total' dentro do laço interrompe a função na primeira iteração; movê-lo para fora permite processar toda a string antes de encerrar.
Acredita que o problema está no valor inicial do contador e que a primeira ocorrência de 'a' precisa ser compensada. Não percebe que o erro real é a saída antecipada do laço.
Por que engana: O aluno pode retornar o total dentro do laço, fazendo com que a função pare após a primeira iteração, não contando todas as ocorrências.
Lê mal o objetivo da função e inverte a condição, passando a contar caracteres diferentes de 'a'. Não observa que a questão pede a contagem exata das ocorrências da letra 'a'.
Supõe que a contagem falha por não processar o primeiro caractere e tenta começar o índice em 0. Não percebe que o índice 1 já alcança a primeira posição e que o problema está no retorno dentro do laço.
Acha que a diferença entre maiúsculas e minúsculas explica o erro e troca 'a' por 'A'. Ignora que o enunciado trata da letra 'a' e que o retorno precoce continua presente.
Raio-X da questão
controle de fluxo em algoritmos
diagnostico
estruturas de repetição · condicionais básicas
Estude estruturas de repetição e posicionamento correto de comandos de retorno em funções.
O aluno pode retornar o total dentro do laço, fazendo com que a função pare após a primeira iteração, não contando todas as ocorrências.
pensamento_critico
abstrato
Questões parecidas com resolução
- Na horta da escola, um painel deve avisar enquanto a umidade do solo estiver abaixo de 50. O programa usado no painel é…
- Em uma apresentação escolar, o programa de luzes deve ativar efeitos nas cinco cenas, numeradas de 1 a 5. O trecho usado…
- Quando o rio se aproxima das casas, a Defesa Civil de um município usa um programa para avisar os moradores pelo…
- Por que o painel de alerta do rio não envia aviso mesmo quando o nível sobe em duas medições seguidas? Em uma simulação…
- — O painel marcou 80%, mas o caminhão não recebeu o aviso de retirada — observou a responsável pelo ponto de coleta de…
- — A última peça nunca aparece no painel — disse a monitora do centro cultural, ao conferir o inventário digital de…
🔎 Procurar outra questão
Procure no banco do GeraProva pelo tema ou por um trecho do enunciado. Cada questão já vem com resolução comentada e a análise de cada alternativa.
Professor: monte a prova com questões como esta, com gabarito e folha de respostas, em 30 segundos. Ver planos · Blog
