2
respostas

[Projeto] Desafio: Simulador de pedidos em uma cafeteria

Variaveis: Item, QuantidadeItens, PrecoItem, Cadastro, ValorTotal, Desconto, ValorFinal

QuantidadeItens <- 0

Exiba ("Quantos Itens o cliente deseja?: ")
Leia(QuantidadeItens)
Quebra linha

ValorTotal <- 0

Para (Contador <- 1 até QuantidadeItens) Faca
Exiba ("Qual o nome do produto?: ")
Leia(Item)
QuebraLinha

Exiba ("Qual o preço deste produto?: ")
Leia(PrecoItem)

ValorTotal <- ValorTotal + PrecoItem
Fimpara

Exiba (" O cliente é cadastrado?: ")
Leia(Cadastro)
QuebraLinha

Se (Cadastro == "Sim" ou Cadastro == "sim" ou Cadastro == "SIM") entao
Cadastro <- True
Senão Se (Cadastro == "Não" ou Cadastro == "Nao" ou Cadastro == "não" ou Cadastro == "nao") então
Cadastro <- False
Senão
Fimse

Desconto <- 0,10
ValorFinal <- 0

Se (Cadastro == True) então
ValorFinal <- ValorTotal - (ValorTotal * Desconto)
Exiba ("O valor total teve um desconto de 10% pelo cliente ser cadastrado R$", ValorFinal)
Senão
ValorFinal <- ValorTotal
Exiba("O valor total é de", ValorTotal)
Fimse

2 respostas

Olá, Vagner. Como vai?

Parabéns pela excelente estruturação do seu pseudocódigo! Você conseguiu traduzir um problema real de um comércio (o fluxo de caixa e concessão de benefícios em uma cafeteria) em uma sequência lógica impecável, aplicando conceitos fundamentais como a inicialização de variáveis, loops contados (Para) e condicionais aninhadas (Se / Senão Se).

O uso do laço para repetir a pergunta sobre o preço do produto com base na quantidade informada pelo usuário ficou excelente, atuando como um acumulador perfeito na linha ValorTotal <- ValorTotal + PrecoItem.

Para visualizar como o computador processa essa esteira de compras e a tomada de decisão sobre o desconto, podemos olhar para o fluxo do algoritmo:

Para agregar ainda mais valor ao seu aprendizado em pensamento computacional, vale a pena analisarmos dois pontos específicos do seu código que podem ser otimizados quando você for migrar essa lógica para uma linguagem de programação real (como Python ou JavaScript):


1. Simplificando a validação de texto (Strings)

Na hora de checar se o cliente possui cadastro, você cobriu muito bem as variações de escrita do usuário: Cadastro == "Sim" ou Cadastro == "sim" ou Cadastro == "SIM".

Na programação, para evitar ter que digitar todas as combinações possíveis de letras maiúsculas e minúsculas (o que tornaria o código gigante se a resposta fosse uma frase mais longa), nós costumamos usar uma função de tratamento que transforma tudo o que o usuário digitou em letras minúsculas antes de fazer o teste.

Em pseudocódigo, ficaria tão simples quanto isto:

RespostaMinuscula <- ConverterParaMinusculo(Cadastro)

Se (RespostaMinuscula == "sim") então
    Cadastro <- True
Senão Se (RespostaMinuscula == "não" ou RespostaMinuscula == "nao") então
    Cadastro <- False
FimSe

2. Atenção ao bloco Senão vazio

No seu primeiro bloco de decisão (linhas 20 a 24), você colocou um Senão final sem nenhuma ação antes do Fimse.

Uma boa prática de arquitetura é sempre prever o que acontece se o usuário digitar algo totalmente inválido (como "Talvez" ou errar a digitação). Se ele digitar algo inválido no seu código atual, o programa assumirá o que estava antes. O ideal é definir um valor padrão de segurança, tratando o cliente como não cadastrado por padrão:

Se (Cadastro == "Sim" ou Cadastro == "sim" ou Cadastro == "SIM") entao
    Cadastro <- True
Senão
    # Se digitar Não, ou qualquer outra coisa incorreta, não ganha desconto
    Cadastro <- False
Fimse

Sua linha de raciocínio para a construção de sistemas de automação comercial está excelente e super organizada. Qual será o próximo recurso ou regra de negócio que você pensa em adicionar a esse simulador da cafeteria?

Obrigado pelo elogios e Feedbacks, eles me ajudam muito.

Seria uma proxima funcionalidade, o cliente, receber um conta, onde descreve o produto ao qual escolheu, e também o valor ao lado. Como aquela que recebemos ao pedir a conta em um restaurante. Talvez para isso tenha que utilizar algo com Arrays.