Olá, Vagner. Como vai?
Parabéns pela excelente estruturação do seu pseudocódigo! Você conseguiu traduzir um problema real de um comércio (o fluxo de caixa e concessão de benefícios em uma cafeteria) em uma sequência lógica impecável, aplicando conceitos fundamentais como a inicialização de variáveis, loops contados (Para) e condicionais aninhadas (Se / Senão Se).
O uso do laço para repetir a pergunta sobre o preço do produto com base na quantidade informada pelo usuário ficou excelente, atuando como um acumulador perfeito na linha ValorTotal <- ValorTotal + PrecoItem.
Para visualizar como o computador processa essa esteira de compras e a tomada de decisão sobre o desconto, podemos olhar para o fluxo do algoritmo:
Para agregar ainda mais valor ao seu aprendizado em pensamento computacional, vale a pena analisarmos dois pontos específicos do seu código que podem ser otimizados quando você for migrar essa lógica para uma linguagem de programação real (como Python ou JavaScript):
1. Simplificando a validação de texto (Strings)
Na hora de checar se o cliente possui cadastro, você cobriu muito bem as variações de escrita do usuário: Cadastro == "Sim" ou Cadastro == "sim" ou Cadastro == "SIM".
Na programação, para evitar ter que digitar todas as combinações possíveis de letras maiúsculas e minúsculas (o que tornaria o código gigante se a resposta fosse uma frase mais longa), nós costumamos usar uma função de tratamento que transforma tudo o que o usuário digitou em letras minúsculas antes de fazer o teste.
Em pseudocódigo, ficaria tão simples quanto isto:
RespostaMinuscula <- ConverterParaMinusculo(Cadastro)
Se (RespostaMinuscula == "sim") então
Cadastro <- True
Senão Se (RespostaMinuscula == "não" ou RespostaMinuscula == "nao") então
Cadastro <- False
FimSe
2. Atenção ao bloco Senão vazio
No seu primeiro bloco de decisão (linhas 20 a 24), você colocou um Senão final sem nenhuma ação antes do Fimse.
Uma boa prática de arquitetura é sempre prever o que acontece se o usuário digitar algo totalmente inválido (como "Talvez" ou errar a digitação). Se ele digitar algo inválido no seu código atual, o programa assumirá o que estava antes. O ideal é definir um valor padrão de segurança, tratando o cliente como não cadastrado por padrão:
Se (Cadastro == "Sim" ou Cadastro == "sim" ou Cadastro == "SIM") entao
Cadastro <- True
Senão
# Se digitar Não, ou qualquer outra coisa incorreta, não ganha desconto
Cadastro <- False
Fimse
Sua linha de raciocínio para a construção de sistemas de automação comercial está excelente e super organizada. Qual será o próximo recurso ou regra de negócio que você pensa em adicionar a esse simulador da cafeteria?