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

[Dúvida] Desafio: Simulador de pedidos em uma cafeteria

// inicio
var_precototal = 0
exibir "Digite a quantidade de itens:"
ler var_nitens

exibir "Nome do item:"
exibir "Digite o preço do item:"
ler var_precoitem
exibir "Digite a quantidade do produto:"
ler var_qitem

enquanto var_nitens > 1 repetir

// processamento
funcao precoitem (var_qitem, var_precoitem)
precoitem (var_qitem * var_precoitem)
retornar precoitem

exibir "Possui cadastro?"
ler var_cad
var_cad = TRUE or FALSE

se var_cad = TRUE, var_precototal = ((0,10* var_precoitem) - var_precoitem)
se var_cad = FALSE, var_precototal = var_precoitem + 0

// saida
exibir "O valor total é de:" + var_precototal

3 respostas

Oii, Fabrício! Tudo bem?

A sua resolução para o desafio da cafeteria apresenta uma ótima iniciativa ao tentar utilizar conceitos mais avançados, como funções e o uso de variáveis para controlar o estado do pedido. Você conseguiu mapear os elementos principais do problema, como a entrada de dados e a necessidade de aplicar uma condição para o desconto.

Pontos fortes do que você elaborou:

  • Você criou nomes claros para as variáveis, como var_precototal e var_nitens, o que ajuda muito na leitura do código.
  • O uso do se para verificar o cadastro (TRUE ou FALSE) é exatamente o que o problema pedia para distinguir quem recebe ou não o desconto.
  • Seu algoritmo prevê a comunicação com o usuário através das instruções de exibir e ler.

Para que seu algoritmo funcione exatamente como o esperado, deixo aqui alguns pontos para você observar:

  • No trecho do enquanto, é importante garantir que as perguntas de "nome" e "preço" estejam dentro da repetição. Caso contrário, o sistema lerá apenas o primeiro item e ficará em um loop infinito ou não somará os demais.
  • Lembre-se de que a cada novo item, o preço deve ser somado ao que já existia na var_precototal (ex: var_precototal = var_precototal + novo_item).
  • Na sua fórmula de desconto, note que você usou var_precoitem. O ideal é usar o var_precototal ao final, para que o desconto de 10% seja aplicado sobre a soma de todos os itens e não apenas sobre o último digitado.

Parabéns pelo esforço em estruturar esse pensamento lógico.

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

A formula de desconto realmente foi um erro de interpretação minha, mas como eu devo salvar uma varivael de novo item desligando ao primeiro item e como coloco isso na forma que fique um looping se ouver mais do que um item?

solução!

Oii, Fabrício!

Quando precisamos somar vários itens, usamos uma técnica chamada variável acumuladora.

Para resolver o que você pontuou, imagine que a sua variável var_precototal é como uma sacola de compras que começa vazia (com valor 0) e, a cada volta do laço, você coloca o preço do novo produto dentro dela.

  • Pra salvar o valor e somar ao próximo, você deve usar a estrutura var_precototal = var_precototal + (var_qitem * var_precoitem). Isso garante que o valor antigo não seja apagado, mas sim somado ao novo.
  • Para o enquanto não ser infinito, você precisa de um contador. Se o usuário disse que são 3 itens, a cada repetição você subtrai 1 desse valor (var_nitens = var_nitens - 1). Quando chegar a 0, o programa entende que acabou e sai do laço.
  • Ordem das ações: As perguntas sobre o item e o cálculo da soma precisam estar obrigatoriamente entre o "inicio" e o "fim" do seu bloco de repetição.

A lógica poderia ficar organizada no seu pseudocódigo assim:

// inicio
var_precototal = 0
exibir "Digite a quantidade de itens:"
ler var_nitens

enquanto var_nitens > 0 repetir
exibir "Digite o preço do item:"
ler var_precoitem
exibir "Digite a quantidade do produto:"
ler var_qitem


// Aqui você acumula o valor na variável total
var_precototal = var_precototal + (var_precoitem * var_qitem)

// Aqui você diminui o contador para o loop ter um fim
var_nitens = var_nitens - 1



fim_enquanto

exibir "Possui cadastro? (S/N)"
ler var_cad

se var_cad = "S" então
var_precototal = var_precototal * 0.90 // Aplica 10% de desconto no total
fim_se

exibir "O valor total é de: " + var_precototal

Essa organização garante que o cálculo do desconto aconteça apenas uma vez, depois que o programa já sabe o valor de todos os produtos somados.

Continue praticando, pois entender como os dados fluem dentro de um looping é um grande passo na lógica de programação.

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