Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
12
respostas

Estou com dúvida no curso de Lógica de Programação, no exercício do capítulo Pratique resolvendo problemas do seu dia a dia. Ex 3

Acredito q poderia até dar uma reforçadinha na aula, não que a explicação não ficou boa, é pq começa complicar apartir daí.

O meu código funcionou em partes, e eu gostaria de saber o pq do não funcionamento.


<script>

var mostra = function(frase){
    document.write(frase);
};

var calculaIMC = function(altura, peso) {
    var imc = peso / (altura^2);
    mostra("Meu IMC é: " +imc.toFixed(2) + " e estou a "+ calculaobeso + " KG da obesidade." );
    return imc;
};



var minha_altura = 1.73;
var meu_peso = 80;
var obeso = 35;
var calculaobeso = obeso - calculaIMC;
calculaIMC(minha_altura, meu_peso);



</script>
12 respostas

Veja que na linha var calculaobeso = obeso - calculaIMC; tu chamou a calculaIMC mas não passou nenhum parâmetro para a função. Tu não falou o erro que está dando, mas isso pode ser a causa.

Desculpe-me pela displicência, copie e ñ colei o erro:Meu IMC é: 26.67 e estou a NaN KG da obesidade.

Mas quando eu declaro var obeso=35; já ñ passo parâmetro? isso q me deixou encafifado.

Acontece da gente esquecer. Mas tenho dúvidas em relação de na declaração da variável tu já estar usando a chamada da função calculaImc. Nesse ponto, imagino eu, tu deveria também passar as variáveis exigidas pela função.

vc fala calculaIMC(minha_altura, meu_peso)?

Na linha

var calculaobeso = obeso - calculaIMC;

A função calculaIMC está sendo chamada sem a passagem dos parâmetros.

Não rolou... e eu não entendi pq...

Pode ser uma limitação existente. Tenta criando uma função para calcular o quão obeso tu é e dentro dela tu chama a calculaIMC.

Oi Jardel,

Veja que ali você colocou var imc = peso / (altura^2);. O ^ não funciona. Multiplicação é *.

Tenta corrigir isso e me diz se funcionou, ok?

Um abraço!

Olá Maurício, não é isso não, troquei e fica a mesma coisa... ´´´

´´´
<script>

var mostra = function(frase){
    document.write(frase);
};

var mostra = function(frase){
    document.write(frase);
};

var calculaIMC = function(altura, peso) {
    var imc = peso / Math.pow(altura,2);
    mostra("Meu IMC é: " +imc.toFixed(2) + " e estou a "+ calculaobeso + " KG da obesidade." );
    return imc;
};



var minha_altura = 1.73;
var meu_peso = 80;
var obeso = 35;
var calculaobeso = obeso - calculaIMC;
calculaIMC(minha_altura, meu_peso);




</script>

Maurício, depois de uma semana deu certo aqui! Mas preciso q vc me explique o pq de a variavel calcula_obeso ter q ficar dentro da função e não fora como as demais. O script fica assim:

<script>

var mostra = function(frase){
    document.write(frase);
};

var calculaIMC = function(altura, peso) {
    var imc = peso / Math.pow(altura,2);
    var calculaobeso = obeso - imc;
    mostra("Meu IMC é: " +imc.toFixed(2) +" <br> e estou a "+ calculaobeso.toFixed(2) + " KG da obesidade." );

    return imc;

};



var minha_altura = 1.73;
var meu_peso = 80;
var obeso = 35;
calculaIMC(minha_altura, meu_peso);

</script>
`
solução!

Fica dentro por conta do escopo da variável. Significa que ela só tem motivo para existir dentro daquele contexto. Quando você usa uma função, não quer saber como ela faz, e sim o que ela faz. Você passa o peso e a altura e quer que ela te retorne somente o valor do imc. Como ela faz isso? Problema dela. Então as variáveis que são criadas dentro da função só tem motivo para existir dentro dela, sendo apagadas ao sair.

[]s