Ir para conteúdo

  • Entrar usando o Facebook Entrar usando o Twitter Entrar usando o Windows Live Login com Steam Login com Google      Entrar   
  • Cadastre-se

Ícone Classificados

Adicionar um Anúncio

Redes Sociais

Membros mais bem avaliados

Membros VIP mais recentes


Foto
- - - - -

[Resolvido] Problema com Javascript


  • Este tópico está fechado Este tópico está fechado
5 respostas neste tópico

#1 cristianmtm

cristianmtm
  • Membros Plenos
  • 23 posts
  • Membro desde 17/07/2009
0
Neutra
  • Barueri, São Paulo

Postado 18 de março de 2012 - 21h28min

Meu professor de linguagem de programação pediu um exercício de javascript sobre um programa que calcule o IMC de uma pessoa e diga como está sua situação em relação à saúde (obesa, fora do peso, obesidade mórbida, etc.). Pois bem, resolvi e aqui está:
<html>
<head>
<title> IMC </title>
</head>
<body>
<script type="text/javascript">
var imc, peso, altura;
peso=parseFloat(prompt("Insira seu peso (em kg):"));
altura=parseFloat(prompt("Insira sua altura (em metros):"));
imc=(peso/(altura*altura));
if (imc < 17) {
alert ("Seu IMC é "+imc+", Você está muito abaixo do peso!")
}
else if ((imc >= 17) && (imc < 18,5)) {
alert ("Seu IMC é "+imc+", você está abaixo do peso!")
}
else if ((imc >= 18,5) && (imc < 25)) {
alert ("Seu IMC é "+imc+", você está com o peso ideal!")
}
else if ((imc >= 25) && (imc < 30)) {
alert ("Seu IMC é "+imc+", Você está acima do peso!")
}
else if ((imc >= 30) && (imc < 35)) {
alert ("Seu IMC é "+imc+", você está classificado(a) em Obesidade I.")
}
else if ((imc > 35) && (imc < 40)) {
alert ("Seu IMC é "+imc+", você está classificado(a) em Obesidade II (severa).")
}
else {
alert ("Seu IMC é "+imc+", você está classificado(a) em Obesidade III (mórbida).")
}
</script>

</body>

</html>

O problema é que pesquisei como usar duas afirmações ao mesmo tempo (uso do || e &&), mas o programa está dando errado, só diz que "você está abaixo do peso", mesmo com o IMC maior que 18,5. Se alguém encontrar o erro me ajude, ficarei muito grato, porque sou inexperiente nessa área. Muito obrigado.


#2 dif

dif
  • Moderadores
  • 5.080 posts
  • Membro desde 17/04/2007
562
Excepcional
  • Pelotas-RS

Perfil Steam

Postado 18 de março de 2012 - 22h36min

Olá de novo amigo.. agora no lugar certo. vejamos.. você tem 2 erros ai.

uma é que você colocou dentro de body direto.

crie dentro de head uma funçao chamada imc()

exemplo:

<script type="text/javascript">
    function imc() {


   }
</script>

dentro dele você coloca todo seu codigo.

e o segundo erro é.. substitua a virgula dos valores.. por "ponto" ficando: 18.5

e por fim.. chame sua funçao no body com o evento: <body onload="imc();">

Editado por dif, 18 de março de 2012 - 22h37min.
melhorar a resposta

AMD FX 8120 Bulldozer @4.1Ghz, Asus M5A88-V Evo, Nvidia GeForce GTX 660Ti(2GB)
8GB DDR3 Dual Channel, Samsung HD322HJ Sata-II(320GB), Samsung HD502HI Sata-II(500GB)
Sony Optiarc DVD RW AD-7240S, LG FullHD(1080p) 21"

#3 cristianmtm

cristianmtm
  • Membros Plenos
  • 23 posts
  • Membro desde 17/07/2009
0
Neutra
  • Barueri, São Paulo

