Ir ao conteúdo
  • Cadastre-se

Portugol PORTUGOL (VisualG) - porque que ele tá considerando a primeira condição


Ir à solução Resolvido por Maria Vitória,

Posts recomendados

Já tentei essas duas formas e ainda não consegui resolver, já inverti, fiz tudo que pensei pra dar certo, já testei com os outros valores e dá esse mesmo erro, to me sentindo burra por não conseguir, por favor da um help, mandei os dois aí

 

Var
   cod:real
   din,troco:real

Inicio
   escreval("           REFRIGERANTES          COD          VALORES")
   escreval("                            |             |")
   escreval("           Coca-Cola        |      1      |    R$ 5,00")
   escreval("           Fanta            |      2      |    R$ 5,50")
   escreval("           Conquista        |      3      |    R$ 6,00")
   escreval("           Antartica        |      4      |    R$ 6,50")
   escreval("           Guaratuba        |      5      |    R$ 7,00")
   escreval("           -------------------------------------------")
   escreval()
   escreva("COD : ")
   leia(cod)
   escreval()
   se(cod = 1) então
      cod<-5.00
      escreval("Coca-Cola R$ 5,00")
      escreval()
      escreva("Seu Dinheiro R$")
      leia(din)
   senao
      se(cod = 2) então
         cod<-5.5
         escreval("Fanta R$ 5,50")
         escreval()
         escreva("Seu Dinheiro R$")
         leia(din)
      senao
         se(cod = 3) então
            cod<-6
            escreval("Conquista R$ 6,00")
            escreval()
            escreva("Seu Dinheiro R$")
            leia(din)
         senao
            se(cod = 4) então
               cod<-6.5
               escreval("Antartica R$ 6,50")
               escreval()
               escreva("Seu Dinheiro R$")
               leia(din)
            senao
               se(cod = 5) então
                  cod<-7.00
                  escreval("Guaratuba R$ 7,00")
                  escreval()
                  escreva("Seu Dinheiro R$")
                  leia(din)

               Fimse
            Fimse
         Fimse
      Fimse
   Fimse
   se (troco < 0) então
      troco<-abs(din-cod)
      escreval ("FALTA R$ ", troco)
   senao
      se (troco > 0) então
         troco<- din - cod
         escreval()
         escreval("TROCO R$ ",troco)
      Fimse
   Fimse
Fimalgoritmo

 

Var
   cod:real
   din,troco:real
     
Inicio
   escreval("           REFRIGERANTES          COD          VALORES")
   escreval("                            |             |")
   escreval("           Coca-Cola        |      1      |    R$ 5,00")
   escreval("           Fanta            |      2      |    R$ 5,50")
   escreval("           Conquista        |      3      |    R$ 6,00")
   escreval("           Antartica        |      4      |    R$ 6,50")
   escreval("           Guaratuba        |      5      |    R$ 7,00")
   escreval("           -------------------------------------------")
   escreval()
   escreva("COD : ")
   leia(cod)
   escreval()
   se(cod = 1) então
      cod<-5.00
      escreval("Coca-Cola R$ 5,00")
      escreval()
      escreva("Seu Dinheiro R$")
      leia(din)
   senao
      se(cod = 2) então
         cod<-5.5
         escreval("Fanta R$ 5,50")
         escreval()
         escreva("Seu Dinheiro R$")
         leia(din)
      senao
         se(cod = 3) então
            cod<-6
            escreval("Conquista R$ 6,00")
            escreval()
            escreva("Seu Dinheiro R$")
            leia(din)
         senao
            se(cod = 4) então
               cod<-6.5
               escreval("Antartica R$ 6,50")
               escreval()
               escreva("Seu Dinheiro R$")
               leia(din)
            senao
               se(cod = 5) então
                  cod<-7.00
                  escreval("Guaratuba R$ 7,00")
                  escreval()
                  escreva("Seu Dinheiro R$")
                  leia(din)

               Fimse
            Fimse
         Fimse
      Fimse
   Fimse
   se (troco <= 0) então
      troco<- abs (din-cod)
      escreval ("FALTA R$ ", troco)
   senao
      troco<- din - cod
      escreval()
      escreval("TROCO R$ ",troco)
   Fimse
