image

Bolsas de estudo DIO PRO para acessar bootcamps ilimitados

Disponível apenas:

9 vagas
Article image

JS

Jéssica Sousa04/03/2025 12:36
Compartilhe

Algoritmo no VisuAlg que Simula um Sistema de Caixa

  • #Lógica de Programação

Olá pessoal.

Sou Dev Jess e tenho um Canal no YouTube chamado Desenvolvendo e Aprendendo.

Link: https://youtube.com/@Desenvolvendo_e_Aprendendo?si=-_Ro1v5lW0seC1ga

Recentemente gravei um Algoritmo simulando um Sistema de Caixa bem detalha do e gostaria de compartilhar com vocês:

Algoritmo "Exercicio_8_Loja_2"


// EXERCÍCIO 8 - LOJA 2


// CRIAR UM ALGORITMO QUE LEIA O NOME, O PREÇO E A QUANTIDADE
// DE VÁRIOS PRODUTOS DE UMA MESMA COMPRA, CALCULE O VALOR TOTAL
// DE CADA MERCADORIA E DA COMPRA.


// OBS: DEVE PERGUNTAR INICIALMENTE QUANTOS PRODUTOS SERÃO
// COMPRADOS E SE DESEJA COMPRAR MAIS, CASO ESCOLHA "S", SERÃO
// SELECIONADO MAIS PRODUTOS E SOLICITAR NOVAMENTE A QUANTIDADE.


// NO FINAL, DEVERÃO MOSTRAR TODOS OS PRODUTOS ADICIONADOS COM O
// PREÇO, A QUANTIDADE, O TOTAL INDIVIDUAL E O TOTAL DA COMPRA.EX:


// PRODUTO 1        : CAL�A
// PREÇO            : R$ 50,00
// QUANTIDADE       : 2
// TOTAL            : R$ 100,00


// PRODUTO 2        : BLUSA
// PREÇO            : R$ 20,00
// QUANTIDADE       : 5
// TOTAL            : R$ 100,00


// PRODUTO 3        : MEIA
// PREÇO            : R$ 5,00
// QUANTIDADE       : 10
// TOTAL            : R$ 50,00


// PRODUTO 4        : SAND�LIA
// PREÇO            : R$ 50,00
// QUANTIDADE       : 1
// TOTAL            : R$ 50,00


// TOTAL DE PRODUTOS: 18
// TOTAL DA COMPRA  : R$ 300,00




// DEPOIS, O PROGRAMA DEVER� SOLICITAR A FORMA DE PAGAMENTO, O
// VALOR PAGO PELO CLIENTE, CASO SEJA EM DINHEIRO, INFORMAR SE
// HÁ OU NÃO TROCO, SENÃO ESCREVER "OBRIGADO(A) E VOLTE SEMPRE!:-)",
// SE HOUVER DINHEIRO FALTANDO, DEVERÁ ESCREVER "VALOR RECEBIDO
// É INSUFICIENTE! :-(" E MOSTRAR QUANTO FALTA.


// NAS OUTRAS FORMAS DE PAGAMENTO, ESCREVER SOMENTE:
// RECEBEU?: S (PARA PIX)
// "OBRIGADO(A) E VOLTE SEMPRE!:-)".


// OBS: TERÃO 4 FORMAS DE PAGAMENTO:


// -------- FORMAS DE PAGAMENTO --------


// 1 - DINHEIRO
// 2 - PIX
// 3 - CARTÃO DE DÉBITO
// 4 - CARTÃO DE CRÉDITO (PARCELAMENTO ATÉ 3X SEM JUROS, COM
// PARCELA MÍNIMA DE R$50,00)


// -------------------------------------


// EXEMPLO DE PAGAMENTO COM O CART�O DE CR�DITO:


// FORMA DE PAGAMENTO: 4 - CARTÃO DE CRÉDITO
// SERÁ PARCELADO OU À VISTA?: 2


// ----------- PARCELAMENTO ------------


// 1 - À VISTA
// 2 - PARCELADO EM 2X
// 3 - PARCELADO EM 3X


// -------------------------------------


// PAGAMENTO APROVADO?: S
// "OBRIGADO(A) E VOLTE SEMPRE!:-)"




Var
// Vari�veis


 // Caractere
    Acrescentar, Forma_Pgto, Parcelamento, Recebeu  : Caractere
 
 // Inteiro
    Qtd_Produtos_Compra, Qtd_Total_Produtos, Count  : Inteiro
    Codigo_Forma_Pgto, i, Codigo_Pgto_Cartao        : Inteiro
 
 // Real
    Vlr_Recebido, Vlr_Parcelado, Troco, Total_Compra: Real


