1
resposta

[Projeto] Desafio: Verificação de desconto

{

Escreva("Digite sua idade:");
Leia(idade);

Escreva("Eh estudante? - false para nao e true para sim");
Leia(eh_estudante);

Se(idade < 18 OU eh_estudante == true)
{
Escreva("Meia-entrada liberada");
}
Se-nao
{
Escreva("Valor integral");
}
}

1 resposta

Olá, João Pedro! Como vai?

Parabéns por concluir mais esse desafio! O seu algoritmo ficou excelente e a escolha de utilizar tipos booleanos (true ou false) para a variável eh_estudante mostra que você já está pensando como um desenvolvedor de verdade. É exatamente assim que os sistemas reais validam esse tipo de informação.

A sua lógica central utilizando o operador OU está impecável. No entanto, se fôssemos compilar ou rodar esse pseudocódigo em uma máquina, encontraríamos dois pequenos detalhes de sintaxe que fariam o computador dar erro.

Vamos analisar quais são para deixar o seu código 100% polido:


Os Detalhes que Precisam de Ajuste

1. O hífen no "Senão"

Na estrutura de decisão, você escreveu Se-nao. Para os computadores, o hífen funciona como um operador de subtração. Portanto, a máquina tentaria subtrair a palavra "nao" de "Se", o que geraria um erro de compilação.

  • A solução: Escreva a palavra junta e sem acento: Senão.

2. Redundância na comparação booleana (Dica de Pro)

Na linha do teste lógico, você escreveu: eh_estudante == true.
Isso não está errado e vai rodar, mas na programação é considerado uma redundância. Como a variável eh_estudante já guarda o valor true ou false, você não precisa perguntar se "verdadeiro é igual a verdadeiro". O computador já entende o valor dela diretamente.

  • A evolução: Se(idade < 18 OU eh_estudante)

O Algoritmo Corrigido e Otimizado

Aplicando esses ajustes, veja como o seu pseudocódigo fica mais limpo e pronto para o mercado:

{
    Escreva("Digite sua idade:");
    Leia(idade);
    
    Escreva("Eh estudante? - false para nao e true para sim");
    Leia(eh_estudante);

    // OTIMIZAÇÃO: Removemos o '== true' pois a variável booleana já se autoavalia
    Se (idade < 18 OU eh_estudante)
    {
        Escreva("Meia-entrada liberada");
    }
    // CORREÇÃO: Removido o hífen para evitar erro de sintaxe
    Senão 
    {
        Escreva("Valor integral");
    }
}

Como a Tabela Verdade do OU Funciona Aqui

Para ajudar os colegas do fórum que estão estudando lógica junto com você, vale lembrar que o operador OU só precisa que uma das condições seja verdadeira para liberar o desconto.

Olha como o computador avalia os cenários na memória:

  • Idade = 15, Estudante = false $\rightarrow$ Menor que 18? Sim. É estudante? Não. Como um deles é Sim $\rightarrow$ Meia-entrada!
  • Idade = 25, Estudante = true $\rightarrow$ Menor que 18? Não. É estudante? Sim. Como um deles é Sim $\rightarrow$ Meia-entrada!
  • Idade = 20, Estudante = false $\rightarrow$ Menor que 18? Não. É estudante? Não. Ambos são Não $\rightarrow$ Valor integral.

Parabéns pelo progresso constante, João Pedro! Você está pegando a base da lógica de programação muito rápido. Continue firme nos exercícios!

Espero que possa ter lhe ajudado!