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

[Dúvida] Desafio 3, exercícios 2, 4 e 5.

Olá, tudo bem?

Estava fazendo o Exercício 2 - Crie uma função que calcule o valor do fatorial de um número passado como parâmetro, mas não entendi muito bem o código que permitiu que o exercício funcionasse. Utilizei a instrução while e pesquisei na internet como poderia calcular o fatorial de um número em JavaScript.

O site utilizado foi o https://www.geeksforgeeks.org/javascript/factorial-of-a-number-using-javascript/, e a parte do código que utilizei foi a seguinte:

// (3. Using a While Loop)

function fact(n) {
    let res = 1;
    while (n > 1) {
        res *= n;
        n--;
    }
    return res;
}
console.log(fact(5));

Meu código ficou desta maneira (bem similar ao código do site):

function valorFatorial (numeroFatorial) {
    let calculoFatorial = 1;
    while (numeroFatorial > 1) {
        calculoFatorial *= numeroFatorial;
        numeroFatorial--;
    }
    return calculoFatorial;
}

console.log(valorFatorial(prompt('Digite um número para descobrir seu fatorial:')));

Porém, não entendi por que foi necessário declarar "let (variável) = 1;" nesse caso. Enquanto estava fazendo meu código, tentei apagar o "= 1;" e colocar "= prompt('Digite um número');", mas não funcionou (após atualizar a página, o prompt não aparecia mais na tela). É realmente necessário utilizar o "=1;" por conta da instrução while, ou seria possível removê-lo e fazer de outra maneira?

Além disso, em alguns casos durante a resolução dos exercícios, o prompt() não aparecia na tela quando estava dentro da function. O que posso ter feito de errado no código para isso acontecer?

Agora, em relação ao Exercício 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 (seria o mesmo tipo de dúvida para o quinto exercício):

let altura = parseFloat(prompt('Digite um valor para a altura:'));
let largura = parseFloat(prompt('Digite um valor para a largura:')); 

function calculoAreaPerimetro (altura, largura) {
    let area = altura * largura;
    let perimetro = 2 * (altura + largura);
    console.log('Valor da altura:', altura, 'Valor da largura:', largura);
    console.log(`Área: ${area} m². Perímetro: ${perimetro} m².`);
} 

calculoAreaPerimetro(altura, largura);

Como poderia escrever um código para fazer com que a mensagem final do console.log() (Área: m². Perímetro: m².) ficasse após a chave final ( } ) da function?

Nesse exercício, também não consegui utilizar a instrução return, acredito que errei em alguma coisa durante o código. Consegui fazer com que o exercício funcionasse apenas colocando o console.log() dentro da function.

Desde já, agradeço.

2 respostas
solução!

Oi Diego, tudo bem?

Vamos por partes para tentar esclarecer suas dúvidas!

Exercício 2 - Fatorial

  1. Por que let res = 1;? a variável res é inicializada com o valor 1 porque o fatorial de um número é o produto de todos os números inteiros positivos até aquele número.

    Se começássemos com 0, qualquer multiplicação resultaria em 0, o que não é o resultado desejado. Então, começamos com 1 para garantir que a multiplicação funcione corretamente.

  2. Uso do prompt() dentro da função: quando você coloca o prompt() dentro da função, ele só será executado quando a função for chamada. Se você não está vendo o prompt(), pode ser que a função não esteja sendo chamada corretamente.

    No seu exemplo, o prompt() está fora da função, o que é uma prática comum quando você quer pegar dados antes de executar a função.

Exercício 4 - Área e Perímetro

  1. console.log() fora da função: para que o console.log() seja executado após a chave final da função, você precisa retornar os valores da função e depois fazer o console.log() com esses valores. Veja um exemplo:

    function calculoAreaPerimetro(altura, largura) {
        let area = altura * largura;
        let perimetro = 2 * (altura + largura);
        return { area, perimetro };
    }
    
    let altura = parseFloat(prompt('Digite um valor para a altura:'));
    let largura = parseFloat(prompt('Digite um valor para a largura:')); 
    let resultados = calculoAreaPerimetro(altura, largura);
    console.log(`Área: ${resultados.area} m². Perímetro: ${resultados.perimetro} m².`);
    

    Aqui, a função calculoAreaPerimetro retorna um objeto com a area e o perimetro, e depois você usa esses valores para exibir a mensagem.

  2. Uso do return: o return é usado para enviar um valor de volta de uma função para o ponto onde a função foi chamada. No exemplo acima, usamos return { area, perimetro }; para retornar um objeto contendo a área e o perímetro, que pode ser usado fora da função.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.

Olá, Armano! Espero que esteja bem.

Excelente, compreendi claramente a explicação dos exercícios. Muito obrigado pela ajuda e atenção.

Ótimo dia para você!