— Por que a bilheteria está cobrando “inteira” de crianças? — perguntou a atendente, ao testar um programinha…
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
— Por que a bilheteria está cobrando “inteira” de crianças? — perguntou a atendente, ao testar um programinha que classifica o tipo de ingresso no cinema do bairro. A regra divulgada no balcão é: pessoas com idade menor que 12 anos ou maior ou igual a 60 pagam meia. O programa foi escrito assim: ler idade se (idade < 12 e idade >= 60) então mostrar "meia" senão mostrar "inteira" Nos testes, ao digitar 10, apareceu “inteira”. Ao digitar 65, também apareceu “inteira”. Para 30, apareceu “inteira”, como esperado. A atendente quer corrigir o erro com a menor mudança possível no código, sem alterar a regra do cinema. Analise a regra e os resultados dos testes e identifique a alteração no programa que corrige o erro, ampliando a confiança de que ele classifica o ingresso corretamente.
- A) Trocar as mensagens mostradas nos blocos então e senão.
- B) Mover a linha ler idade para depois do comando se.
- C) Trocar o operador >= por > na condição do se.
- D) Trocar o operador e por ou na condição do se.
- E) Trocar o operador < por <= na condição do se.
✅ Resposta correta: alternativa D
Resolução passo a passo
- A regra do cinema dá meia para quem tem idade menor que 12 OU idade maior ou igual a 60. Basta uma das duas partes ser verdadeira para o ingresso ser meia. Passo 2: No programa, a condição usa 'e'. Nenhum valor é menor que 12 e, ao mesmo tempo, maior ou igual a 60, então a condição é sempre falsa e tudo sai como inteira. Isso explica os testes: 10 e 65 saíram como inteira. Passo 3: Trocando 'e' por 'ou', o 10 satisfaz a primeira parte (menor que 12) e sai meia; o 65 satisfaz a segunda (maior ou igual a 60) e sai meia; o 30 não satisfaz nenhuma e continua inteira, como esperado. A regra do cinema fica intacta e a mudança é mínima, de uma única palavra. Passo 4: A alternativa A está errada, porque trocar as mensagens só muda o texto exibido e não a decisão do programa, que continuaria classificando 10 e 65 como inteira. Passo 5: A alternativa B está errada, porque a ordem da leitura não corrige a condição e, se o se viesse antes da leitura, o programa não teria a idade para testar. Passo 6: A alternativa C está errada, porque trocar >= por > faria o 60 deixar de ser meia, contrariando a regra, e a condição continuaria impossível por causa do 'e'. Passo 7: A alternativa E está errada, porque trocar < por <= faria o 12 virar meia, contrariando a regra, e o 'e' continuaria tornando a condição sempre falsa.
💡 Dica: Analise a condição lógica e corrija o operador para refletir a regra dada.
Alternativa por alternativa
Acredita que o problema está na mensagem exibida e não na lógica da condição. Não percebe que as mensagens só são mostradas depois que a decisão já foi tomada.
Imagina que a posição da linha de leitura altera o resultado da comparação. Não percebe que a idade precisa ser lida antes de ser testada, e que o erro está na combinação das condições.
Supõe que o erro está no limite de 60 e não na forma como as duas condições são combinadas. Mesmo que ajustasse esse limite, a condição com 'e' continuaria impossível.
A meia vale para dois grupos alternativos; com e, a condição nunca é verdadeira ao mesmo tempo (<12 e >=60).
Lê 'menor que 12' como se fosse 'menor ou igual a 12' e acha que o problema está no limite inferior. Ignora que o operador 'e' torna a condição sempre falsa.
Raio-X da questão
condição lógica em programação
diagnostico
estruturas condicionais básicas · operadores lógicos
estude operadores lógicos e estruturas condicionais
Confundir o operador lógico 'e' com 'ou' na condição, levando a resultados incorretos.
ciencia_tecnologia
pensamento_critico
cotidiano
Questões parecidas com resolução
- — A última peça nunca aparece no painel — disse a monitora do centro cultural, ao conferir o inventário digital de…
- Por que um agendamento pode parecer concluído para o sistema, mas permanecer duvidoso para quem o realizou? Em um teste…
- — O painel marcou 80%, mas o caminhão não recebeu o aviso de retirada — observou a responsável pelo ponto de coleta de…
- 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…
- Durante a revisão de um programa que calcula a média das notas de estudantes, a equipe percebeu que alguns resultados…
🔎 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
