Entre para seguir isso  
Seguidores 0
cristianmtm

[Resolvido] Problema com Javascript

6 posts neste tópico

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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
melhorar a resposta

Compartilhar este post


Link para o post
Compartilhar em outros sites
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 ^^

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites
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!

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites
Visitante
Este tópico está impedido de receber novos posts.
Entre para seguir isso  
Seguidores 0