3
respostas

[Sugestão] Desafio: hora da prática

Estou compartilhando minha resolução do desafio, utilizei o HTML com botões das aulas anteriores e reutilizei neste exercício, assim cada botão chama uma parte do exercício, nesse caminho encontrei alguns desafios e consegui descobrir algumas coisas novas vou descrever abaixo. Utilizei o .replace para evitar que o código desse erro quando o usuário utilizasse uma "," ao inves do ".". Já o .toFixed e o método que utilizei para arredondar os números. E o Math.Pi utilizei para substituir o valor 3,14 encontrei ele no w3schools, junto com os demais métodos.

Segue abaixo minhas resoluções

HTML...

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="style.css">
    <title>Desafio: hora da prática</title>
</head>
<body>
    <header>
        <h1></h1>
    </header>
    <main class="container">
        <button onclick="chamarImc()" class="button">IMC</button>
        <button onclick="chamarCalcFatorial()" class="button">Fatorial</button>
        <button onclick="chamarDolar()" class="button">Dolar</button>
        <button onclick="chamarCalcRetangulo()" class="button">Perímetro Retangular</button>
        <button onclick="chamarCalcCircular()" class="button">Perímetro Circular</button>
        <button onclick="chamarTabuada()" class="button">Tabuada</button>
    </main>

      <script src="app2.js"></script>
</body>
</html>
3 respostas
//Crie uma função que calcule o índice de massa corporal (IMC) de uma pessoa, a partir de sua altura, em metros, e peso, em quilogramas, que serão recebidos como parâmetro.

function calcImc(alt, kg){
    //Fórmula do IMC: peso / (altura^2)
    let imc = (kg /(alt * alt));
    return imc;
}

function chamarImc(){
    let nome = prompt('Insira seu nome:');
    let altura = Number(prompt('Insira sua Altura:').replace(',', '.'));
    let peso = Number(prompt('Insira seu peso em Kg:').replace(',', '.'));
    let resultado = calcImc(altura, peso).toFixed(2);
    console.log(resultado);
    let categoria;
    // Aqui estamos pegando o resultado e usando o índice para indicar a categoria na qual o usuário se encontra.
    if(resultado < 18.5){
       categoria = 'Você está abaixo do Peso!';
    } else if(resultado >= 18.5 && resultado <25){
        categoria = 'Seu IMC está normal!';
    }else if (resultado >= 25 && resultado <30) {
        categoria = 'Você está com Sobrepeso!';
    }else if(resultado >=30 && resultado < 34.99){
        categoria = 'Você está com obesidade de grau I';
    } else if(resultado >=35 && resultado < 39.99){
        categoria = 'Você está com obesidade de grau II';
    } else{
        categoria = 'Você está com obesidade de grau III';
    }

    alert(`${nome} seu imc é ${resultado}, ${categoria}`);
}

//Crie uma função que calcule o valor do fatorial de um número passado como parâmetro.

function calcFatorial(num) {
    //começamos com IF para ver se o numero e negativo
    if(num < 0){
        return 'Não e possivel calcular um número negativo';
    }
    //Em seguida precisamos verificar se o numero é 0
    if(num == 0){
        return 'O fatorial de 0 é 1';
    }
    // variavel para o resultado
    let resultado = 1;
    //variavel contador
    let cont = 1;
    //O loop dessa maneira esta: enquanto o contador for menor ou igual ao numero informado...
    while(cont <= num ){
        //esta operação esta mutiplicando o resultado por cont e o resultado e atribuido de volta em resultado.
        resultado *= cont;
        //incrementa o contador
        cont++
    }
    return resultado;
}

//essa função e usado no onclick do html chamando calcfatorial e emitindo um alerta para apresentar o resultado.
function chamarCalcFatorial() {
    let fatorial = Number(prompt('Insira um número para calcular o fatorial:'));
    let fatorado = calcFatorial(fatorial);
    alert(`Você inseriu o número -> ${fatorial} \nResultado: ${fatorado}`);
}


//Crie uma função que converte um valor em dólar, passado como parâmetro, e retorna o valor equivalente em reais. Para isso, considere a cotação do dólar igual a R$4,80.

function converterDolar(valor) {
    let resultado = (valor / 4.8);
    return resultado;    
}

function chamarDolar() {
    let valor = Number(prompt('Insira o valor que deseje converter em dolar').replace(',', '.'));
    let valorConvertido = converterDolar(valor);
    alert(`O valor que você inseriu:R$${valor}\nDolar: USD$${valorConvertido.toFixed(2)}`);
}

//Crie uma função que mostre na tela a área e o perímetro de uma sala retangular, utilizando altura e largura que serão dadas como parâmetro.
function calcRetangulo(altura, largura) {
    let area = altura * largura;
    let perimetro = 2 * (altura + largura);
    return {area, perimetro};
}

function chamarCalcRetangulo() {
    let altura = Number(prompt('Bem vindo!\nPara calcular, digite a altura:'));
    let largura = Number(prompt('Bem vindo!\nPara calcular, digite a largura:'));
    let resultado = calcRetangulo(altura, largura);
    console.log('Área:', resultado.area);
    console.log('Perímetro:', resultado.perimetro);
    alert(`Área -> ${resultado.area.toFixed(2)}\nPerímetro -> ${resultado.perimetro.toFixed(2)}`);

}
//Crie uma função que mostre na tela a área e o perímetro de uma sala circular, utilizando seu raio que será fornecido como parâmetro. Considere Pi = 3,14.

function calcCircular(raio) {
    let area = Math.PI * (raio * raio);
    let perimetro = 2 * Math.PI * raio;
    return {area, perimetro};    
}

function chamarCalcCircular() {
    let raio = Number(prompt('Insira o Raio:'));
    let perimetro = calcCircular(raio);
    console.log('Área:', perimetro.area);
    console.log('Perímetro:', perimetro.perimetro);
    alert(`Área -> ${perimetro.area.toFixed(2)}\nPerímetro -> ${perimetro.perimetro.toFixed(2)}`);

}

continuação....


//Crie uma função que mostre na tela a tabuada de um número dado como parâmetro.
function tabuada(num) {
    let tabuada = num;
    let contador = 1;
    //preciso dessa variavel para armazenar os dados com string, pois como se trata de varios numeros, e quero insirir isso em um alert, essa foi a maneira que encontrei para contornar.
    let returnTabuada = "";
    //inicia a tabuado de 1 a 10
    while(contador <= 10){
        let resultado = contador * tabuada;
        //aqui ele mostra a tabuada exemplo 8*3 = 24
        returnTabuada += `${tabuada} x ${contador} = ${resultado}\n`;
        console.log(resultado);
        contador++;
    }   
    return returnTabuada; //Dessa maneira enviamos uma string para o chamarTabuada 
}

//aqui chamamos a função e exibimos no HTML.
function chamarTabuada(){
    let num = Number(prompt('Escreva o numero que deseja da tabuada:'));
    let resultado  = tabuada(num);
    alert(resultado);
}

Com relação ao seu código da questão 6, eu dei uma otimizada, só não fiz a parte para exibir no html.

let numeroBase = prompt('Digite um número para a tabuada?');

let returnAlert = '';

function tabuada(numeroBase) {
    for (let multiplicador = 1; multiplicador <= 10; multiplicador++) {
        let resultado = numeroBase * multiplicador;
        returnAlert += `${numeroBase} x ${multiplicador} = ${resultado}\n`;
    }
}

tabuada(numeroBase);
console.log(returnAlert);
alert(returnAlert);