— Por que o celular tocou de madrugada se eu deixei o “silêncio automático” ligado? — perguntou uma moradora…
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 o celular tocou de madrugada se eu deixei o “silêncio automático” ligado? — perguntou uma moradora, depois que o grupo do prédio recebeu um aviso às 23h. O aplicativo usa a hora (um número de 0 a 23) para decidir se pode tocar som. O combinado era: entre 22h e antes de 7h, o app deve ficar silencioso; nos outros horários, pode tocar. O programador testou a função abaixo e anotou que ela devolveu FALSO para hora = 23, hora = 6 e hora = 10. func Silenciar(hora): se (hora >= 22 e hora < 7) retornar VERDADEIRO senao retornar FALSO Analise o algoritmo e identifique a mudança na condição que corrige o erro lógico para o modo silencioso funcionar no intervalo combinado.
- A) Adicionar "se hora < 7 entao hora = hora + 24" antes da condição, mantendo-a igual.
- B) Substituir "retornar VERDADEIRO" por "retornar FALSO" dentro do se.
- C) Substituir "hora >= 22 e hora < 7" por "hora >= 22 ou hora < 7".
- D) Substituir "hora >= 22" por "hora > 22", mantendo o restante igual.
- E) Substituir "hora < 7" por "hora <= 7", mantendo o restante igual.
✅ Resposta correta: alternativa C
Resolução passo a passo
- Analisamos a condição original. O intervalo combinado é de 22h até antes das 7h, ou seja, horas 22, 23, 0, 1, 2, 3, 4, 5 e 6. Essas horas formam um intervalo que 'cruza a meia-noite'. Passo 2: A condição original é 'hora >= 22 e hora < 7'. Essas duas exigências juntas nunca podem ser verdadeiras ao mesmo tempo, pois nenhum número é maior ou igual a 22 e menor que 7. Por isso a função devolve FALSO para todas as horas, o que explica os testes com hora = 23, 6 e 10. Passo 3: Para cobrir o intervalo que atravessa a meia-noite, basta que a hora esteja em pelo menos uma das duas faixas: ou é maior ou igual a 22, ou é menor que 7. Isso corresponde ao conectivo 'ou'. Passo 4: Testando a alternativa C, 'hora >= 22 ou hora < 7': para hora = 23 a primeira parte é verdadeira, retornando VERDADEIRO; para hora = 6 a segunda parte é verdadeira, retornando VERDADEIRO; para hora = 10 nenhuma parte é verdadeira, retornando FALSO. O comportamento fica correto. Passo 5: Por que as outras alternativas estão erradas. A: somar 24 à hora menor que 7 gera valores como 30, que não satisfazem 'hora < 7' nem a condição 'e' original, então a função continua falhando. B: trocar o retorno para FALSO inverte a resposta, mas a condição continua impossível, então o silêncio nunca ocorreria dentro do intervalo. D: trocar 'hora >= 22' por 'hora > 22' deixa de fora a hora 22 e não resolve a contradição do 'e'. E: trocar 'hora < 7' por 'hora <= 7' inclui a hora 7, que não faz parte do intervalo combinado, e também mantém o 'e' impossível. Passo 6: Conclusão: a mudança correta é trocar o 'e' por 'ou', alternativa C, que coincide com o gabarito oficial.
💡 Dica: Analise a condição lógica e identifique o operador correto para o intervalo de horas.
Alternativa por alternativa
Acredita que o problema está só na forma como a hora é representada e que somar 24 às horas da madrugada 'resolve' o intervalo, sem perceber que a contradição lógica do 'e' permanece.
Por que engana: Confundir o operador 'e' com 'ou' em condições que envolvem intervalos que atravessam a meia-noite.
Entende que o valor retornado dentro do se está invertido e que trocar VERDADEIRO por FALSO corrigiria o silêncio, sem notar que a condição nunca é verdadeira.
O intervalo atravessa a meia-noite; basta unir os dois trechos (>=22) e (<7) com OU, para 23 e 6 virarem verdadeiros.
Acha que o erro está no limite inferior do intervalo e que a hora 22 não é contada, sem perceber que o problema real é o conectivo 'e' que torna a condição impossível para qualquer hora.
Supõe que o limite de 7h precisa ser incluído e que 'menor ou igual a 7' corrigiria o intervalo, sem perceber que o 'e' continua tornando a condição sempre falsa e que o horário combinado é antes das 7h.
Raio-X da questão
condição lógica em programação
diagnostico
operadores lógicos básicos · estruturas condicionais simples
Estude operadores lógicos e intervalos em estruturas condicionais.
Confundir o operador 'e' com 'ou' em condições que envolvem intervalos que atravessam a meia-noite.
ciencia_tecnologia
pensamento_critico
cotidiano
Questões parecidas com resolução
- Escreva um algoritmo em pseudocódigo que, dadas as variáveis horario (inteiro 0–23) e conectado (boolean), decida se…
- — De novo você acordou às 2h com o celular vibrando? — perguntou a irmã de Caio. Ele mostrou o registro de bem-estar do…
- Em uma oficina de desenvolvimento de aplicativos na escola, uma equipe criou o protótipo "Agenda da Comunidade". O…
- — Professor, ontem não recebi lembrete da lição de casa, comentou Luísa. — O aplicativo só envia notificação quando um…
- Por que o celular parece “chamar” bem na hora de dormir? Em uma semana de provas, Lucas percebeu que acordava cansado e…
- — Por que o celular do Davi recebeu o aviso do mutirão, mas o da Júlia não? — perguntou uma moradora no grupo do bairro…
🔎 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
