No desenvolvimento backend, receber múltiplos itens de uma vez é o padrão de qualquer API de e-commerce ou PDV. Em vez de lidar com variáveis soltas, nós processamos uma "Coleção" (como um List em Java) enviada no payload da requisição.
Para resolver o desafio da cafeteria, utilizamos duas estruturas fundamentais da engenharia de software:
Laço de Repetição (Loop): Para iterar sobre a quantidade exata de itens informada.
Acumulador de Estado: Uma variável inicializada em zero que vai guardando o subtotal a cada ciclo do laço.
Após a totalização, isolamos a aplicação da regra de desconto em uma estrutura condicional simples, garantindo que o cálculo base não seja afetado pela regra de fidelidade.
Algoritmo em Linguagem Natural
INÍCIO
Inicialização de Estado:
Inicializar a variável [Total_Pedido] com o valor 0.00.
Solicitar ao atendente a quantidade de itens do pedido e armazenar na variável [Qtd_Itens].
Processamento da Coleção (Laço de Repetição):
PARA CADA iteração de 1 até [Qtd_Itens], FAÇA:
Solicitar o nome do produto e armazenar em [Nome_Item].
Solicitar o valor do produto e armazenar em [Preco_Item].
Adicionar o valor de [Preco_Item] à variável acumuladora [Total_Pedido].
Validação da Regra de Negócio (Fidelidade):
Perguntar: "O cliente possui cadastro ativo?" e armazenar a resposta na variável booleana [Cliente_Cadastrado] (Verdadeiro ou Falso).
Aplicação de Modificadores:
SE [Cliente_Cadastrado] for Verdadeiro, ENTÃO:
Calcular o [Valor_Desconto] multiplicando [Total_Pedido] por 0.10 (10%).
Subtrair o [Valor_Desconto] do [Total_Pedido] (atualizando o estado final).
Exibir a mensagem: "Desconto de 10% aplicado para cliente cadastrado."
SENÃO:
(Nota lógica: Nenhuma alteração de estado é feita, o total permanece o valor cheio).
Ação Final (Saída):
Exibir a mensagem final: "Resumo processado. O valor final a ser cobrado é R$ [Total_Pedido]".
FIM
Tratar o total do pedido como um "Estado" que é mutado controladamente durante o laço, e depois passado pela validação de desconto, torna o algoritmo previsível e fácil de debugar.