Postado 18 de março de 2012 - 23h15min

Olá de novo amigo.. agora no lugar certo. vejamos.. você tem 2 erros ai.

uma é que você colocou dentro de body direto.

crie dentro de head uma funçao chamada imc()

exemplo:

<script type="text/javascript">
    function imc() {


   }
</script>

dentro dele você coloca todo seu codigo.

e o segundo erro é.. substitua a virgula dos valores.. por "ponto" ficando: 18.5

e por fim.. chame sua funçao no body com o evento: <body onload="imc();">


Bem, meu professor me ensinou assim, colocar dentro de body. É que eu sou iniciante, não sei muita coisa, não aprendi função ainda e nem esse negócio de evento. Mesmo assim, usando meus poucos conhecimentos, eu fiz o que eu entendi: troquei as vírgulas por pontos e está funcionando perfeitamente. Se você quiser explicar, à vontade, senão, sem problemas. A propósito, você sabe como limitar as casas decimais dos resultados? Muuuuuuuito obrigado ^^


#4 dif

dif
  • Moderadores
  • 5.080 posts
  • Membro desde 17/04/2007
562
Excepcional
  • Pelotas-RS

Perfil Steam

Postado 18 de março de 2012 - 23h50min

serio que seu professor mandou colocar dentro de body? nada a ver isso.. nao entendo porque começar a ensinar "errado".

bom.. você pode usar o javascript em qualquer parte da esturura do site, mas é altamente recomendável que utilize dentro de head.

nao tem fundamento colocar um codigo javascript boiando dentro de body.

funçoes foram feitas para justamente serem mais fáceis de fazer a chamada.

por exemplo.. você tem vários botões... você pode utilizar uma funçao para cada.. segue um exemplo:

<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta charset="UTF-8">
  <title> Funçoes em java script </title>
<script type="text/javascript"> 
     function somar(){
          var num1, num2, resultado;
          num1 = parseInt(prompt("Insira um numero:"));
          num2=parseInt(prompt("Insira um numero:"));
          
         resultado = num1 + num2;
         alert("A soma de " + num1 + " + " + num2 + " é: " + resultado); 
     }


  function subtrair(){
        var num1, num2, resultado;
          num1 = parseInt(prompt("Insira um numero:"));
          num2=parseInt(prompt("Insira um numero:"));
          
         resultado = num1 - num2;
         alert("A subtração de " + num1 + " - " + num2 + " é: " + resultado); 
} 

</script>
</head>

<body>
   <input type="button" value="Somar" onclick="somar();" />
   <input type="button" value="subtrair" onclick="subtrair();" />
   
</body>
</html>




perceba que existem duas funçoes chamada somar() e subtrair() e elas estão sendo chamadas em um evento chamado "onclick" esse evento é referente ao clique do mouse no botao. se você substituisse o onclick por "onmouseouver" toda vez que você colocasse o mouse em cima do botao.. acionaria a funçao.

note que.. se você fizesse como seu professor disse.. e deixar solto.. a funçao nao será chamada. estão menos funcionaria corretamente.. onde ali há duas funçoes que fazem coisas diferentes.

isso é útil quando você precisa usar o java script para calcular.. ou manipular o dom.. também é importante frisar.. de que é muito melhor também você trabalhar com arquivos externos.. como por exemplo você cria um arquivo chamado scripts.js.. coloca todas as suas funçoes neste arquivo.. e você importa ele no head. isso alem de "limpar" seu codigo .. permite que você possa dar manutençao melhor.. como no caso de CSS ( folhas de estilo em cascata)

Para limitar as casas decimais use a funçao toFixed(num).

exemplo: imc=(peso/(altura*altura)).toFixed(2);

assim você limita apenas 2 casas depois da virgula

abraço

Editado por dif, 19 de março de 2012 - 00h06min.