Fimalgoritmo

 

Captura de tela 2023-04-03 133521.png

Captura de tela 2023-04-03 133629.png

Link para o comentário
Compartilhar em outros sites

  • Solução

Já consegui resolver, eu percebi que não tinha informado a variável troco antes de ter colocado a condição, então ao invés de usar ela, eu usei as outras variáveis "cod" e "din"

 

escreval("---------------------------------------------------------------")
se din<cod então
   troco<- abs (din-cod)
   escreval("|")
   escreval ("| FALTA R$ ", troco)
senao
   troco<- din - cod
   escreval("|")
   escreval("| TROCO R$ ",troco)
Fimse
escreval("|")
escreval("---------------------------------------------------------------") 

 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

@Maria Vitória, teu código ficou muito bom! 🙂

 

 

Uma sugestão que daria é em relação à semântica para as nomenclaturas de variáveis... veja: cod (que teria vindo "código", certo?) não tem nada a ver com dinheiro, e de um modo geral você não deveria "reutilizar essa variável" para outra função!!! Não misturar as coisas. Não precisaria, tipo, "tentar economizar variável". Só criar uma nova. O mais importante é tentar sempre deixar o código bem claro (no caso deixando as coisas "fazer sentido" - bem semânticos...).

 

Exemplo de sugestão de nomenclaturas de variáveis:

var
   codigo : inteiro
   valorProduto, valorPago, troco : real

 

Observe que as nomenclaturas das variáveis sugeridas seriam meio que aquilo que elas representam. Daí só ajustar o código:

 

algoritmo "Mercearia da Esquina"
var
   codigo : inteiro
   valorPago, valorProduto, troco : real
inicio
   escreval("           REFRIGERANTES          COD          VALORES")
   escreval("                            |             |           ")
   escreval("           Coca-Cola        |      1      |    R$ 5,00")
   escreval("           Fanta            |      2      |    R$ 5,50")
   escreval("           Conquista        |      3      |    R$ 6,00")
   escreval("           Antartica        |      4      |    R$ 6,50")
   escreval("           Guaratuba        |      5      |    R$ 7,00")
   escreval("           -------------------------------------------")
   escreval()
   escreva ("Código : ")
   leia(codigo)
   escreval()
   
   se (codigo = 1) então
      valorProduto <- 5.00
      escreval("Coca-Cola R$ 5,00")
      escreval()
      escreva("Seu Dinheiro R$")
      leia(valorPago)
   senao
      se (codigo = 2) então
         valorProduto <- 5.50
         escreval("Fanta R$ 5,50")
         escreval()
         escreva("Seu Dinheiro R$")
         leia(valorPago)
      senao
         se (codigo = 3) então
            valorProduto <- 6.00
            escreval("Conquista R$ 6,00")
            escreval()
            escreva("Seu Dinheiro R$")
            leia(valorPago)
         senao
            se (codigo = 4) então
               valorProduto <- 6.50
               escreval("Antartica R$ 6,50")
               escreval()
               escreva("Seu Dinheiro R$")
               leia(valorPago)
            senao
               se (codigo = 5) então
                  valorProduto <- 7.00
                  escreval("Guaratuba R$ 7,00")
                  escreval()
                  escreva("Seu Dinheiro R$")
                  leia(valorPago)
               fimSe
            fimSe
         fimSe
      fimSe
   fimSe
   
   se (valorPago < valorProduto) então
      troco <- valorProduto-valorPago
      escreval ("FALTAM R$", troco:1:2)
   senao
      troco <- valorPago-valorProduto
      escreval()
      escreval("TROCO R$", troco:1:2)
   fimSe
fimAlgoritmo

 

 

"Ué, dizer que faltam ou que tem troco seria a mesma coisa?". Creio que não!!! Talvez refinar ainda mais a semântica.. Poderia por exemplo mudar de troco para diferenca.

 

var
   codigo : inteiro
   valorProduto, valorPago, diferenca : real

 

Saca? Ou utilizar uma variável para o troco, e outra variável para o valor faltante... tipo:

 

var
   codigo : inteiro
   valorProduto, valorPago, troco, falta : real

 

 

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!