Ir ao conteúdo
  • Cadastre-se
Rubens Schneider

VisualG Não consigo exibir informação no VisualG

Recommended Posts

Olá, montei o algoritmo para calcular o IMC, quando eu coloco "Peso 59" e "Altura 1.82" o resultado é "IMC 17.81". Deveria aparecer como resultado "Você está abaixo do peso, pede uma pizza aí!", mas o que aparece é "Muito bem, você está no peso ideal!".
Eu não estou entendendo onde errei, será que o Visualg tem algum erro?
Me ajudem por favor!!!
rsrs...
O código que fiz foi esse:

Algoritmo "imc"
Var
   nome: caracter
   kg, Altu, IMC: real
Inicio
   Escreval ("Olá, qual seu nome?")
   Leia (nome)
   Escreval ("Quanto você pesa ", nome, "?")
   Leia (kg)
   Escreval ("Quanto você tem de altura?")
   Leia (Altu)
   IMC<- Kg/ (Altu^2)
   Se (IMC < 17) então
      Escreval ("Muito abaixo do peso ",nome, ".")
   Senao Se (IMC >= 17) e (IMC < 18.5) entao
      Escreval (nome," Você está abaixo do peso, pede uma pizza aí!")
   Senao
      Se (IMC >= 18.5) e (IMC < 25) entao
         Escreval ("Muito bem ", nome, ", você está no peso ideal!")
      Senao
         Se (IMC >= 25) e (IMC < 30) entao
            Escreval ("Hora de pensar em um regime ", nome, ", você está com sobrepeso!")
         Senao
            Se (IMC >= 30) e (IMC < 35) entao
               Escreval ("Obesidade ", nome, ", é isso que você quer pra sua vida?")
            Senao
               Se (IMC >= 35) e (IMC < 40) entao
                  Escreval ("Obesidade severa, sinto muito ", nome)
               Senao
                  Escreval ("Obesidade mórbida", nome, ", aconselho que vá cuidar da sua saúde.")
               Fimse
            Fimse
         Fimse
      Fimse
   Fimse
Fimse
Escreval (nome,", O seu IMC é ", IMC:5:2, ".")
Fimalgoritmo

 

  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Rubens Schneider     para postar seu código é melhor usar o botão   <>   que está lá na barra de ferramentas da janela de postar ,  e seu código está certo  pois se IMC >= 17 quer dizer que se o imc for igual a 17 ou maior que 17 ele vai imprimir isso mesmo que está nessa opção .   porém no seu código existe um erro na linha 15  onde tem um   senao e logo em seguida na mesma linha tem um  se  e o visualg não emite nenhum erro por causa disso , mas na hora de rodar o código ele não executa o que vem depois do comando entao  na mesma linha e já passa para a linha de baixo , e com isso dá erro ,  então para resolver isso você pode mover esse   se   para a linha de baixo .

  • Curtir 3

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá.

 

Vou tentar complementar:

 

1#

Sobre:

20 horas atrás, devair1010 disse:

porém no seu código existe um erro na linha 15  onde tem um   senao e logo em seguida na mesma linha tem um  se

 

No caso, a sintaxe do Visualg, por algum motivo (provavelmente técnico), meio que trabalha com "comandos completos por linha"... ou seja, não funciona bem com "dois ou mais comando na mesma linha", nem funciona com "um comando separado em várias linhas". O curioso é que um "pai", o Pascal, funciona. Em fim, um dos detalhes que já demonstram essa limitação é que no Visualg não tem "um 'comando' para finalizar a linha". Lá no pascal, por exemplo, utilizam-se o ";"... aqui, deve ser o "fim da linha mesma". Não entendo muito bem.

 

Alguns exemplo de "limitação do Visualg":

a )

var
   nome  :caracter
   kg,
   altu,
   IMC   :real

No Pascal essa separação por linhas funciona. No Visualg, não. Dá erro logo no kg.

 

 

b )

20 horas atrás, Rubens Schneider disse:

Senao Se (IMC >= 17) e (IMC < 18.5) entao

No Pascal essa "junção" funciona, mas no Visualg não.

 

Teria que fazer algo assim:

senao
   se (IMC >= 17) e (IMC < 18.5) entao

 

 

 

2#

Sobre:

20 horas atrás, Diogenes Ramos disse:

Tente colocar as conjunções entre parenteses, exemplo: ((a<b) e (b>c))

 

Nesse caso não precisa. Para o Visualg, a sintaxe das "expressões" lá do se estão corretas (tirando a questão se colocar na mesma linha), ou seja, não precisa de um () para estrutura do se em si.

 

Seria assim:

se RESULTADO_LÓGICO entao

Assim é facultativo (no caso: não necessário):

se (RESULTADO_LÓGICO) entao

 

 

Já entre os operadores lógicos precisa:

Assim não pode:

Se IMC >= 17 e IMC < 18.5 entao


E assim?:

Se (IMC >= 17 e IMC < 18.5) entao

Também não serve... perceba que esses () vão entrar na questão do "facultativo" lá de cima, logo, é equivalente a não ter parênteses, daí não vai funcionar!

 

 

 

3#

Sobre o erro em sim.

21 horas atrás, Rubens Schneider disse:

