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

[Projeto] Desafio: Simulador de pedidos em uma cafeteria

Pensei fazer assim:

INÍCIO

item = NULL
qtde_item = 0
n=1
preco = 0
subtotal = 0
total = 0
cliente = TRUE
    
funcao aplicardescontocliente (C):
    retornar (subtotal * 0,10)
    
//programa principal
exibir "Sistema de Pedidos Cafeteria"

//receber dados
exibir "Informe a quantidade de ítens:"
qtde_item = ler do usuario

//Validação de entrada
SE qtde_item <= 0
    exibir "Dado Inválido. Informe a quantidade de ítens:"

//Loop para verificação dos ítens solicitados
ENQUANTO n <= qtde_item
    exibir "Informe o nome do produto:"
    item = ler do usuario
    
    exibir "Informe o valor:"
    preco = ler do usuario
    subtotal = subtotal + preco
    n = n+1
    
//Verificar se é cliente para aplicar o desconto
exibir "É cliente cadastrado?"
SE cliente 
    f = aplicardescontocliente (C)
    total = subtotal - c
    exibir "Valor do desconto:" + "R$" + f
    exibir "Valor total:" + "R$" + total
SE NÃO
    total = subtotal
    exibir "Valor total:" + "R$" + total"
    

FIM

Poderia ser dessa forma?

2 respostas
solução!

Oii Anderson,

Sua construção lógica tá muito sólida. Você aplicou corretamente o conceito de acumulador dentro do laço de repetição (subtotal = subtotal + preco), que é a parte fundamental para conseguir somar vários pedidos sequencialmente. Isso mostra que você entendeu bem como controlar o fluxo do programa.

Tenho apenas dois pontos de atenção para o seu algoritmo funcionar perfeitamente quando for traduzido para uma linguagem real:

1. Consistência das variáveis
Na hora de calcular o total com desconto, houve uma pequena troca de nomes de variáveis. Observe este trecho:

f = aplicardescontocliente (C)
total = subtotal - c

Você guardou o valor do desconto calculado na variável f, mas na linha de baixo tentou subtrair c. O computador não saberia o que fazer, pois o valor correto está em f. O correto seria total = subtotal - f.

2. Entrada de dados (Interatividade)
Você definiu cliente = TRUE fixo no início do código. Para o simulador funcionar para qualquer pessoa, precisamos ler essa informação do usuário no final, da mesma forma que você fez com os itens.

Veja como ficaria o ajuste no final do seu algoritmo:

    // ... código anterior ...
    
    //Verificar se é cliente para aplicar o desconto
    exibir "É cliente cadastrado? (Responda VERDADEIRO ou FALSO)"
    cliente = ler do usuario  // Adicionamos a leitura aqui

    SE cliente == VERDADEIRO
        // Passamos o subtotal para a função calcular
        valor_do_desconto = aplicardescontocliente(subtotal)
        
        // Subtraímos o valor correto
        total = subtotal - valor_do_desconto
        
        exibir "Valor do desconto: R$" + valor_do_desconto
        exibir "Valor total com desconto: R$" + total
    SE NÃO
        total = subtotal
        exibir "Valor total: R$" + total

Esses ajustes de nomes de variáveis são muito comuns. O mais difícil você já fez, que é estruturar o pensamento lógico do início ao fim.

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

Muito obrigado pelo suporte.

Abaixo segue o código com as orientações e alterações indicadas

INÍCIO
item = NULL
qtde_item = 0
n=1
preco = 0
subtotal = 0
total = 0
cliente = TRUE

funcao aplicardescontocliente (C):
retornar (subtotal * 0,10)

//programa principal
exibir "Sistema de Pedidos Cafeteria"

//receber dados
exibir "Informe a quantidade de ítens:"
qtde_item = ler do usuario

//Validação de entrada
SE qtde_item <= 0
    exibir "Dado Inválido. Informe a quantidade de ítens:"

//Loop para verificação dos ítens solicitados
ENQUANTO n <= qtde_item
    exibir "Informe o nome do produto:"
    item = ler do usuario

    exibir "Informe o valor:"
    preco = ler do usuario
    subtotal = subtotal + preco
    n = n+1

//Verificar se é cliente para aplicar o desconto
exibir "É cliente cadastrado? (Responda VERDADEIRO ou FALSO)"
cliente = ler do usuario  // Adicionada a leitura aqui

SE cliente == VERDADEIRO
    // Passado o subtotal para a função calcular
    valor_do_desconto = aplicardescontocliente(subtotal)
    
    // Subtraímos o valor correto
    total = subtotal - valor_do_desconto
    
    exibir "Valor do desconto: R$" + valor_do_desconto
    exibir "Valor total com desconto: R$" + total
    
SE NÃO
    total = subtotal
    exibir "Valor total: R$" + total
    

FIM