AMD FX 8120 Bulldozer @4.1Ghz, Asus M5A88-V Evo, Nvidia GeForce GTX 660Ti(2GB)
8GB DDR3 Dual Channel, Samsung HD322HJ Sata-II(320GB), Samsung HD502HI Sata-II(500GB)
Sony Optiarc DVD RW AD-7240S, LG FullHD(1080p) 21"

#5 cristianmtm

cristianmtm
  • Membros Plenos
  • 23 posts
  • Membro desde 17/07/2009
0
Neutra
  • Barueri, São Paulo

Postado 23 de março de 2012 - 21h00min

serio que seu professor mandou colocar dentro de body? nada a ver isso.. nao entendo porque começar a ensinar "errado".

bom.. você pode usar o javascript em qualquer parte da esturura do site, mas é altamente recomendável que utilize dentro de head.

nao tem fundamento colocar um codigo javascript boiando dentro de body.

funçoes foram feitas para justamente serem mais fáceis de fazer a chamada.

por exemplo.. você tem vários botões... você pode utilizar uma funçao para cada.. segue um exemplo:

<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta charset="UTF-8">
  <title> Funçoes em java script </title>
<script type="text/javascript"> 
     function somar(){
          var num1, num2, resultado;
          num1 = parseInt(prompt("Insira um numero:"));
          num2=parseInt(prompt("Insira um numero:"));
          
         resultado = num1 + num2;
         alert("A soma de " + num1 + " + " + num2 + " é: " + resultado); 
     }


  function subtrair(){
        var num1, num2, resultado;
          num1 = parseInt(prompt("Insira um numero:"));
          num2=parseInt(prompt("Insira um numero:"));
          
         resultado = num1 - num2;
         alert("A subtração de " + num1 + " - " + num2 + " é: " + resultado); 
} 

</script>
</head>

<body>
   <input type="button" value="Somar" onclick="somar();" />
   <input type="button" value="subtrair" onclick="subtrair();" />
   
</body>
</html>




perceba que existem duas funçoes chamada somar() e subtrair() e elas estão sendo chamadas em um evento chamado "onclick" esse evento é referente ao clique do mouse no botao. se você substituisse o onclick por "onmouseouver" toda vez que você colocasse o mouse em cima do botao.. acionaria a funçao.

note que.. se você fizesse como seu professor disse.. e deixar solto.. a funçao nao será chamada. estão menos funcionaria corretamente.. onde ali há duas funçoes que fazem coisas diferentes.

isso é útil quando você precisa usar o java script para calcular.. ou manipular o dom.. também é importante frisar.. de que é muito melhor também você trabalhar com arquivos externos.. como por exemplo você cria um arquivo chamado scripts.js.. coloca todas as suas funçoes neste arquivo.. e você importa ele no head. isso alem de "limpar" seu codigo .. permite que você possa dar manutençao melhor.. como no caso de CSS ( folhas de estilo em cascata)

Para limitar as casas decimais use a funçao toFixed(num).

exemplo: imc=(peso/(altura*altura)).toFixed(2);

assim você limita apenas 2 casas depois da virgula

abraço


Hum, deu pra entender :D
Ah, e muito obrigado por ensinar a limitar o nº de casas, tinha perguntado pro prof mas ele disse que ensina igual pra todo mundo '*' Valeu mesmo!


#6 Mog.Lucas

Mog.Lucas
  • Moderadores
  • 4.356 posts
  • Membro desde 18/10/2008
204
Excepcional
  • São Paulo

Postado 05 de abril de 2012 - 13h11min

Caso o autor do tópico necessite, o mesmo será reaberto, para isso deverá entrar em contato com a moderação solicitando o desbloqueio.

Clube do Hardware | Aprendiz Senior de Remoção de Malware

~ Peace, Love, Unity & Respect for All ~
Gentileza Gera Gentileza
Beba com a Moderação!




0 usuário(s) está(ão) lendo este tópico

0 membros, 0 visitantes, 0 membros anônimos