Olá, Marcio. Como vai?
Seu algoritmo está muito bem estruturado e segue uma lógica sequencial clara, que é a base do pensamento computacional. Você dividiu corretamente o problema em Entrada, Processamento e Saída, além de utilizar um laço de repetição para acumular os valores, o que torna o sistema dinâmico para qualquer quantidade de itens.
Para agregar ainda mais valor ao seu projeto de automação da cafeteria, gostaria de sugerir alguns pontos de melhoria técnica e boas práticas que tornariam esse sistema mais robusto:
- Validação de Entrada: Em sistemas reais, é importante garantir que a
quantidade_itens não seja um número negativo ou zero antes de iniciar o laço. - Escopo das Variáveis: Note que você definiu o
desconto apenas dentro da condição de cliente cadastrado. Uma boa prática é inicializar desconto = 0 no início do processamento para evitar que o programa tente acessar uma variável que não existe caso o cliente não seja cadastrado. - Exibição do Desconto: Para o cliente, é sempre interessante ver quanto ele economizou. Adicionar uma linha para exibir o valor do desconto aplicado gera uma experiência melhor no atendimento.
Veja como o trecho do processamento e saída ficaria com um pequeno ajuste para maior clareza:
Processamento:
desconto = 0
Perguntar se o cliente é cadastrado no programa de fidelidade.
Ler cliente_cadastrado.
Se cliente_cadastrado = verdadeiro então:
desconto = total * 0.10
FimSe
total_final = total - desconto
Saída:
Exibir: "Subtotal: R$ ", total
Se desconto > 0 então:
Exibir: "Desconto aplicado (10%): R$ ", desconto
FimSe
Exibir: "Valor final a pagar: R$ ", total_final
Essa pequena mudança de calcular o total_final fora do if/else deixa o código mais limpo e evita repetição de fórmulas (o famoso princípio DRY - Don't Repeat Yourself). Parabéns pelo desenvolvimento do desafio, a lógica está no caminho certo!
Espero que possa ter lhe ajudado!