Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Porque o iMC aparece em outra linha?

Na execucao do código o IMC calculado aparece em outra linha. Nao entendi porque.

<meta charset="UTF-8">

<script>

function pulaLinha(){

    document.write("<br>");
}

function mostra(frase){

    document.write(frase);
    pulaLinha();

}

var alturaJanile = 1.75;
var pesoJanile = 57;
var imcJanile = pesoJanile/(alturaJanile*alturaJanile);

mostra("<h1>O IMC de Janile é:</h1>  " + imcJanile);

</script>
3 respostas
solução!

A tag h1 pula linha por padrão. Como se ela tivesse um br embutido. No mundo html essas tags são do tipo block.

Tudo bem Janile?

Oi Flavio. Tudo tranquilo! Tuas aulas tem sido de grande ajuda. Moro na Argentina, mas sou brasileira e estudo Ingeniería en Sistema aqui. Queria te fazer outra consulta.

Com o codigo que segue o console me diz que a variavel imc nao esta definida. Seria porque ela está definida somente dentro da funcao e a unica possibilidade seria colocar o "mostra" dentro da propria funcao?

<meta charset="UTF-8">

<script>

function pulaLinha(){

    document.write("<br>");
}

function mostra(frase){

    document.write(frase);
    pulaLinha();

}

function calculaImc(peso, altura){

    var imc = peso / (altura * altura);
}

var alturaJanile = 1.75;
var pesoJanile = 57;

//usaria esto si no hubiese la funcion calculaImc
// var imcJanile = pesoJanile/(alturaJanile*alturaJanile);

calculaImc(pesoJanile, alturaJanile)
mostra("<h1>O IMC de Janile é:</h1>  " + imc);

</script>

Oi Janile. Não lembro ao certo em que ponto do curso você esta, mas vou explicar o que acontece.

Toda variável declarada com var dentro de uma função só existe dentro dessa função. É o que chamamos de escopo de uma função. Pense em uma função como uma caixa preta que você passa alguma informação para ela.. ela gera alguma coisa.

Ao longo do curso, você aprenderá fazer com que a função receba parâmetros (isso você já aprendeu), mas também que seja capaz de retornar um valor. Sendo assim, você passar algo para a função, ela digere essa informação e aplicar alguma lógica e no final retorna o resultado da operação.

Sendo assim, no caso da função calculaIMC ela recebe a altura e o peso e o que ela deve devolver, retornar? O IMC calculado, certo?

Então, nesse estágio que você está, a única maneira de ter acesso a esse IMC calculad é dentro da própria função, por isso você pensou em usar o mostra dentro dela. Mas evoluindo com o curso você aprenderá fazer uma função retornar um valor, cuspir para fora dela uma das variáveis que foram declaradas dentro dela. Isso a permitirá fazer assim:

var alturaJanile = 1.75;
var pesoJanile = 57;


var imcDaJamile = calculaImc(pesoJanile, alturaJanile);

Só não vou explicar ainda a questão do retorno de uma função porque você ainda aprenderá no curso. Agora veja que se a função calculaImc só calcula o IMC retornando-o para uma variável, você pode usar a função mostra para exibir o imcDaJamile sem ter que deixar fixo dentro de calculaImc a função mostra.

Consegui lançar uma luz sob esse problema? Então, fique tranquila que você aprenderá no curso a retornar valores de funções.