Ir ao conteúdo
  • Cadastre-se

VisualG Problema Esperava então (VisuALG)


Posts recomendados

Olá, estou com dificuldades ao usar a função "se" em algumas soluções, é só em alguns exercícios que acabo me deparando com a mensagem "esperava encontrar então na linha x"

 

Aqui está o código

algoritmo "Preços"
// Função : Calcular e classificar novos preços de produtos.
// Autor : Tobias Oliveira Rosa
// Data : 21/03/2018
var
produto_atual,produto_novo:real
inicio
escreva("Digite o valor atual do produto:")
leia(produto_atual)
se(produto_atual<=50)então
produto_novo<-produto_atual+produto_atual*0,05
fimse
se(50<produto_atual<=100)então
produto_novo<-produto_atual+produto_atual*0,10
fimse
se(100<produto_atual)então
produto_novo<-produto_atual+produto_atual*0,15
fimse
se(produto_atual<=80)então
escreva(produto_atual+"Barato")
fimse
se(80<produto_atual<=120)então
escreva(produto_atual+"Normal")
fimse
se(120<produto_atual<=200)então
escreva(produto_atual+"Caro")
fimse
se(200<produto_atual)então
escreva(produto_atual+"Muito Caro")
fimse
fimalgoritmo

E é bem na parte do "se(50<produto_atual<=100)então" que ocorre o problema, dizendo que esperava encontrar um então ali :/

Screenshot_24.png

Screenshot_25.png

Screenshot_26.png

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Olá. Seja bem vindo ao Fórum do Clube do Hardware.

 

12 minutos atrás, Tobias Rosa disse:

Olá, estou com dificuldades ao usar a função "se" em algumas soluções, é só em alguns exercícios que acabo me deparando com a mensagem "esperava encontrar então na linha x"

 

Sobre:

13 minutos atrás, Tobias Rosa disse:

se (50<produto_atual<=100) ENTÃO

 

As sub-expressões devem ficar separadas... ex.:

se (produto_atual>50) E (produto_atual<=100) ENTÃO

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@Simon Viegas Valeu, esse erro não está dando mais, porém estou com dificuldade em fazer o cálculo funcionar. Meu código está assim:

var
produto_atual,produto_novo:real
inicio
escreva("Digite o valor atual do produto:")
leia(produto_atual)
se(produto_atual<=50)então
produto_novo<-produto_atual+produto_atual*0,05
fimse
se(50<produto_atual) e (produto_atual<=100)então
produto_novo<-produto_atual+produto_atual*0,10
fimse
se(100<produto_atual)então
produto_novo<-produto_atual+produto_atual*0,15
fimse
se(produto_novo<=80)então
escreval(produto_novo)
escreva("Barato")
fimse
se(80<produto_novo)e(produto_novo<=120)então
escreval(produto_novo)
escreva("Normal")
fimse
se(120<produto_novo)e(produto_novo<=200)então
escreval(produto_novo)
escreva("Caro")
fimse
se(200<produto_novo)então
escreval(produto_novo)
escreva("Muito Caro")
fimse
fimalgoritmo

E no resultado, quando eu coloco o número, sai o mesmo número sem passar pelas operações que coloquei no começo.

Screenshot_27.png

Screenshot_28.png

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Os números devem ser utilizado no padrão imperial, ou seja, usam-se ".", no lugar da ",".

Ex.:

       produto_novo<-produto_atual+produto_atual*0.05

 

adicionado 3 minutos depois

outra coisa, como são condições mutuamente excludentes, precisam-se usar senão nos se.

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Como assim tem que usar senao? Quando eu nao quero fazer nada com o senao, ou passar pra outra condição e assim sucessivamente, o que devo fazer?

adicionado 4 minutos depois
var
   produto_atual,produto_novo:real
