Olá, Gustavo. Como vai?
Seu algoritmo ficou excelente e muito bem estruturado! Você aplicou perfeitamente os conceitos fundamentais do Pensamento Computacional e da lógica de programação para resolver o desafio do simulador da cafeteria.
A escolha das estruturas está impecável: você utilizou uma variável acumuladora de forma correta (valor_total), implementou um laço de repetição (Para) ideal para quando já sabemos a quantidade exata de repetições, e fechou com uma estrutura condicional (Se) muito bem pensada para aplicar o desconto de 10% (multiplicar por 0.90 é uma ótima estratégia matemática linear).
Para agregar ainda mais valor ao seu projeto e trazer algumas boas práticas de lógica, apresento alguns pontos de melhoria que tornariam o seu sistema ainda mais robusto:
1. Tratamento de variações no texto (Maiúsculas e Minúsculas)
No seu código, a condição para o desconto é Se eh_cadastrado = "S". Se o atendente da cafeteria estiver com o teclado com o Caps Lock desligado e digitar "s" minúsculo, o sistema não aplicará o desconto. Para resolver isso, podemos usar o operador lógico OU.
2. Inicialização de variáveis
Você inicializou muito bem a variável valor_total <- 0. Como boa prática, é recomendável garantir que o contador do laço também comece limpo, embora o próprio comando Para já faça o controle do escopo.
Exemplo de Algoritmo Otimizado:
Veja como o seu código ganharia uma camada extra de segurança contra erros de digitação:
Algoritmo Cafeteria
Início
// Declaração das variáveis
Definir quantidade_itens, contador Como Inteiro
Definir preco_item, valor_total Como Real
Definir eh_cadastrado Como Texto
// Inicializa o valor da conta zerado
valor_total <- 0
// Entrada de dados inicial
Escreva("Quantos itens o cliente vai pedir?")
Leia(quantidade_itens)
// Repetição para pedir o preço de cada item
Para contador De 1 Até quantidade_itens Faça
Escreva("Digite o preço do item ", contador, ":")
Leia(preco_item)
// Acumula o preço no valor total
valor_total <- valor_total + preco_item
FimPara
// Verificação do desconto com tratamento para "S" ou "s"
Escreva("O cliente é cadastrado? (S/N)")
Leia(eh_cadastrado)
Se (eh_cadastrado = "S") OU (eh_cadastrado = "s") Então
valor_total <- valor_total * 0.90
Escreva("Desconto de 10% aplicado com sucesso!")
FimSe
// Saída do resultado
Escreva("Valor total a pagar: R$ ", valor_total)
Fim
Note que no laço Para eu também adicionei a variável contador dentro da frase de exibição: Escreva("Digite o preço do item ", contador, ":"). Isso melhora a experiência do usuário, pois o sistema mostrará na tela "Digite o preço do item 1:", "Digite o preço do item 2:", facilitando o acompanhamento de quem está operando o caixa da cafeteria.
Seu raciocínio lógico está afiadíssimo e o escopo do problema foi completamente atendido. Parabéns pelo projeto!
Espero que possa ter lhe ajudado!