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

Lógica de programação com JS

Estava tentando criar usuários no Js pra calcular o IMC de cada um, de forma individual, e pra isso eu fiz o seguinte:

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

        function mostra(frase) {
            document.write(frase);
            pulaLinha();
        }


        function calculaImc(altura, peso) {
            var imc = peso / (altura * altura) + 1;
            mostra("O imc calculado é" + imc)
        }


        calculaImc(1.71, 73);
        calculaImc(1.55, 48);

        function user() {
            constructor (nome, idade, imc) 
            {
                this.nome = nome;
                this.idade = idade;
                this.imc = calculaImc;
            }
        }

        new user ("Isabel", 22, (1.55,48))

        document.write (user);
    </script>

Eis que o objetivo da aula era transmitir as coisas do Js para o Html, então comecei a inventar, mas não sei agora o porquê do meu código não funcionar. Resolvi enviar a dúvida aqui para o fórum e enquanto isso, continuar tentando. Se eu conseguir arrumar, vou vir e deixo um comentário, mas se não tiver nada de comentários meus, por favor, me ajuda auhauha obrigada! ^ ^

4 respostas

Oi Isa, tudo bem?

Quando você faz:

function user() {
    constructor (nome, idade, imc) 
    {
        this.nome = nome;
        this.idade = idade;
        this.imc = calculaImc;
    }
}

Acredito que o que você quer mesmo é uma classe, e não uma função, né?

Tente alterar para:

class user {
    constructor (nome, idade, imc) 
    {
        this.nome = nome;
        this.idade = idade;
        this.imc = calculaImc;
    }
}

E veja se seu código irá executar como esperado.

solução!

Foi o que eu pensei, mas quando fiz essa alteração, não deu certo:

function imc(peso, altura) {
    peso / (altura * altura);
}

class user {
    get imc () {
        return this.imcCalculo
    }

    constructor(nome, imc, idade) {
        this.nome;
        this.imc;
        this.idade;
    }
}


const user1 = new user("Isabel", 1.55, 48, 22);


console.log(user1);

Aí eu quando dou console.log(user1), só aparecer como resultado a seguinte sentença:

User {}

Oi Isa,

Tente assim:

function imc(peso, altura) {
    let result = peso / (altura * altura);
    return result;
}

class user {

    constructor(nome, altura, peso, idade) {
        this.nome = nome;
        this.imc = imc(peso, altura);
        this.idade = idade;
    }
}


const user1 = new user("Isabel", 1.55, 48, 22);


console.log(user1);

Tem alguns pontos a serem comentados:

  • Você estava passando 4 parâmetros mas no construtor ele esperava apenas três;
  • Você no construtor se esqueceu de atribuir nas propriedades da classe os valores que recebeu;
  • A forma como estava fazendo para obter o imc estava errada.