Solucionado (ver solução)
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

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software