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:
- Entrada: Captura a quantidade de itens, os nomes, os preços e o status de cadastro do cliente.
- 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). - 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!