Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Semana 2] - Desafio: Hora da prática (Aula 3) - Resolução

Pessoal, estou abrindo esse tópico mais para analise de melhoria, tanto nos comentários quanto na aplicação das tarefas. Estou começando a entender bem como funcionam as funções e retornos, mas se houver contribuição para o nosso crescimento, já ajuda muito.

Utilizei como base para finalizar esse desafio: Documentação JS, vídeos sortidos de utilização dos operadores aritméticos, Forum Alura e IA para dissecar o problema e entender a proposta (leitura de código).

// TASK 1 - 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 calculoIMC(altura, peso) {
let IMC = peso / (altura * altura);
return IMC.toFixed(2);
}

let peso = parseFloat(prompt('Digite seu peso em quilogramas: '));
let altura = parseFloat(prompt('Digite sua altura em metros (utilizando ponto): '));

alert(Seu calculo de IMC com base em peso: ${peso} e altura: ${altura} é: ${calculoIMC(altura, peso)}.);

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

function calculoFatorial(numeroNatural) {
// Por definição matemática, o fatorial de 0 (0!) é 1, e o fatorial de 1 (1!) também é 1.
if (numeroNatural == 0 || numeroNatural == 1) {
// Se o número for 0 ou 1, a função para imediatamente e 'retorna' 1.
return 1;
}
// Criamos uma variável 'fatorial' para guardar o resultado acumulado.
// Ela começa com 1, porque 1 é o "elemento neutro" da multiplicação
// (qualquer coisa multiplicada por 1 é ela mesma).
let fatorial = 1;
// 'let i = 2': Ele cria um contador 'i' começando em 2.
// (Não precisa começar em 1, pois 'fatorial' já é 1, e multiplicar por 1 não mudaria nada).
// 'i <= numeroNatural': Ele vai continuar repetindo enquanto 'i' for menor ou igual ao número que você passou.
// 'i++': A cada volta, o 'i' aumenta em 1.
for (let i = 2; i <= numeroNatural; i++){
// 'fatorial = fatorial * i' pode ser feita em 'fatorial *= i;'
// A cada volta, ele multiplica o valor que já estava guardado em 'fatorial' pelo 'i' atual.
fatorial = fatorial * i;
}
return fatorial;
}

let numeroNatural = parseInt(prompt('Digite um numero natural de 0 a 10 para calcularmos seu fatorial'));

alert(O resultado fatorial de ${numeroNatural} é: ${calculoFatorial(numeroNatural)});

// TASK 3 - 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.

let dolar = parseFloat(prompt('Digite o valor para converter de dolar para real.'));

function converterDolar(dolar) {
let cotacaoDolar = 4.80;
resultadoConversao = dolar * cotacaoDolar;
return resultadoConversao.toFixed(2);
}

alert(O valor de US$${dolar} convertido para real fica em R$${converterDolar(dolar)});

// TASK 4 - 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 calculoDeArea(alturaArea, larguraArea) {
let calcArea = alturaArea * larguraArea;
let calcPerimetro = 2 * (alturaArea + larguraArea);
return A area do retangulo é de ${calcArea} metros quadrados, e o perímetro é de ${calcPerimetro} metros.;
}

let alturaArea = parseInt(prompt('Digite a altura do retangulo'));
let larguraArea = parseInt(prompt('Digite a lagura do retangulo'));

alert(calculoDeArea(alturaArea, larguraArea));

// TASK 5 - 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 calculoDeAreaCirculo(raioCirculo) {
// para PI pode ser utilizado o Math.PI para chamar o valor e utilizar o toFixed(2) para limitar as casas após o ponto decimal
let calculoAreaCirculo = Math.PI * (raioCirculo * raioCirculo);
let calculoPerimetroCirculo = Math.PI * (2 * raioCirculo);
return A área do circulo é de ${calculoAreaCirculo.toFixed(2)} metros quadrados, e o perímetro é de ${calculoPerimetroCirculo.toFixed(2)} metros.;
}

let raioCirculo = parseInt(prompt('Digite o raio do circulo'));

alert(calculoDeAreaCirculo(raioCirculo));

// TASK 6 - Crie uma função que mostre na tela a tabuada de um número dado como parâmetro.

function calculoTabuada(valorParaTabuada) {
for (let calcTab = 1; calcTab <= 10; calcTab++){
let resultadoTab = valorParaTabuada * calcTab;
console.log(${valorParaTabuada} x ${calcTab} = ${resultadoTab});
}
}

let valorParaTabuada = parseInt(prompt('Digite um valor para calcularmos a tabuada.'));
calculoTabuada(valorParaTabuada);

Garanta sua matrícula hoje e ganhe + 2 meses grátis

Continue sua jornada tech com ainda mais tempo para aprender e evoluir

Quero aproveitar agora
1 resposta
solução!

Oi Lucas! Como vai?

Parabéns pelo seu progresso e por estar buscando maneiras de melhorar seu código e entendimento sobre funções e listas! Vamos dar uma olhada nas suas soluções:

  1. Cálculo do IMC: Sua função calculoIMC está correta e bem implementada. A utilização de toFixed(2) é uma ótima escolha para limitar o número de casas decimais. Apenas tenha cuidado ao usar prompt e alert em ambientes que não suportam essas funções, como alguns editores de código online.

  2. Cálculo do Fatorial: Sua lógica está precisa e bem explicada. A inicialização do loop a partir de 2 é uma prática comum e eficiente. Muito bom!

  3. Conversão de Dólar para Real: A função converterDolar está correta. É sempre bom lembrar que a cotação pode variar, então talvez seja interessante deixar esse valor como um parâmetro da função no futuro.

  4. Área e Perímetro de um Retângulo: Sua função calculoDeArea está clara e bem estruturada. Apenas uma observação: ao pedir a altura e largura, certifique-se de que o usuário insira valores numéricos válidos para evitar erros.

  5. Área e Perímetro de um Círculo: A utilização de Math.PI é uma ótima prática para obter um valor mais preciso de Pi. Sua função está bem implementada!

  6. Tabuada: A função calculoTabuada está funcionando corretamente. Usar console.log é uma boa maneira de exibir os resultados no console do navegador.

No geral, suas soluções estão bem organizadas e funcionais. Continue praticando e explorando novas maneiras de otimizar e modularizar seu código.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!