Na porta de um centro cultural, um programa simples decide se o visitante paga ingresso ou entra de graça. A…
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
Na porta de um centro cultural, um programa simples decide se o visitante paga ingresso ou entra de graça. A regra foi escrita assim: visitantes com 12 anos ou menos entram gratuitamente; também entram de graça os professores com carteirinha válida. O código testado foi: leia idade leia carteirinha se (idade <= 12) e (carteirinha = "sim") entao escreva "Entrada gratuita" senao escreva "Ingresso pago" fimse Durante a verificação, crianças sem carteirinha passaram a ser cobradas, embora a regra dissesse o contrário. A equipe percebeu que o problema estava na condição do teste. Analise o trecho e identifique a alteração que corrige o programa para atender à regra descrita no texto-base.
- A) Substituir o operador <= por < na comparação da idade.
- B) Substituir o operador e por ou na condição do teste.
- C) Retirar o bloco senao para que todos recebam entrada gratuita.
- D) Trocar a ordem das linhas de escrita para corrigir a condição.
- E) Substituir o valor "sim" por "nao" na leitura da carteirinha.
✅ Resposta correta: alternativa B
Resolução passo a passo
- Identifique a regra do texto. Visitantes com 12 anos ou menos entram de graça, e professores com carteirinha válida também entram de graça. São duas condições alternativas: basta satisfazer uma delas para não pagar. Isso corresponde ao conectivo ou.
- Analise a condição do código: (idade <= 12) e (carteirinha = sim). O conectivo e exige que as duas partes sejam verdadeiras ao mesmo tempo. Por isso uma criança de 8 anos sem carteirinha é avaliada como falsa, cai no senao e paga ingresso, exatamente o erro relatado.
- Teste a correção. Trocando e por ou, a expressão (idade <= 12) ou (carteirinha = sim) é verdadeira para a criança de 8 anos, que entra de graça, e também para o professor de 40 anos com carteirinha, que continua entrando de graça. Adulto sem carteirinha continua pagando, como a regra pede. Logo a alteração B corrige o programa.
- Por que as outras estão erradas. A: trocar <= por < excluiria crianças de 12 anos e não resolveria a cobrança indevida das crianças sem carteirinha. C: retirar o senao faria todos entrarem de graça, contrariando a regra de que adultos sem carteirinha pagam. D: a ordem dos comandos de escrita não altera a condição avaliada, então o resultado seria o mesmo. E: trocar sim por nao inverteria a verificação do professor e não corrigiria a lógica da criança sem carteirinha.
- Gabarito oficial: B, correto. Conferido por resolução própria.
💡 Dica: Analise a condição lógica e substitua o operador correto para refletir a regra.
Alternativa por alternativa
Acredita que o problema está no limite de idade e que a comparação com 12 está incluindo crianças indevidamente. Não percebe que a falha é a exigência simultânea da carteirinha.
Por que engana: Confundir o operador lógico 'e' com 'ou', levando a condições incorretas na decisão do programa.
A regra aceita quem tem 12 anos ou menos, ou quem apresenta carteirinha; por isso, a condição precisa usar ou.
Entende que o bloco senao é o responsável pela cobrança e que removê-lo resolveria o problema. Não percebe que o senao apenas executa o caso falso da condição.
Supõe que a ordem dos comandos de escrita define quando a condição é verdadeira. A ordem das saídas não altera a avaliação lógica da condição.
Imagina que inverter o valor da carteirinha corrige a regra, sem perceber que a exigência de carteirinha para crianças não faz sentido na regra. O erro está no conectivo, não no valor comparado.
Raio-X da questão
condição lógica em programação
avaliacao
operadores lógicos básicos · estruturas condicionais simples
Estude operadores lógicos e estruturas condicionais em programação.
Confundir o operador lógico 'e' com 'ou', levando a condições incorretas na decisão do programa.
ciencia_tecnologia
pensamento_critico
cotidiano
Questões parecidas com resolução
- Na entrada de um clube de leitura, um painel eletrônico libera o acesso às oficinas com base em duas informações: a…
- Projete um algoritmo em pseudocódigo que, dadas as variáveis idade (inteiro), estudante (booleano) e renda (real)…
- Crie um algoritmo simples em pseudocódigo para decidir se uma pessoa pode entrar em um evento. Se a idade for 18 anos ou…
- Considere o pseudocódigo abaixo: Leia idade Se idade >= 18 então imprimir "Adulto" Senao imprimir "Menor" Qual será a…
- No centro cultural do bairro, um projeto de jogos recebe crianças de diferentes anos escolares. Para organizar a…
- Elabore um algoritmo que determina se uma pessoa pode ir ao cinema, considerando se a idade é maior ou igual a 12 anos.
🔎 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
