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

[Sugestão] Aula 3 "Reiniciando o jogo" - Desafio - Minha Solução

Olá, segue minha solução.

Criei um HTML com 6 botões, que invocam os funcionalidades desejadas.

<!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>Document</title>
</head>
<body>
    <header>
        <h1></h1>
    </header>
    <main class="container">
        <button onclick="IMCButton()" class="button">1. IMC</button>
        <button onclick="fatorialButton()" class="button">2. Fatorial</button>
        <button onclick="converteDolaresEmReaisButton()" class="button">3. Converte R$ em $</button>
        <button onclick="retanguloButton()" class="button">4. Área e perímetro de um retangulo</button>
        <button onclick="circuloButton()" class="button">5. Área e perímetro de um círculo</button>
        <button onclick="tabuadaButton()" class="button">6. Tabuada</button>
    </main>

      <script src="app.js"></script>
</body>
</html>

No javascript, separei a parte de interação com o usuário da parte com a lógica (as funções do exercício)

function IMCButton(){
  console.log('IMCButton()');
  let peso = prompt('Peso em quilogramas');
  let altura = prompt('Altura em metros');
  let IMCValue = IMC(peso, altura);
  alert (`IMC igual a ${IMCValue} kg/m2`);
}

function fatorialButton(){
  console.log('fatorialButton()');
  let numero = prompt('Digite un número maior ou igual a zero');
  let fatorialValue = fatorial(numero);
  alert(`O fatorial de ${numero} é ${fatorialValue}`)
}

function converteDolaresEmReaisButton(){
  console.log('converteDolaresEmReaisButton()');
  let valorReais = prompt('Digite o valor em R$');
  let valorDolares = converteDolaresEmReais(valorReais);
  let texto = valorReais == 1 ? 'é equivalente' : 'são equivalentes';
  alert(`${valorReais} R$ ${texto} a ${valorDolares} $`)
}

function retanguloButton(){
  console.log('retanguloButton()');
  let lado1 = parseInt(prompt('Comprimento primeiro lado:'));
  let lado2 = parseInt(prompt('Comprimento segundo lado:'));
  let [perimetro, area] = retangulo(lado1, lado2);
  alert(`Área: ${area} - Perímetro: ${perimetro}`);
}

function circuloButton(){
  console.log('circuloButton()');
  let raio = parseFloat(prompt('Comprimento raio:'));
  let [perimetro, area] = circulo(raio);
  alert(`Área: ${area} - Perímetro: ${perimetro}`);
}

function tabuadaButton(){
  console.log('tabuadaButton()');
  let numero = parseInt(prompt('Digite um número positivo'));
  tabuada(numero);
}

function IMC(peso, altura){
  console.log('IMC()');
  return peso/(altura*altura);
}

function fatorial(numero){
  console.log('fatorial()');
  let fatorialValue = 0;
  if(numero == 0){
    fatorialValue = 1;
  }
  else{
    fatorialValue = numero*fatorial(numero -1);
  }
  return fatorialValue;
}

function converteDolaresEmReais(reias){
  console.log('converteDolaresEmReais()');
  let taxaConversão = 4.8; 
  return reias * taxaConversão;
}

function retangulo(lado1, lado2){
  console.log('retangulo()')
  let perimetro = 2*(lado1 + lado2);
  let area = lado1*lado2;
  console.log(`Área: ${area} - Perímetro: ${perimetro}`)
  return [perimetro, area];
}

function circulo(raio){
  console.log('circulo()') 
  console.log(Math.PI); // Não uso Math.PI porque no exercício pede para considerar 3.14
  let pi = 3.14; 
  let perimetro = 2*pi*raio;
  let area = pi*raio*raio;
  return [perimetro, area];
}

function tabuada(numero){
  console.log('tabuada()');
  textoTabuada = '';
  for(let i = 0; i < 10; i++){
    textoTabuada = textoTabuada + `\n${numero} x ${i+1} = ${numero*(i+1)}`;
  }
  alert(textoTabuada);
}
2 respostas
solução!

Oi, Agostino. Como vai?

Agradeço por compartilhar.

Gostei da forma como você organizou a solução, separando as funções de interação, como IMCButton() e fatorialButton(), da lógica principal. Isso mostra um cuidado importante com a estrutura do projeto e deixa o código mais fácil de entender e manter. Também chamou atenção a ideia de reunir tudo em um HTML com 6 botões, criando uma interface simples para testar cada exercício de forma prática.

Você pode validar os valores digitados antes de executar os cálculos. Isso ajuda a evitar resultados inesperados quando o usuário digita texto no prompt.


let numero = parseFloat(prompt('Digite um numero'));

if (isNaN(numero)) {
  alert('Digite um valor valido');
} else {
  alert(`Numero recebido: ${numero}`);
}

Nesse código, parseFloat() converte o valor digitado e isNaN() verifica se a entrada realmente é um numero.

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

Obrigado, Lorena!

Estava pensando num jeito de fazer a validação que não fosse muito complicado e achei sua sugestão muito útil!