1
resposta

Desafio: Simulador de pedidos em uma cafeteria

A lógica que utilizei segue a estrutura mais objetiva possível, a fim de apresentar as três etapas propostas. Na entrada, o sistema solicita a quantidade de itens que o cliente deseja pedir e inicializa uma variável acumuladora com zero. Para cada item, o atendente informa o nome do produto e seu preço, que são somados ao total. No processamento, após todos os itens terem sido registrados, o sistema questiona se o cliente possui cadastro na cafeteria. Caso possua, calculo o desconto como dez por cento do valor total e subtraio esse valor para obter o preço final. Se o cliente não for cadastrado, o valor final permanece igual ao total original. Na saída, o sistema exibe o valor final a ser pago, informando também o desconto quando aplicável.Como tenho mais afinidade com Python, implementei a solução nessa linguagem. Utilizei um loop para iterar sobre cada item, acumulando os valores, e uma condicional para verificar o status de cadastro do cliente. A formatação com duas casas decimais garante que os valores monetários sejam exibidos corretamente.

# Sistema de Atendimento - Cafeteria

# Entrada: Solicitar quantidade de itens
quantidade_itens = int(input("Quantos itens o cliente deseja pedir? "))

# Inicializar variável acumuladora
total = 0

# Processar cada item
for i in range(quantidade_itens):
print(f"\n--- Item {i + 1} ---")
nome_item = input("Nome do item: ")
preco_item = float(input("Preço do item: R$ "))
total += preco_item

# Processamento: Verificar se cliente é cadastrado
print(f"\nTotal sem desconto: R$ {total:.2f}")
cliente_cadastrado = input("O cliente é cadastrado? (sim/não): ").lower()

# Aplicar desconto se cliente for cadastrado
if cliente_cadastrado == "sim":
desconto = total * 0.10
total_final = total - desconto
print(f"\nDesconto aplicado (10%): R$ {desconto:.2f}")
print(f"Valor final: R$ {total_final:.2f}")
else:
total_final = total
print(f"\nValor final: R$ {total_final:.2f}")

1 resposta

Olá, João. Como vai?

Parabéns pela implementação! É muito interessante ver como você, vindo da área do Direito, conseguiu transpor o raciocínio lógico para a estrutura de um código Python de forma tão organizada e clara. O pensamento computacional é, de fato, uma habilidade universal que ajuda a estruturar qualquer tipo de processo, seja ele um algoritmo ou uma petição.

Sua solução está tecnicamente correta e muito bem explicada. Gostaria de destacar alguns pontos positivos e trazer uma sugestão para tornar seu código ainda mais robusto:

  • Estrutura de Acumulação: O uso da variável total = 0 dentro de um laço for é a forma clássica e eficiente de resolver o pilar da decomposição (dividir o pedido total em vários itens individuais).
  • Tratamento de Strings: O uso do método .lower() na entrada do cadastro é uma excelente prática. Isso evita que o programa falhe caso o usuário digite "SIM" ou "Sim" em vez de "sim".

Para agregar ainda mais valor ao seu aprendizado, deixo uma dica sobre o conceito de Abstração e Manutenção de Código:

No seu código, o desconto de 10% está "fixo" no meio do cálculo (total * 0.10). Na programação, chamamos isso de hardcoded. Uma boa prática é isolar esses valores em variáveis no início do script. Assim, se a cafeteria mudar a promoção para 15%, você só precisa alterar um lugar:

# Configurações do sistema
PERCENTUAL_DESCONTO = 0.10

# ... dentro do processamento ...
if cliente_cadastrado == "sim":
    valor_desconto = total * PERCENTUAL_DESCONTO
    total_final = total - valor_desconto

Além disso, como você utilizou Python, uma melhoria futura para evitar que o programa "quebre" caso alguém digite uma letra onde deveria ser um preço seria o uso do try/except, que é abordado em módulos seguintes do curso.

Excelente trabalho na transição de carreira e na aplicação dos fundamentos!

Espero que possa ter lhe ajudado!