inicio
   escreva("Digite o valor atual do produto:")
   leia(produto_atual)
   se(produto_atual<=50)então
      produto_novo<-produto_atual+produto_atual*0.05
   fimse
   se(50<produto_atual) e (produto_atual<=100)então
      produto_novo<-produto_atual+produto_atual*0.10
   fimse
   se(100<produto_atual)então
      produto_novo<-produto_atual+produto_atual*0.15
   fimse
   se(produto_novo<=80)então
      escreval(produto_novo)
      escreva("Barato")
   fimse
   se(80<produto_novo)e(produto_novo<=120)então
      escreval(produto_novo)
      escreva("Normal")
   fimse
   se(120<produto_novo)e(produto_novo<=200)então
      escreval(produto_novo)
      escreva("Caro")
   fimse
   se(200<produto_novo)então
      escreval(produto_novo)
      escreva("Muito Caro")
   fimse
fimalgoritmo

Assim que ficou meu algoritmo, e está funcionando igual eu queria...

 

[Conteúdo off-topic removido pela moderação]

 

 

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Membro VIP
38 minutos atrás, Tobias Rosa disse:

Como assim tem que usar senao?

É um requisito técnico/didático, ou seja, se tiver dúvidas, dê uma pesquisada sobre o se e o se/senão. Mais abaixo vou complementando....

 

 

 

38 minutos atrás, Tobias Rosa disse:

Quando eu nao quero fazer nada com o senao

Nesse sentido seria "não precisar", ou seja, se "precisa", teria que usar! A "necessidade" do senão surge do contexto, ou seja, basicamente ele ajuda o programa a evitar fazer verificações desnecessárias.

 

 

 

38 minutos atrás, Tobias Rosa disse:

 ou passar pra outra condição e assim sucessivamente, o que devo fazer?

Uma coisa não exclui a outra.. na verdade precisa dos dois. Vai usar o senão (por que se for uma condição, não poderá ser mais uma outra posterior)   E   vai usar outros se (por que são várias condições)

 

 

 

38 minutos atrás, Tobias Rosa disse:

Assim que ficou meu algoritmo, e está funcionando igual eu queria...

OK. Apesar de está dando uma resposta correta, ainda sim precisa do senão nos se, ou seja, não é só o resultado que importa (fim), mas também o mecanismo para chegar a ele (meio). Isso claro supondo que já "aprendeu" sobre se/senão.

 

 

RESUMINDO

Como seu código já está bastante encaminhado, vou inserir os senão para demonstrar como deveria ficar.

algoritmo "FCdH"
var
   produto_atual,produto_novo:real
inicio
   escreva("Digite o valor atual do produto:")
   leia(produto_atual)
   se (produto_atual<=50) ENTÃO
      produto_novo<-produto_atual+produto_atual*0.05
   senao
      se (50<produto_atual) e (produto_atual<=100)ENTÃO
         produto_novo<-produto_atual+produto_atual*0.10
      senao
         se(100<produto_atual)ENTÃO
            produto_novo<-produto_atual+produto_atual*0.15
         fimse
      fimse
   fimse

   se(produto_novo<=80)ENTÃO
      escreval(produto_novo)
      escreva("Barato")
   senao
      se(80<produto_novo)e(produto_novo<=120)ENTÃO
         escreval(produto_novo)
         escreva("Normal")
      senao
         se(120<produto_novo)e(produto_novo<=200)ENTÃO
            escreval(produto_novo)
            escreva("Caro")
         senao
            se(200<produto_novo)ENTÃO
               escreval(produto_novo)
               escreva("Muito Caro")
            fimse
         fimse
      fimse
   fimse
fimalgoritmo

 

***

 

Para tentar entender na prática a diferença, pegue seu código e vá pressionando F8... daí o Visualg vai executando linha por linha. Perceba que ao entrar no se, o programa vai continuar verificando os outros...    tipo, se um produto é menor ou igual a 50, faz algum sentido ainda perguntar se ele é maior que 50 e menor que ou igual a 100?

 

Agora, faça esse mesmo teste com esse código acima. Verás que ao entrar num se, os outros que estão "amarrados pelo senão" não serão verificados... vai pular para próxima estrutura...

 

 

Qualquer dúvida só pergunta.

 

 

PS:

44 minutos atrás, Tobias Rosa disse:

Agora tem outro exercício que ta dando o mesmo problema

Outra problema = novo tópico!

 

 

No aguardo.

  • Curtir 1
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...