Ir ao conteúdo
  • Cadastre-se
laikemaike

Terminando um programa que calcule imc?

Recommended Posts

Oi, eu sou novato, comecei a algumas semanas e estou tendo o primeiro contato com o Smallbasic atualmente.
Eu digitei esses códigos, e gostaria que após aparecer a conta, aparecesse as mensagens referentes a cada categoria, tipo nessa 17.
" Muito abaixo do Peso " 

" Abaixo do peso " 

E por ai vai.
Bom, meus códigos estão assim.
 

TextWindow.WriteLine (RESULTADO)
If RESULTADO <=17 Then
  TextWindow.WriteLine (" Muito abaixo do Peso ")
EndIf
  
  If RESULTADO= (17 < 18,49)  Then
     TextWindow.WriteLine (" Abaixo do peso ")
    EndIf

 

Aparece " 22,25 : Era esperado RightParens aqui, mas não foi encontrado. "

" 22,25 : Uma condição é esperada aqui. "

 

Pelo visto não sei aplicar um valor que esteja entre os mencionados " 17 e 18,49 "

Sem o programa não permitir o procedimento.

Também tentei 


 

 If RESULTADO 17>= or <=18,49 Then
 TextWindow.WriteLine ( " Abaixo do Peso " ) 
EndIf

Mas não vai. Como fazer que os dois valores coexistam na programação, e, que valores entre eles também?

Obrigado desde já!

Editado por dif
usar o botão CODE para postar o código

Compartilhar este post


Link para o post
Compartilhar em outros sites

@laikemaike Olá, não tenho experiência na linguagem mencionada, mas o processo de encadeamento do laço de IF-else é o mesmo.


 

SE [expressão]  ENTÂO
     Faz algo
SENAO SE [expressão] ENTãO
    Faz outra coisa
SENAO SE [expressão] ENTÃO
   faz outra coisa 2
SENAO 
   Faz uma terceira coisa diferente
FIM DO LAÇO

NO caso da sua linguagem  Small Basic a sintaxe do teste  usa as palavras chaves  IF, ELSEIF, ELSE e ENDIF.

Além disso na programação, independente da linguagem o ponto flutuante é sempre com ponto e não com virgula.

Tente assim:

TextWindow.WriteLine (RESULTADO)
If (RESULTADO <= 17) Then
  TextWindow.WriteLine (" Muito abaixo do Peso ")
Else (RESULTADO < 18.49) Then
   TextWindow.WriteLine (" Abaixo do peso ")
Endif  
  
 

A palavra chave ELSIF é usada quando você quer testar mais de duas expressões é o "SENAO SE" 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  Tente fazer um algoritmo no visualg antes de tentar usar alguma linguagem de programação, isso vai te ajudar na hora de montar a programação!! Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@dif Oi, eu entendi, eu tinha esquecido da regra do ponto flutuante.
Enfim, troquei todos as vírgulas por ponto e o sistema passou a aceitar e fazer o teste.

Porém, não esta saindo a mensagem que eu botei como resultado para cada uma.

Atualmente meus códigos estão assim ( completo )
Botei em inglês, porque foi o pedido, e esta "PESO" e "ALTURA" porque foi o requesitado pela apostila, então, não ligue muito para o Portinglês.

EDIT : Espera, acho que foi porque eu esqueci o ELSE entre eles, brb. Vou ajeitar para ver se vai.

TextWindow.WriteLine(" Welcome to my IMC calculator program, this is my first program, hope you enjoy it.")
TextWindow.WriteLine (" Please, type the PESO ")
PESO = TextWindow.Read() 
TextWindow.WriteLine (" Please, type the ALTURA ")
ALTURA = TextWindow.Read()
RESULTADO = PESO / (ALTURA*ALTURA)
TextWindow.WriteLine (" Your IMC is... " )
TextWindow.WriteLine (RESULTADO)
If RESULTADO <=17 Then
  TextWindow.WriteLine (" Muito abaixo do Peso ")
