1
resposta

otimizando o programa

Eu estava adiantando sobre o assunto de "if" de hoje pra adaptar pra uma função já , porém a minha função n funciona e eu n entendo porque. Segue o código:

<meta charset= "UTF-8">

<script>

    function pulaLinha(){
    document.write("<br>");
    document.write("<br>");
    }

    function draw(frases){
    document.write(frases);
    pulaLinha();
    }

    function calcularImc(peso,altura){
    return imc;
    }

    function imcIdeal(imc,ideal){
    if (imc < ideal){
    document.write("<br>" + "O seu imc é mais abaixo do que o normal");
    }
    }
    function outrasCondicoes(){
    if(imc > 35 ){
    document.write("<br>" + "O seu imc é mais alto do que o normal");
    }
    if(imc >= 18.5 && imc <= 35){
    document.write("<br>" + " O seu imc está excelente");
    }
    }
    // var ideal é a variavél que fala do imcIdeal
    var ideal= 18.5;
    var nome = prompt( "Diga seu Nome");
    var alturaInformada= prompt( nome + "Informe sua Altura");
    var pesoInformado= prompt( nome + "Informe seu Peso");
    var imc= pesoInformado / (alturaInformada * alturaInformada);

    document.write(nome + "o seu imc é " + imc);
    imcIdeal(imc,ideal);

    </script>
1 resposta

Olá Antônio, tudo bem?

O código apresentado contém alguns erros que estão afetando o funcionamento da função. Vou destacar os problemas encontrados:

  1. Falta de declaração da variável imc na função calcularImc(): No momento, a função calcularImc() não está retornando um valor válido para a variável imc. É necessário calcular o IMC dentro dessa função e retornar o valor correto. Aqui está uma possível correção:

         function calcularImc(peso, altura) {
         var imc = peso / (altura * altura);
         return imc;
         }
  2. Escopo das variáveis: As variáveis imc e ideal foram definidas fora das funções, mas são utilizadas dentro delas. É necessário passar essas variáveis como parâmetros para as funções que as utilizam, ou definir essas variáveis dentro das funções onde são necessárias. Sugiro a opção de passar como parâmetros, conforme mostrado abaixo:

             function imcIdeal(imc, ideal) {
             // Resto do código da função
         }
    
         function outrasCondicoes(imc) {
             // Resto do código da função
         }
    
         // Chamadas das funções com as variáveis passadas como parâmetros
         imcIdeal(imc, ideal);
         outrasCondicoes(imc);
  3. Chamada da função outrasCondicoes(): A função outrasCondicoes() não está sendo chamada em lugar algum do código atual. É necessário incluir a chamada a essa função após a chamada da função imcIdeal(). Por exemplo:

         imcIdeal(imc, ideal);
         outrasCondicoes(imc);
  4. Formatação HTML: No trecho <meta charset= "UTF-8">, faltou fechar as aspas duplas corretamente. O código deve ser ajustado para <meta charset="UTF-8">.

Com essas correções, o código ficaria assim:

        <meta charset="UTF-8">

        <script>
            function pulaLinha() {
                document.write("<br>");
                document.write("<br>");
            }

        function draw(frases) {
            document.write(frases);
            pulaLinha();
        }

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

        function imcIdeal(imc, ideal) {
            if (imc < ideal) {
                document.write("<br>" + "O seu imc é mais abaixo do que o normal");
            }
        }

        function outrasCondicoes(imc) {
            if (imc > 35) {
                document.write("<br>" + "O seu imc é mais alto do que o normal");
            }
            if (imc >= 18.5 && imc <= 35) {
                document.write("<br>" + "O seu imc está excelente");
            }
        }

            var ideal = 18.5;
            var nome = prompt("Diga seu Nome");
            var alturaInformada = prompt(nome + " Informe sua Altura");
            var pesoInformado = prompt(nome + " Informe seu Peso");
            var imc = calcularImc(pesoInformado, alturaInformada);

            document.write(nome + ", o seu imc é " + imc);
            imcIdeal(imc, ideal);
            outrasCondicoes(imc);
    </script>

Com essas alterações, o código deverá funcionar corretamente, calculando o IMC com base no peso e altura informados, e exibindo as mensagens adequadas de acordo com o resultado do IMC.

Espero ter ajudado, abraços.