Olá, montei o algoritmo para calcular o IMC, quando eu coloco "Peso 59" e "Altura 1.82" o resultado é "IMC 17.81". Deveria aparecer como resultado "Você está abaixo do peso, pede uma pizza aí!", mas o que aparece é "Muito bem, você está no peso ideal!".
Eu não estou entendendo onde errei, será que o Visualg tem algum erro?

 

Então, qual versão do Visualg está utilizando? tem como postar o print da tela com o resultado?

 

Se está retornando "Muito bem, você está no peso ideal!", alguma outra coisa estranha pode está acontecendo... pode ser algum outro problema. Ou o código fonte está bugado (algum caractere oculto); ou a versão do Visualg está bugada... ou alguma outra coisa... Em fim.. pelo que o eu vi, esse erro, citado por @devair1010, compromete o código todo... pois o se "deixa de existir" e acaba ficando com o fimse a mais.

 

De um modo geral, recomendo utilizar a versão 3.0.6.5. Tem uma mais nova, acho que 3.0.7.0, mas não recomendo.

 

 

***

 

No aguardo.

  • Curtir 3

Compartilhar este post


Link para o post
Compartilhar em outros sites

valeu pessoal!!!
Eu acredito que o erro estava logo após o primeiro "se", eu coloquei "Se (IMC < 17) então", no "Então" eu coloquei acento, o certo seria "entao".
O erro não surgiu mais, só que eu achei estranho é que as vezes ia certo a informação após o calculo, mesmo com acentuação!!!
Estranho né???

 

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá.

 

27 minutos atrás, Rubens Schneider disse:

Eu acredito que o erro estava logo após o primeiro "se", eu coloquei "Se (IMC < 17) então", no "Então" eu coloquei acento, o certo seria "entao".
O erro não surgiu mais, só que eu achei estranho é que as vezes ia certo a informação após o calculo, mesmo com acentuação!!!
Estranho né???

 

De um modo geral acho que não tem relação, ou seja, sim! é estranho :). Vejo como uma coincidência...

 

Sobre essa questão do "~", segue:
1) continuo recomendo utilizar somente a versão 3.0.6.5 do Visualg. Se estiver utilizando outra, favor informar qual;

2) na versão citada acima, o então (com o ~) não funciona! Pode testar... Tem que tirar o "~".

O que sei é que também funciona com ENTÃO (tudo em maiúsculo - não pergunte o porquê). O que pode ter acontecido é que, nos seus testes, o programa em execução não ter caído nessa linha "errada" OU a versão do seu Visualg aceita com "~" (acho improvável). Independente do que aconteceu, de um modo geral, no Visualg, alguns erros só ocorrem quando tenta executar a linha em questão. O erro é em tempo de execução, não é analisado se está certo ou errado na "compilação"... é uma das característica (considero limitação) do Visualg. Só vai ver o programa na hora :(.

.

 

Se fosse no Pascal (no qual o Visualg meio que tenta ser parecido), na própria compilação já ia dá erro. Algo equivalente a:

"Erro de sintaxe, esperado "entao", mas foi encontrado "identificador então"

Ou seja, na hora de compilar (tentar gerar o programa que vai rodar) já dava o erro... o programa nem rodaria! Seria um "erro fatal"... não teria gerar o programa. Já no Visualg, ele roda "normalmente" e só analisa se esta certo ou errado na hora que "traduzir a linha".

 

Em fim, na minha postagem anterior acho que resumo bem o que ocorreu.. basicamente o erro estava em deixar o "Senao Se" na mesma linha. Dá uma olhada no 1#.

 

No aguardo.

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá. 

 

4 horas atrás, Ricardov disse:

@Simon Viegas no VisualG são reservadas as palavras entao (minúsculo sem acento) e ENTÃO (maiúsculo com acento).

Creio eu que não. Teoricamente todas as palavras chaves (reservadas) do Visualg não tem acentos. Me corrijam se estiver enganado.

 

Vide: http://www.apoioinformatica.inf.br/produtos/visualg/item/29-referencias-da-linguagem-de-programacao-do-visualg

 

 

Então, por algum motivo, também está funcionando com ENTÃO (maiúsculo e com tio)... ou seja, tá mais para um bug.. (ou alguma tentativa de implementação de "melhoria"?). Assim como também o "senão" e o "não" (com tio), ou seja, por algum motivo está deixando essas palavras em azul, mas não necessariamente estão reservadas formalmente... 

 

 

De qualquer forma, valeu... Eu tô na rua... em casa vou fazer alguns testes e pesquisar um pouco mais..

 

Att 

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Update

 Fiz alguns testes...

- para o senao, qualquer variação utilizando "Ã" funciona. Ex.: eNtÃo, enTÃO, ENtÃo etc, ou seja, não só o ENTÃO que funciona... o "bug" não está considerando o à como inválido.

- A mesma regra valeu para o SENÃO e para o NÃO. Qualquer variação com à funcionou.

 

Ou seja, o Visualg (por algum motivo misterioso) aceita Ã, mas não aceita ã.

 

Obs.: teoricamente o Visualg deveria funcionar apenas com "caracteres não especiais", ou seja, não aceitar "ç", "~", "´", "`" etc.

 

RESUMINDO:

Os comandos não tem acentos.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Simon Viegas vi isso em documentação do VisualG, mas não lembro a versão. Mas o entao (sem acento) e o ENTÂO (com acento) são reservadas. Vou procurar a referência.

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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

×