Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Projeto] Desafio: Simulador de pedidos em uma cafeteria

Algoritmo em linguagem natural:

Definir a função calcular_total(itens):

Iniciar total = 0
Para cada item em itens → total = total + item.preco
Retornar total

Definir a função aplicar_desconto(total, cadastrado):

Se cadastrado = verdadeiro → retornar total × 0.90
Caso contrário → retornar total

Solicitar a quantidade de itens do pedido

Se quantidade ≤ 0 → exibir erro "Pedido inválido" e encerrar

Para cada item (repetir quantidade vezes):

Solicitar nome do item
Solicitar preço do item
Se preço ≤ 0 → exibir erro "Preço inválido" e encerrar
Adicionar item à lista

Chamar calcular_total(itens) → obter total
Perguntar se o cliente é cadastrado (sim / não)
Chamar aplicar_desconto(total, cadastrado) → obter valor_final
Exibir resumo do pedido:

Lista de itens e preços
Se cadastrado → exibir total com desconto e economia de 10%
Caso contrário → exibir valor cheio

Dividi a solução em duas funções com responsabilidades distintas. calcular_total() só sabe somar (não sabe nada sobre desconto). aplicar_desconto() só sabe sobre desconto (não sabe nada sobre os itens). A pergunta sobre cadastro vem depois de montar o pedido de propósito. Não faz sentido perguntar isso antes, o desconto só tem significado quando já existe um total para ser reduzido. Essa ordem também reflete o fluxo natural do atendimento real no balcão. As validações usam curto-circuito: quantidade inválida encerra antes do loop, preço inválido encerra antes de continuar. O sistema nunca chega ao cálculo com dados que já sabe que estão errados. Se amanhã o desconto mudar de 10% para 15%, ou surgir um segundo tipo de desconto, a alteração fica dentro de aplicar_desconto() sem tocar no restante.

1 resposta
solução!

Oi, Tamy! Como vai?

Agradeço por compartilhar.

Gostei da forma como você separou as responsabilidades entre calcular_total() e aplicar_desconto(), porque isso deixa o algoritmo mais organizado e fácil de alterar depois. Sua explicação sobre validar a quantidade e o preço antes de seguir para o cálculo também mostra um bom cuidado com a lógica do fluxo.

Você fez uma ótima leitura do desafio e aproximou bem o algoritmo de uma situação real de atendimento. Dica: ao revisar esse tipo de solução, pense sempre em o que cada função precisa saber e como evitar que uma parte do código dependa demais da outra, assim fica mais simples adaptar regras, como mudar o desconto ou criar novas promoções.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!