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

Não consegui entender como será aplicada as funções!

Não entendi porque a negação na condição. Se pesoEhValido e alturaEhValido forem true, é calculado o IMC normalmente. Porém se alguma delas for false, a condição de peso inválido ou altura inválida não deveria ser executada normalmente? Por que a negação?

Então, em calcula-imc.js, vamos criar a função validaPeso, que receberá um peso por parâmetro e retornará true se o peso estiver entre 0 e 1000, se não estiver o retorno será false:

// calcula-imc.js

function validaPeso(peso) {

    if (peso >= 0 && peso <= 1000) {
        return true;
    } else {
        return false;
    }
}

Do mesmo jeito vamos criar a função validaAltura:

// calcula-imc.js

function validaAltura(altura) {

    if (altura >= 0 && altura <= 3.00) {
        return true;
    } else {
        return false;
    }
}

Agora, ao invés de inicializarmos as variáveis pesoEhValido e alturaEhValida com true, vamos chamar as suas respectivas funções, que retornarão se os dados são ou não válidos:

// calcula-imc.js

var pesoEhValido = validaPeso(peso);
var alturaEhValida = validaAltura(altura);

E na hora de testar, vamos utilizar as variáveis também. Só que estamos testando se o peso ou a altura não são válidos. Então vamos utilizar o operador de negação (representado por um ponto de exclamação) à frente da variável:

// calcula-imc.js

if (!pesoEhValido) {
    console.log("Peso inválido!");
    pesoEhValido = false;
    tdImc.textContent = "Peso inválido";
    paciente.classList.add("paciente-invalido");
}

if (!alturaEhValida) {
    console.log("Altura inválida!");
    alturaEhValida = false;
    tdImc.textContent = "Altura inválida";
    paciente.classList.add("paciente-invalido");
}

Agora, com essas duas funções criadas, podemos chamá-las na função validaPaciente, em form.js.

3 respostas
solução!

As funções validaPeso e validaAltura retornam TRUE se o peso e a altura estão ok ou FALSE se não ok. As variáveis pesoEhValido e alturaEhValida vão ser atribuidas com esses valores booleanos. Se o pesoEhValido é TRUE , o resultado condição do IF (!pesoEhValido) ira ser FALSE,pois esta sendo negado e o bloco de comandos não será executado. Caso o pesoEhValido é FALSE, o resultado da condição será TRUE e o bloco será executado. Se apenas o peso é invalido, ira mostrar na tela "Peso inválido", no caso de apenas altura invalida: "Altura inválida". No caso das duas condições invalidas, aparecerá "Altura inválida" pois é o último bloco sendo validado.

Ótima explicação, esclareceu a minha dúvida e já posso dar prosseguimento aos meus estudos! Obrigado Jefferson!

Não esqueça de marcar a dúvida como solucionada pois ai fica mais fácil pro pessoal filtrar as questões ainda não solucionadas. ;-)