Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

[Projeto] Simulador de pedidos em uma cafeteria

Simulador de pedidos em uma cafeteria

O que pensei como solução:

O sistema possui um cardápio previamente cadastrado, contendo o nome de cada item disponível na cafeteria e seu respectivo preço unitário.

Quando um novo atendimento é iniciado, o atendente começa a registrar o pedido do cliente. Para cada item solicitado, o atendente informa o nome do produto, e o sistema consulta automaticamente o preço correspondente no cardápio cadastrado. Esse valor é somado ao total do pedido.

Após o registro de cada item, o sistema pergunta ao atendente se deseja adicionar outro item ao pedido. Enquanto a resposta for positiva, o processo de registro de itens continua e o valor total do pedido é atualizado automaticamente.

Quando o atendente informa que não há mais itens a serem adicionados, o sistema pergunta se o cliente é cadastrado na cafeteria. Caso o cliente seja cadastrado, o sistema aplica um desconto de 10% sobre o valor total do pedido e calcula o valor final com desconto.

Por fim, o sistema exibe o valor final do pedido. Se o cliente for cadastrado, o valor exibido será o valor com desconto. Caso contrário, o sistema exibirá o valor total sem desconto, encerrando o atendimento.

Início

    total ← 0
    adicionarItem ← "S"

    // Cardápio previamente cadastrado
    // Exemplo:
    // Café → 5.00
    // Pão de queijo → 4.50
    // Suco → 6.00

    Enquanto adicionarItem = "S" faça

        Escreva("Informe o nome do item:")
        Leia(nomeItem)

        // Buscar preço do item no cardápio
        precoItem ← BuscarPrecoNoCardapio(nomeItem)

        total ← total + precoItem

        Escreva("Deseja adicionar outro item? (S/N)")
        Leia(adicionarItem)

    FimEnquanto

    Escreva("O cliente é cadastrado? (S/N)")
    Leia(clienteCadastrado)

    Se clienteCadastrado = "S" então
        desconto ← total * 0.10
        totalFinal ← total - desconto
        Escreva("Valor final com desconto: R$", totalFinal)
    Senão
        Escreva("Valor final sem desconto: R$", total)
    FimSe

Fim
  • A função BuscarPrecoNoCardapio(nomeItem) representa uma consulta a dados previamente cadastrados.
  • Não é necessário implementar essa função agora — conceitualmente ela já resolve o problema.
3 respostas

Oi, Estudante! Como vai?

Agradeço por compartilhar seu código com a comunidade Alura.

Do jeito que você explicou, você organizou bem o fluxo: usa um laço Enquanto para adicionar itens, consulta o preço no cardápio e só depois decide o desconto com o Se para cliente cadastrado.

Uma dica interessante para o futuro é pensar em validação e tratamento de exceções no raciocínio: antes de somar, confirmar se o item existe no cardápio; se não existir, pedir para digitar novamente. Isso deixa o algoritmo mais confiável e evita que um dado errado mude o total do pedido.

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

Olá, Rafaela!!! Tentei evoluir o algoritmo inicial do simulador de pedidos da cafeteria, foram realizadas algumas melhorias para torná-lo mais próximo de um cenário real de atendimento. Inicialmente, o sistema considerava apenas a inclusão de itens de forma simples, assumindo implicitamente a quantidade de um item por pedido. Essa abordagem foi ajustada para permitir que o atendente informe a quantidade desejada de cada produto, possibilitando pedidos como dois ou mais cafés de uma única vez.

Além disso, o algoritmo passou a considerar a existência de um cardápio previamente cadastrado, contendo os itens disponíveis e seus respectivos preços unitários. Dessa forma, o atendente informa apenas o nome do item, e o sistema busca automaticamente o valor correspondente, reduzindo erros de digitação e agilizando o atendimento.

Outra melhoria importante foi a inclusão de validações básicas. Antes de somar o valor de um item ao total do pedido, o sistema verifica se o produto informado existe no cardápio. Caso o item não seja encontrado, o sistema solicita que o nome seja digitado novamente, garantindo maior confiabilidade no cálculo do valor final.

Com essas alterações, o algoritmo passou a registrar os pedidos de forma dinâmica, permitindo a inclusão de múltiplos itens, o controle de quantidades e a validação das informações inseridas. Ao final do processo, o sistema mantém a lógica de verificação do cliente cadastrado, aplicando um desconto de 10% quando aplicável e exibindo corretamente o valor final do pedido.

Dada a sua dica, as melhorias foram implementadas visando tornar o algoritmo mais completo, robusto e alinhado com o funcionamento de um sistema real de atendimento em uma cafeteria.

Fico a disposição para receber mais dicas de melhorias para este fluxo.

Início

    total ← 0
    adicionarItem ← "S"

    // Cardápio previamente cadastrado

    Enquanto adicionarItem = "S" faça

        itemValido ← "N"

        Enquanto itemValido = "N" faça
            Escreva("Informe o nome do item:")
            Leia(nomeItem)

            Se ItemExisteNoCardapio(nomeItem) então
                precoUnitario ← BuscarPrecoNoCardapio(nomeItem)

                Escreva("Informe a quantidade desejada:")
                Leia(quantidade)

                subtotal ← precoUnitario * quantidade
                total ← total + subtotal

                itemValido ← "S"
            Senão
                Escreva("Item não encontrado no cardápio. Digite novamente.")
            FimSe
        FimEnquanto

        Escreva("Deseja adicionar outro item? (S/N)")
        Leia(adicionarItem)

    FimEnquanto

    Escreva("O cliente é cadastrado? (S/N)")
    Leia(clienteCadastrado)

    Se clienteCadastrado = "S" então
        desconto ← total * 0.10
        totalFinal ← total - desconto
        Escreva("Valor final com desconto: R$", totalFinal)
    Senão
        Escreva("Valor final sem desconto: R$", total)
    FimSe

Fim
solução!

Olá, Estudante! Como vai?

Chamou atenção a evolução do fluxo ao incluir quantidade por item, validação no cardápio e o uso de laços aninhados para garantir que apenas itens válidos sejam somados ao total. Esse cuidado deixa o algoritmo mais próximo de um cenário real de atendimento e demonstra um bom raciocínio lógico na organização das decisões.

Parabéns pelo excelente trabalho e dedicação!

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