Olá, Marcio. Como vai?
Excelente lógica! Você aplicou muito bem o conceito de Operadores Lógicos, especificamente o operador OU (OR). No pensamento computacional, entender que basta uma das condições ser verdadeira para que o resultado final seja positivo é fundamental para criar algoritmos eficientes.
Sua estruturação em linguagem natural está impecável e cobre bem a regra de negócio comum em cinemas. Para agregar ainda mais valor ao seu desafio, gostaria de propor uma pequena reflexão sobre a Validação de Dados e como isso se traduziria para o código.
1. Refinando a entrada "estudante"
No seu algoritmo, você definiu que a leitura de estudante deve ser um valor verdadeiro ou falso (booleano). Na prática, quando pedimos isso ao usuário, ele costuma digitar "Sim" ou "Não". Um bom refinamento seria converter essa resposta textual para a lógica booleana que o computador entende.
2. Exemplo em Python
Veja como o seu algoritmo ficaria traduzido para Python, aplicando uma pequena melhoria para aceitar diferentes formas de resposta do usuário:
# Entrada de dados
idade = int(input("Digite a sua idade: "))
resposta_estudante = input("Você é estudante? (Sim/Não): ").strip().lower()
# Convertendo a resposta para verdadeiro ou falso
eh_estudante = (resposta_estudante == "sim")
# Verificando as condições com o operador lógico 'or'
if idade < 18 or eh_estudante:
print("Você tem direito à meia-entrada")
else:
print("Você não tem direito ao desconto")
3. Ordem de Precedência
Uma curiosidade técnica: em algoritmos mais complexos, a ordem das condições pode impactar a velocidade do programa (embora aqui seja imperceptível). No Python, se a primeira condição (idade < 18) for verdadeira, o computador nem chega a checar a segunda, pois ele já sabe que o resultado do OU será verdadeiro. Isso se chama avaliação de curto-circuito.
Sua base lógica está muito sólida e pronta para lidar com problemas ainda mais robustos!
Espero que possa ter lhe ajudado!