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

Ifs não funcionam, porque?

Estou tentando fazer o programa abaixo, com a diferença que ao invés de ter dados de peso e altura fixos no código, o usuário os digites e assim assim apareça as condições que estão dentro dos ifs. Mas, não aparece. Porque?

11 respostas

Faltou seu código!

faltou o código para sabemos o que você está errando..

`

Não estou conseguindo postar o código desde ontem. Copio e colo, mas não aparece. Sabem me explicar como faço? Obrigada.

Consegui resolver! No entanto tenho uma dúvida. Havia criado a seguinte função:

var calculaIMC = function(peso,altura){ var imc = peso/ (altura*altura); return imc; };

if(imc < 18.5){ mostra("Seu IMC esta abaixo do peso"); } if(imc > 35){ mostra("seu IMC esta acima do peso"); } if(imc > 18.5 && < 35){ mostra("Você esta no limite do peso"); }

No entanto se e chamar essa função no if não funciona. Porque? Porém ao tirar essa função e colocar a seguinte linha de código antes dos ifs funcionou...

var imc = peso/ (altura * altura);

Porque se eu chamar o return diretos não funciona? Preciso criar outra variável que receba a função e passar os parâmetros, como o fiz com o programa do jogo que segue abaixo:

var calculaPontos = function(vitorias, empates){ return (vitorias *3) + empates; };

pontosCDC = calculaPontos(vitoriasCDC, empatesCDC);

Mas, se fizer: return pontos; E ao chamar o retorno (pontos) e não passar parâmetros não funcionará? Os parâmetros só seriam passados na função. Algo mais ou menos assim:

var calculaPontos = function(vitorias, empates){ pontos = (vitorias * 3) + empates; return pontos; }; pontosCDC = pontos;

Porque?

Olá Vaniagomes_, dando uma olhada na sua primeira pergunta sobre a parte de código que você postou

1    var calculaIMC = function(peso, altura){ 
2        var imc = peso / (altura*altura); 
3        return imc; 
4    };
5
6    if(imc < 18.5){ 
7        mostra("Seu IMC esta abaixo do peso"); 
8    } 
9
10    if(imc > 35){ 
11        mostra("seu IMC esta acima do peso"); 
12    } 
13
14    if(imc > 18.5 && < 35){ 
15        mostra("Você esta no limite do peso"); 
16    }

verifiquei os seguintes erros:

Observe que você utiliza a variável imc a partir da linha 6, porém, antes disto ela não existe para o programa. Isto porque a variável imc que está dentro da função calculaIMC (linhas 2 e 3), só existe para a referida função, ou seja, assim que a função é chamada a variável imc é criada e tão logo a função termina essa variável também “morre”.

A forma de corrigir isto é, por exemplo, você colocar na linha 5 o código var imc = calculaIMC(85, 1.82);

Outro erro ocorre na linha 14 quando você faz: if(imc > 18.5 && < 35), repare que faltou a palavra imc depois de && e antes do <.

Vale lembrar também que seu código não apresenta nenhum parâmetro, então os ifs não sabem com o que comparar os valores limites do IMC.

Isto funciona:

<meta charset = "UTF8">

<script>
var mostra = function(frase){
    document.write(frase);
    pulalinha();
}

var pulalinha = function(){
    document.write("<br>");
}

var calculaIMC = function(peso, altura){ 
    var imc = peso / (altura*altura); 
    return imc; 
};

imc = calculaIMC(85,1.82);

if(imc < 18.5){ 
    mostra("Seu IMC esta abaixo do peso"); 
}; 

if(imc > 35){ 
    mostra("seu IMC esta acima do peso"); 
} 

if(imc > 18.5 && imc < 35){ 
    mostra("Você esta no limite do peso"); 
}

</script>

Quanto à segunda pergunta vale a mesma resposta: Uma variável criada dentro de uma função só existe dentro desta função, mesmo que a variável seja retornada via return (na verdade o que a função retorna é apenas um valor).

Espero ter ajudado. Abraço.

Olá Flavio! Agradeço à ajuda. Porém me confirme, por favor! Quando diz que a função retorna um valor, quer dizer que é apenas o valor final? Se quisesse que retornasse o cálculo teria de pedir pra retornar a "fórmula", chamá-la e passar os parâmetros, porque não pega os parâmetros da função, já que ela "morre" ao terminar. Ou seja, sempre terá que chamar a função ou o return e passar parâmetros? Qual a finalidade de usarmos funções mesmo? Obrigada.

solução!

Bem Vaniagomes_, as funções podem ou não retornar um valor (e também podem ou não precisarem de parâmetro). Isto depende do que você pretende que ela faça. Veja os exemplos:

Exemplo 1:

var pulalinha = function(){
   document.write(“<br>”);
}

É uma função simples que apenas pula uma linha na tela. Ela não requer nenhum parâmetro (por isso os parênteses de function() estão vazios) e também não retorna nada (por isso não tem o comando return).

Exemplo 2:

var calculaQuadrado = function(x){
   var quadrado = x * x;
   return quadrado;
}

Esta função solicita um parâmetro (num) e retorna o quadrado desse parâmetro.

Para acessar o que esta função retorna, você precisa ter uma variável (fora da função é claro) que receba esse retorno. Por exemplo: var quad = calculaQuadrado(4), para calcular o quadrado de 4.

O valor armazenado dentro de quad será 16, porque estamos passando o número 4 como parâmetro. Dentro da função a variável quadrado recebe como valor x x, ou seja, quadrado = 4 4. Se não colocarmos return quadrado a função fará o cálculo do mesmo jeito, porém, não teremos como acessar esse resultado. Vale lembrar também que a variável quadrado só existe dentro da função calculaQuadrado.

A função devolve o que você quiser. No Exemplo 2, apesar da “missão” da função ser calcular o quadrado de um número, nada impede que você retorne o cubo desse número (return quadrado * num) ou, no caso do JavaScript, até mesmo uma frase (return “Foi calculado o quadrado”;). Só que isto não faz sentido. O que precisa ficar claro é que a função pode retornar somente um valor por vez e esse valor é você quem decide o que será.

O uso de função é recomendado, principalmente, para agrupar códigos que seriam repetidos muitas vezes dentro do seu programa. Veja o caso da função pulalinha. Ela não precisa de nenhum parâmetro e não retorna nada, mas evita que você tenha que digitar sempre document.write(“”) quando precisar dar uma quebra de linha na sua tela.

Caso minha explicação tenha ficado confusa, dê uma olhada no capítulo 02 . Comunique-se com o usuário e, qualquer dúvida, por favor poste-a novamente.

Abraço.

Bom dia Flávio! Sua explicação foi ótima, muito obrigada. Entendi, e vou por mais em prática para ficar bem claro. Muito obrigada.

Valeu!

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