EndIf
  
  If RESULTADO= 17 <= 18.49 Then
     TextWindow.WriteLine (" Abaixo do peso ")
   EndIf
   
   If RESULTADO= 18.5 <= 24.99 Then
     TextWindow.WriteLine (" Peso Normal ")
   EndIf
   
   If RESULTADO= 25 <= 29.99 Then
     TextWindow.WriteLine (" Acima do Peso ")
   EndIf
   
   If RESULTADO= 30 <= 34.99 Then
     TextWindow.WriteLine (" Obesidade I ")
   EndIf
   
   If RESULTADO= 35 <= 39.99 Then
     TextWindow.WriteLine (" Obesidade II ")
   EndIf
   
   If RESULTADO >= 40 Then
     TextWindow.WriteLine (" Obesidade III ")
    EndIf

 

adicionado 2 minutos depois
47 minutos atrás, ZdebugginG disse:

  Tente fazer um algoritmo no visualg antes de tentar usar alguma linguagem de programação, isso vai te ajudar na hora de montar a programação!! Abraço.

Estou fazendo a apostila e o cronograma do curso.

Primeiro vem Lógica de Programação.

Por segundo vem Programação
Depois eu começo a utilizar o visualg,.net e aprendo as linguagens e etc.

Mesmo assim, obrigado pela dica.

adicionado 10 minutos depois

@dif

Oi, eu tentei de tudo.

Elseif, o qual você citou, tentei colocar else e if, tentei colocar else separadamente.

Mas não vai.

Utiliza o que eu acabei de colocar ali em cima como base.

Se puder me ajudar, agradeço.

Na verdade, agradeço desde já. :3

Editado por laikemaike
Usar o botão de CODE e não citação
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@ZdebugginG O visualG é uma linguagem de programação e usa o português estruturado.

 

@laikemaike Não sei se na linguagem desejada os parênteses sejam optativos. Algumas é outras não.

Tente encadear os testes de IF else. Além disso, a sintaxe que você está fazendo no IF está errada. Onde você testa mais de um valor é preciso usar um operador lógico. No caso é o "E" - "AND"

Então seu código fica:

 

TextWindow.WriteLine(" Welcome to my IMC calculator program, this is my first program, hope you enjoy it.")
TextWindow.WriteLine (" Please, type the PESO ")
PESO = TextWindow.Read() 
TextWindow.WriteLine (" Please, type the ALTURA ")
ALTURA = TextWindow.Read()
RESULTADO = PESO / (ALTURA*ALTURA)
TextWindow.WriteLine (" Your IMC is... " )
TextWindow.WriteLine (RESULTADO)
If (RESULTADO <=17) Then
  TextWindow.WriteLine (" Muito abaixo do Peso ")
Elseif (RESULTADO > 17 AND RESULTADO <= 18.49)    Then
  TextWindow.WriteLine (" Abaixo do peso ")  
Elseif (RESULTADO >= 18.5 AND RESULTADO <= 24.99) Then
     TextWindow.WriteLine (" Peso Normal ")
Elseif (RESULTADO >= 25 AND RESULTADO <= 29.99)   Then
     TextWindow.WriteLine (" Acima do Peso ")
Elseif (RESULTADO >= 30 AND RESULTADO <= 34.99)   Then
     TextWindow.WriteLine (" Obesidade I ")
Elseif (RESULTADO >= 35 AND RESULTADO <= 39.99) Then
     TextWindow.WriteLine (" Obesidade II ")
Else
     TextWindow.WriteLine (" Obesidade III ")
EndIf
   

Basicamente você precisa entender que:

SE o imc for menor ou igual a 17 ele é muito abaixo do peso

SE o imc for maior  que 17 E maior  ou igual a 18.49 ele é abaixo do peso.

SE o imc for maior ou igual a 18.5  E menor ou igual a 24.99 ele é peso normal

SE o imc for maior ou igual a 25 E menor ou igual a 29.99 ele é acima do peso

SE o imc fgor maior ou igual a 30 E menor ou igual a 34.99 ele é obesidade 1

SE o imc for maior ou igual a 35 E menor ou igual a 39,99 ele é obesidade 2

SE o imc for maior que 39.99,  no caso 40 ou mais ele é obesidade 3.

 

Simples assim! Basta interpretar a lógica!

 

 

 

 

Editado por dif

Compartilhar este post


Link para o post
Compartilhar em outros sites

@dif Saquei, então eu estava fazendo certo no começo, só que me perdi. Obrigado amigão

adicionado 0 minutos depois

Vou tentar aq, dps de estudar

 

  • Curtir 1

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

×