1
resposta

Desafio: Simulador de pedidos em uma cafeteria

O atendente informa quantos itens o cliente vai pedir.

Para cada item, o sistema solicita o nome e o preço.

Ao final, o sistema pergunta se o cliente é cadastrado.

Se for, aplica o desconto e exibe o valor com desconto.

Caso contrário, exibe o valor cheio.

// o atendende vai informar quantos itens o cliente vai pedir (vai receber na variável atendente? ou itens?);

// Se o atendente que informa apenas a quantidade, então vai ser na variável atendente mesmo;

// pra facilitar vou deixar a quantidade de itens informados pelo atendente fixa;

// Sistema solicita nome e preço de cada item, se for 2 do mesmo item, só multiplicar por dois, etc;

// Os itens são em uma cafeteria, então nesse algoritmo vou colocar itens como "expresso, latte e cappuccino", só 2 ou 3 pra não complicar demais, isso se eu já deixar fixo;

// vai haver uma verificação de cadastro com booleano; como saber se o cliente é cadastrado? Apenas pergunto?// depois condicional do desconto s/n;

// fazer calculo com desconto e sem desconto;

// calculo de desconto de 10%: preço final = preço * 0,90 (90% do valor)

// Acima é meio que o meu pensamento pra chegar na lógica, vi algo assim na aula anterior a essa atividade e isso me ajuda a me encontrar e não ficar tão confusa na hora de escrever o algoritmo;

Início

int atendente = 2;

String nomeItem1;

String nomeItem2;

double precoItem1;

double precoItem2;

double valorDesconto1;

double valorDesconto2;

double baseCalculo = 0.90

booleano cadastro;

double valorTotal;

Exiba: "O cliente quer " + atendente " itens";

Se atendente == 1 Exiba: "Qual o nome do item solicidado pelo cliente?"

nomeItem1 = Leia a entrada;

Exiba: "Qual o preço do item solicidado pelo cliente?"

precoItem1 = Leia a entrada;

Senao se atendente == 2

Exiba: "Qual o nome do primeiro item solicidado pelo cliente?"

nomeItem1 = Leia a entrada;

Exiba: "Qual o preço do primeiro item solicidado pelo cliente?"

precoItem1 = Leia a entrada;

Exiba: "Qual o nome do segundo item solicidado pelo cliente?"

nomeItem2 = Leia a entrada;

Exiba: "Qual o preço do segundo item solicidado pelo cliente?"

precoItem2 = Leia a entrada;

Repita

Exiba: Esse cliente já é cadastrado(Digite "s" ou "n"?

sn = Leia a entrada;

Se sn == "s"

cadastrado = true;

sair do laço;

Senao se sn == "n"

cadastrado = false;

sair do laço;

Senao

Exiba: "[ERRO] Digite apenas "s" ou "n";

continue

// soma os valores dos itens e se for com desconto subtrai o valor;

Se cadastrado == true

Se atendente == 1

valorDesconto1 = precoItem1 * baseCalculo;

exiba: "O desconto foi aprovado e esse é o valor a pagar: " + valorDesconto1 + ".";

Senao se atendente == 2

valorDesconto1 = precoItem1 * baseCalculo;

valorDesconto2 = precoItem2 * baseCalculo;

valorTotal = valorDesconto1 + valorDesconto2 ;

Exiba: "O desconto foi aprovado e esse é o valor a pagar: " + valorTotal + ".";

Senao

Se atendente == 1

valorBruto = precoItem1;

Exiba: "Você pagará o valor total, este é: " valorBruto ".";

Senao se atendente == 2;

valorBruto = precoItem1 + precoItem2;

Exiba: "Você pagará o valor total, este é: " valorBruto ".";

Fim

1 resposta

Olá, Débora. Como vai?

Parabéns pelo esforço em estruturar o pensamento antes de escrever o código! Essa técnica de rascunhar a lógica (o famoso pseudocódigo) é exatamente o que diferencia um bom programador, pois evita que você se perca na sintaxe da linguagem depois.

Sua lógica de cálculos e a verificação de cadastro com o laço de repetição para evitar erros de digitação ficaram muito boas. Você aplicou corretamente os conceitos de variáveis, entrada e saída de dados e condicionais.

Gostaria de dar algumas sugestões para deixar seu algoritmo ainda mais "robusto" e dinâmico:

  • Uso de Laços de Repetição (Loops): No seu exemplo, você criou variáveis separadas para nomeItem1 e nomeItem2. Se o cliente pedisse 10 itens, você teria muito trabalho! Em programação, usamos um laço (como o Para ou Enquanto) que repete a pergunta baseada na variável atendente, guardando o valor em uma variável acumuladora de total.
  • Cálculo do Desconto: Você pode simplificar a conta. Em vez de calcular o desconto para cada item separado, você pode somar tudo primeiro e, no final, aplicar o desconto uma única vez sobre o valor total. Isso deixa o código mais limpo.
  • Variável Booleana: No seu laço de repetição, você usou a lógica certinha para validar o "s" ou "n". Uma dica: você pode converter a entrada para minúscula para garantir que "S" e "s" funcionem da mesma forma.

Veja como a parte do cálculo poderia ser simplificada de forma dinâmica:

// Exemplo de como ficaria mais dinâmico:
valorTotal = precoItem1 + precoItem2; // Soma tudo primeiro

Se cadastrado == true
    valorFinal = valorTotal * baseCalculo;
    Exiba: "Valor com desconto: " + valorFinal;
Senao
    Exiba: "Valor total: " + valorTotal;
Fim Se

Essa sua fase de "anotar o pensamento" é o que chamamos de Decomposição no Pensamento Computacional: quebrar um problema grande em partes menores (quantidade -> nomes/preços -> cadastro -> cálculo). Continue praticando assim!

Espero que possa ter lhe ajudado!