// Vetores
 Vet_Nome_Produto : Vetor [0..4] de Caractere
 Vet_Preco_Produto: Vetor [0..4] de Real
 Vet_Qtd_Produto  : Vetor [0..4] de Inteiro
 Vet_Total_Produto: Vetor [0..4] de Real


Inicio
// Seçõo de Comandos, procedimento, funções, operadores, etc...
 Count              <- 0
 Total_Compra       <- 0
 Qtd_Total_Produtos <- 0
 
 escreva("Quantos Produtos serão Adicionados ao Carrinho?: ")
 leia(Qtd_Produtos_Compra)
 
 escreval
 escreval("-------------------------------------")
 escreval
 
 enquanto (Qtd_Produtos_Compra <= 0) faca
   escreval("Quantidade Inválida!")
   
   escreva("Digite Novamente quantos Produtos serão ")
   escreva("Adicionados ao Carrinho?: ")
   leia(Qtd_Produtos_Compra)
   
   escreval
   escreval("-------------------------------------")
   escreval
 fimenquanto
 
 repita
   para i de Count ate Qtd_Produtos_Compra - 1 faca
     Count <- Count + 1
     
     escreva("Produto", Count, " : ")
     leia(Vet_Nome_Produto[i])
     
     escreva("Preço     : R$ ")
     leia(Vet_Preco_Produto[i])
     
     escreva("Quantidade: ")
     leia(Vet_Qtd_Produto[i])
     
     Vet_Total_Produto[i] <- Vet_Preco_Produto[i] * Vet_Qtd_Produto[i]


     escreval("Total     : R$ ", Vet_Total_Produto[i]:1:2)


     Qtd_Total_Produtos   <- Qtd_Total_Produtos   + Vet_Qtd_Produto[i]
     Total_Compra         <- Total_Compra         + Vet_Total_Produto[i]


     escreval
     escreval("-------------------------------------")
     escreval
   fimpara
   
   escreva("Deseja Acrescentar Mais Produtos no Carrinho(S/N)?: ")
   leia(Acrescentar)
   
   escreval
   escreval("-------------------------------------")
   escreval
   
   enquanto ((Acrescentar <> "S") e (Acrescentar <> "N")) faca
     escreval("Caractere Inválido!")


     escreva("Digite Novamente se Deseja Acrescentar Mais ")
     escreva("Produtos no Carrinho(S/N)?: ")
     leia(Acrescentar)


     escreval
     escreval("-------------------------------------")
     escreval
   fimenquanto
   
   se (Acrescentar = "S") entao
     escreva("Quantos Produtos serão Adicionados ao Carrinho?: ")
     leia(Qtd_Produtos_Compra)
     
     escreval
     escreval("-------------------------------------")
     escreval
     
     enquanto (Qtd_Produtos_Compra <= 0) faca
       escreval("Quantidade Inválida!")


       escreva("Digite Novamente quantos Produtos ser�o ")
       escreva("Adicionados ao Carrinho?: ")
       leia(Qtd_Produtos_Compra)


       escreval
       escreval("-------------------------------------")
       escreval
     fimenquanto
     
     Qtd_Produtos_Compra <- Qtd_Produtos_Compra + Count
   fimse
 ate (Acrescentar = "N")
 
 escreval("Total de Produtos:", Qtd_Total_Produtos)
 escreval("Total da Compra  : R$ ", Total_Compra:1:2)
 escreval
 escreval("-------------------------------------")
 escreval
 escreval("-------- FORMAS DE PAGAMENTO --------")
 escreval
 escreval("1 - DINHEIRO")
 escreval("2 - PIX")
 escreval("3 - CARTÃO DE DÉBITO")
 escreva("4 - CARTÃO DE CRÉDITO (PARCELAMENTO ATÉ ")
 escreval("3X SEM JUROS, COM PARCELA MÍNIMA DE R$50,00)")
 escreval
 escreval("-------------------------------------")
 escreval
 
 escreva("Forma de Pagamento (Digite 1, 2, 3 ou 4): ")
 leia(Codigo_Forma_Pgto)
 
 escreval
 escreval("-------------------------------------")
 escreval
 
 enquanto ((Codigo_Forma_Pgto < 1) ou (Codigo_Forma_Pgto > 4)) faca
   escreval("Código Inválido!")


   escreva("Digite Novamente a Forma de Pagamento ")
   escreva("(Digite 1, 2, 3 ou 4): ")
   leia(Codigo_Forma_Pgto)


   escreval
   escreval("-------------------------------------")
   escreval
 fimenquanto
 
 escolha Codigo_Forma_Pgto
   Caso 1
     Forma_Pgto <- "1 - DINHEIRO"
     
     escreva("Valor Recebido: R$ ")
     leia(Vlr_Recebido)
     
     escreval
     escreval("-------------------------------------")
     escreval
     
     enquanto (Vlr_Recebido <= 0) faca
       escreval("Valor Inválido!")


       escreval("Digite Novamente o Valor Recebido?: R$ ")
       leia(Vlr_Recebido)


       escreval
       escreval("-------------------------------------")
       escreval
     fimenquanto


     Troco <- Vlr_Recebido - Total_Compra
     
     se (Troco < 0) entao
       Troco <- Troco * (-1)
       
       escreval("Valor Recebido é Insuficiente! :-(")
       escreval("Falta: R$ ", Troco:1:2)
       escreval
       escreval("-------------------------------------")
       escreval
       
       escreva("Recebeu o Valor que estava faltando(S/N)?: ")
       leia(Recebeu)
       
       se ((Recebeu <> "S") e (Recebeu <> "N")) entao
         Troco <- Troco * (-1)
       fimse
     senao
       se (Troco > 0) entao
         escreval("Troco: R$ ", Troco:1:2)
         escreval
         escreval("-------------------------------------")
         escreval


         escreva("O Cliente Recebeu o Troco(S/N)?: ")
         leia(Recebeu)
       senao
         Recebeu <- "S"
       fimse
     fimse
   
   Caso 2
     Forma_Pgto <- "2 - PIX"
     
     escreva("O PIX foi Recebido(S/N)?: ")
     leia(Recebeu)
     
   Caso 3
     Forma_Pgto <- "3 - CARTÃO DE DÉBITO"
     
     escreva("O Pagamento foi Aprovado(S/N)?: ")
     leia(Recebeu)
     
   Caso 4
     Forma_Pgto <- "4 - CARTÃO DE CRÉDITO (PARCELAMENTO ATÉ 3X SEM JUROS, COM PARCELA M�NIMA DE R$50,00)"


     escreval("----------- PARCELAMENTO ------------")
     escreval
     escreval("1 - À VISTA")
     escreval("2 - PARCELADO EM 2X")
     escreval("3 - PARCELADO EM 3X")
     escreval
     escreval("-------------------------------------")
     escreval
     
     escreva("Informe o Código do Parcelamento (Digite 1, 2 ou 3): ")
     leia(Codigo_Pgto_Cartao)
     
     escreval
     escreval("-------------------------------------")
     escreval
     
     enquanto ((Codigo_Pgto_Cartao < 1) ou (Codigo_Pgto_Cartao > 3)) faca
       escreval("Código Inválido!")


       escreva("Digite Novamente o Código do Parcelamento ")
       escreva("(Digite 1, 2 ou 3): ")
       leia(Codigo_Pgto_Cartao)


       escreval
       escreval("-------------------------------------")
       escreval
     fimenquanto
     
     escolha Codigo_Pgto_Cartao
       Caso 1
         Vlr_Parcelado <- Total_Compra
         Parcelamento  <- "1 - À VISTA"
         
         escreval("Parcelamento: ", Parcelamento)
         escreval("Valor Pago  : R$ ", Vlr_Parcelado:1:2)


       Caso 2
         Vlr_Parcelado <- Total_Compra / 2
         
         se (Vlr_Parcelado < 50) entao
           Vlr_Parcelado <- Total_Compra
           Parcelamento  <- "1 - À VISTA"
           
           escreval("Parcelamento: ", Parcelamento)
           escreval("Valor Pago  : R$ ", Vlr_Parcelado:1:2)
         senao
           Parcelamento  <- "2 - PARCELADO EM 2X"


           escreval("Parcelamento: ", Parcelamento)
           escreval("Valor Pago  : 2x de R$ ", Vlr_Parcelado:1:2)
         fimse


       Caso 3
         Vlr_Parcelado <- Total_Compra / 3
         
         se (Vlr_Parcelado < 50) entao
           Vlr_Parcelado <- Total_Compra / 2
           
           se (Vlr_Parcelado < 50) entao
             Vlr_Parcelado <- Total_Compra
             Parcelamento  <- "1 - À VISTA"


             escreval("Parcelamento: ", Parcelamento)
             escreval("Valor Pago  : R$ ", Vlr_Parcelado:1:2)
           senao
             Parcelamento  <- "2 - PARCELADO EM 2X"


             escreval("Parcelamento: ", Parcelamento)
             escreval("Valor Pago  : 2x de R$ ", Vlr_Parcelado:1:2)
           fimse
         senao
           Parcelamento  <- "3 - PARCELADO EM 3X"


           escreval("Parcelamento: ", Parcelamento)
           escreval("Valor Pago  : 3x de R$ ", Vlr_Parcelado:1:2)
         fimse
     fimescolha
     
     escreval
     escreval("-------------------------------------")
     escreval


     escreva("O Pagamento foi Aprovado(S/N)?: ")
     leia(Recebeu)
 fimescolha
 
 escreval
 escreval("-------------------------------------")
 escreval
 
 enquanto ((Recebeu <> "S") e (Recebeu <> "N")) faca
   escreval("Caractere Inválido!")


   escolha Codigo_Forma_Pgto
     Caso 1
       se (Troco < 0) entao
         escreva("Digite Novamente se Recebeu o ")
         escreva("Valor que estava faltando (S/N)?: ")
       senao
         escreva("Digite Novamente se o Cliente Recebeu o ")
         escreva("seu Troco (S/N)?: ")
       fimse


     Caso 2
       escreva("Digite Novamente se o PIX foi Recebido (S/N)?: ")
       
     Caso 3
       escreva("Digite Novamente se o Pagamento foi Aprovado (S/N)?: ")


     Caso 4
       escreva("Digite Novamente se o Pagamento foi Aprovado (S/N)?: ")
   fimescolha
   
   leia(Recebeu)


   escreval
   escreval("-------------------------------------")
   escreval
 fimenquanto
 
 se (Recebeu = "S") entao
   para i de 0 ate Qtd_Produtos_Compra - 1 faca
     escreval("PRODUTO", i + 1, "            : ", Vet_Nome_Produto[i])
     escreval("PREÇO                : R$ ", Vet_Preco_Produto[i]:1:2)
     escreval("QUANTIDADE           :", Vet_Qtd_Produto[i])
     escreval("TOTAL                : R$ ", Vet_Total_Produto[i]:1:2)
     escreval
     escreval("-------------------------------------")
     escreval
   fimpara
   
   escreval("QTD TOTAL DE PRODUTOS:", Qtd_Total_Produtos)
   escreval("VALOR TOTAL DA COMPRA: R$ ", Total_Compra:1:2)
   escreval
   escreval("-------------------------------------")
   escreval
   escreval("FORMA DE PAGAMENTO   :", Forma_Pgto)
   escreval
   escreval("-------------------------------------")
   escreval
   
   se (Codigo_Forma_Pgto = 4) entao
     escreva("Valor Pago           : ", Parcelamento)
     escreval(" - R$ ", Vlr_Parcelado:1:2)
     escreval
     escreval("-------------------------------------")
     escreval
     
   fimse


   escreval("Obrigado(a) e Volte Sempre! :-)")
   escreval
   escreval("-------------------------------------")
   escreval
 senao
   escreval("Compra Cancelada! :-(")
 fimse
