Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

código calculadora

Oi, pode me dar uma opinião?

function adicao(numerosParaSomar) {
    let numerosSomados = 0;
    for (let i = 0; i < numerosParaSomar.length; i++) {
        numerosSomados = numerosSomados + numerosParaSomar[i];
    }
    return numerosSomados;
}

function subtracao(numerosParaSubtrair) {
    if (numerosParaSubtrair.length === 0) {
        return 0;
    }
    let numerosSubtraidos = numerosParaSubtrair[0];
    for (let i = 1; i < numerosParaSubtrair.length; i++) {
        numerosSubtraidos = numerosSubtraidos - numerosParaSubtrair[i];
    }
    return numerosSubtraidos;
}

function multiplicacao(numerosParaMultiplicar) {
    let numerosMultiplicados = 1;
    for (let i = 0; i < numerosParaMultiplicar.length; i++) {
        numerosMultiplicados = numerosMultiplicados * numerosParaMultiplicar[i];
    }
    return numerosMultiplicados;
}

function divisao(numerosParaDividir) {
    if (numerosParaDividir.length === 0) {
        return 0;
    }
    let numerosDivididos = numerosParaDividir[0];
    for (let i = 1; i < numerosParaDividir.length; i++) {
        if (numerosParaDividir[i] !== 0) {
            numerosDivididos = numerosDivididos / numerosParaDividir[i];
        } else {
            alert('Não é possível dividir por 0!');
            return null;
        }
    }
    return numerosDivididos;
}

function calculadora(operacao, ...listaDeNumeros) {
    switch (operacao) {
        case 'soma':
            return adicao(listaDeNumeros);
        case 'subtracao':
            return subtracao(listaDeNumeros);
        case 'multiplicacao':
            return multiplicacao(listaDeNumeros);
        case 'divisao':
            return divisao(listaDeNumeros);
        default:
            return "Operação inválida.";
    }
}
1 resposta

Fala, Renata! Tudo bom?

Agradeço por trazer sua solução para o fórum!

Curti demais como trabalhou a função calculadora com switch para organizar operações em JavaScript, entendeu perfeitamente a importância da validação de divisão por zero para evitar erros e usou bem a estrutura de funções separadas para manter o código modular e legível.

Algo bem legal para complementar é usar os métodos nativos de array, como reduce(), para simplificar as operações. Dessa maneira:

function adicao(numeros) {
  return numeros.reduce((acc, num) => acc + num, 0);
}

function multiplicacao(numeros) {
  return numeros.reduce((acc, num) => acc * num, 1);
}

Isso faz com que o código fique mais enxuto e ainda mais fácil de manter.

E algumas boas práticas que você pode adotar são:

  • Validação: garantir que todos os elementos da lista sejam números antes de calcular.
  • Legibilidade: manter nomes de funções e variáveis claros para facilitar entendimento.
  • Generalização: permitir que a calculadora receba operações personalizadas além das básicas.

Continue postando as suas soluções! Além de ganhar pontos de XP na plataforma, você pode ajudar outros estudantes no fórum.

Ah, uma pergunta: você prefere manter a calculadora apenas com as quatro operações básicas ou já pensa em evoluir para incluir funções mais avançadas, como raiz quadrada e porcentagem?

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

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