1
resposta

Desafio: Simulador de pedidos em uma cafeteria

programa {
funcao inicio() {
inteiro quantidade
real preco, total
cadeia nome, cadastrado

total = 0

escreva("Quantos itens o cliente vai pedir? ")
leia(quantidade)

para (inteiro i = 1; i <= quantidade; i++) {
  escreva("Nome do item ", i, ": ")
  leia(nome)
  escreva("Preço do item: R$ ")
  leia(preco)
  total = total + preco
}

escreva("Cliente é cadastrado? (sim/nao): ")
leia(cadastrado)

se (cadastrado == "sim") {
  total = total * 0.90
  escreva("Desconto de 10% aplicado!")
}

escreva("Total a pagar: R$ ", total)

}
}

1 resposta

Olá, Gabriel. Como vai?

Parabéns pela resolução do desafio! O seu código ficou excelente, muito bem estruturado e demonstra que você compreendeu perfeitamente os conceitos fundamentais da lógica de programação utilizando o Portugol (estrutura do Portugol Studio).

A escolha do laço de repetição para para iterar de acordo com a quantidade de itens definida pelo usuário ficou perfeita. Além disso, a sua lógica de acumulação de valores (total = total + preco) e a estrutura condicional se para aplicar o desconto de 10% caso o cliente seja cadastrado demonstram um ótimo raciocínio algorítmico.

Para agregar ainda mais valor ao seu aprendizado, trago uma análise sobre o comportamento do seu código e uma sugestão de boa prática relacionada à inicialização de variáveis e formatação de saída.

O fluxo do seu algoritmo

O seu programa segue com precisão as três etapas essenciais do pensamento computacional que estruturam qualquer software no mercado:

  1. Entrada: Captura a quantidade de itens, os nomes, os preços e o status de cadastro do cliente.
  2. Processamento: Soma os valores dentro do laço de repetição e calcula o desconto condicional de 10% (multiplicar por 0.90 é uma forma matemática brilhante e direta de subtrair 10% do valor cheio).
  3. Saída: Exibe o total consolidado que o cliente deve pagar.

Uma sugestão de boa prática: Organização visual e feedback

O seu código está funcionando perfeitamente. Contudo, em cenários onde o cliente compra mais de um item, a mensagem final do desconto pode ficar "colada" com o valor total, dificultando a leitura do operador do caixa ou do cliente.

Uma excelente prática de programação voltada para a Experiência do Usuário (UX) é adicionar quebras de linha (usando o comando escreva("\n") ou a função escreval dependendo da variação do Portugol) para organizar as informações na tela de maneira clara.

Veja uma sugestão de como estruturar a exibição final do seu programa:

// ... seu código anterior do laço para ...

escreva("\nCliente é cadastrado? (sim/nao): ")
leia(cadastrado)

escreva("\n==============================\n") // Linha divisória para organizar a tela

se (cadastrado == "sim") {
  total = total * 0.90
  escreva("Status: Cliente cadastrado.\n")
  escreva("Desconto de 10% aplicado com sucesso!\n")
} senao {
  escreva("Status: Cliente não cadastrado (sem desconto).\n")
}

escreva("Total final a pagar: R$ ", total)
escreva("\n==============================\n")

Ao adicionar o bloco senao, você dá um feedback claro para o usuário caso ele digite "nao", garantindo que quem está operando o simulador saiba exatamente o que o sistema processou nos bastidores.

Você demonstrou uma excelente base de lógica de programação e estruturação de loops. Continue com esse foco incrível e praticando bastante!

Espero que possa ter lhe ajudado!