Fimalgoritmo

Se quiserem ver como eu faço o passo-a-passo do Algoritmo é só ir conferir o Canal:

Link: https://youtube.com/@Desenvolvendo_e_Aprendendo?si=-_Ro1v5lW0seC1ga

Se quiserem ter acesso a este Exercício e outros que fiz e estou fazendo é só conferir no GitHub do Canal:

GitHub: https://www.github.com/Canal-Desenvolvendo-e-Aprendendo/Logica_de_Programacao_VisuAlg

Não deixem de se inscrever e apertar o sino para receber as notificações!

Excelente jornada a todos!

Um abraço e até a próxima!

Compartilhe
Recomendados para você
Luizalabs - Back-end com Python - 2º Edição
TOTVS - Fundamentos de Engenharia de Dados e Machine Learning
Riachuelo - Cibersegurança
Comentários (2)

JS

Jéssica Sousa - 04/03/2025 18:30

Muito obrigada pelo apoio Sergio. Fico muito feliz que tenha gostado do artigo.

Muito bacana o seu artigo.

É sempre bom compartilhar conhecimento.

Desejo que tenha uma excelente jornada de estudos! 👍😉

Sergio Sousa
Sergio Sousa - 04/03/2025 15:54

Muito bacana. Darei uma olhada no seu código pra ver as funcionalidades. Parabéns pelo artigo.

Meu artigo: https://web.dio.me/articles/usos-do-forin-e-forof?back=/articles (Sousa, 2024)

Minhas redes:

https://github.com/SergioDevSousa

https://www.linkedin.com/in/sergiosousa-tec/