Olá, Vagner. Como vai?
Parabéns por encarar o desafio! O seu algoritmo estruturado em pseudocódigo ficou excelente e demonstra que você compreendeu muito bem os fundamentos da lógica de programação e das estruturas condicionais.
A escolha do operador lógico ou foi perfeita para o cenário, pois basta que o cliente cumpra uma das condições (ser menor de idade ou ser estudante) para ter direito ao benefício.
Para enriquecer ainda mais o seu aprendizado sobre pensamento computacional, trago algumas sugestões de boas práticas e pontos de atenção que vão te ajudar quando você passar essa lógica para uma linguagem de programação real:
1. O problema da sensibilidade de caixa (Maiúsculas e Minúsculas)
No seu código, você validou se a resposta do estudante é igual a "sim" ou "sou". Mas e se o usuário digitar "Sim", "SIM" ou "Sou"?
Na maioria das linguagens de programação, as letras maiúsculas e minúsculas são tratadas como caracteres totalmente diferentes. Uma boa prática do pensamento computacional para contornar isso é converter a resposta do usuário para letras minúsculas antes de fazer a checagem.
2. Tratamento de respostas negativas
Caso a pessoa digite "não estudante" ou qualquer outra frase que por acaso contenha a palavra "sou" (ex: "não sou"), o sistema atual poderia acabar dando o desconto por engano. Para evitar isso, o ideal em sistemas reais é guiar o usuário para responder apenas com opções fechadas (como 1 para Sim e 2 para Não) ou tratar estritamente os textos.
Veja uma forma atualizada do seu pseudocódigo aplicando uma padronização na leitura:
Variavel: idade, estudante
Exiba("Para que possamos analisar seu desconto, por gentileza preencha as informações abaixo:")
QuebraLinha
Exiba("Quantos anos você tem?: ")
Leia(idade)
QuebraLinha
Exiba("Você é estudante? (Digite SIM ou NAO): ")
Leia(estudante)
// Boa prática: Transformamos o texto em minúsculo para evitar o erro de digitação
estudante = Minusculo(estudante)
Se (idade < 18 ou estudante == "sim" ou estudante == "sou") então
Exiba("Você ganhou um desconto de 50% ao valor total do ingresso")
Senão
Exiba("Para as informações preenchidas não há nenhum desconto aplicavel")
Fimse
Organizar o código com recuos (identação) dentro do bloco Se/Senão, assim como você fez na estrutura geral, também ajuda muito na leitura do algoritmo conforme ele vai crescendo.
Continue praticando, pois o pensamento computacional é a base mais importante para qualquer linguagem que você escolher aprender no futuro!
Espero que possa ter lhe ajudado!