Oii, Marcos! Tudo bem?
Parabéns pela dedicação e por ter concluído o desafio! Fico muito feliz em saber que a atividade foi mais tranquila do que você esperava. Essa sensação de "desmistificar" a dificuldade é um dos melhores sentimentos no aprendizado de programação.
Seu código tá muito funcional e você teve uma ótima sacada ao usar o isNaN para verificar se o usuário digitou realmente números. Isso é essencial para evitar erros inesperados e mostra cuidado com a experiência do usuário.
Como você pediu sugestões de melhoria, separei alguns pontos didáticos pra você levar seu código para o próximo nível:
1. Uso da variável resultado
Percebi que você declarou let resultado;, mas dentro dos if/else você acabou fazendo a conta direto dentro do alert (ex: ${numero1 + numero2}).
- Dica: Você pode atribuir o valor à variável
resultado primeiro e usar o alert apenas uma vez no final. Isso deixa o código mais limpo e evita repetição de comandos.
2. Tratamento da divisão por zero
Na matemática e na programação, dividir um número por zero é um problema.
- Dica: No bloco da divisão, você pode adicionar um
if para verificar se o numero2 é zero antes de calcular.
3. Modularização (o próximo passo!)
Pra deixar seu código mais profissional e fácil de dar manutenção, uma prática comum é separar as responsabilidades. Uma função cuida da interação (perguntas) e outras funções cuidam apenas da matemática.
Abaixo, deixo um exemplo de como aplicar essas melhorias, baseado na estrutura que você já criou, mas organizando um pouco mais:
// Funções separadas para cada operação (Responsabilidade única)
function adicao(a, b) { return a + b; }
function subtracao(a, b) { return a - b; }
function multiplicacao(a, b) { return a * b; }
function divisao(a, b) {
if (b !== 0) {
return a / b;
} else {
return "Erro: Divisão por zero não é permitida.";
}
}
function calcular() {
let numero1 = parseInt(prompt("Insira o primeiro número:"));
let numero2 = parseInt(prompt("Insira o segundo número:"));
let operacao = prompt("Insira a operação (+, -, *, /):");
// Sua validação ficou excelente! Mantive ela aqui.
if (isNaN(numero1) || isNaN(numero2)) {
alert("Foi digitado algum caractere errado, favor refazer cálculo");
return;
}
let resultado;
// Usando Switch Case (uma alternativa limpa ao if/else if)
switch (operacao) {
case '+':
resultado = adicao(numero1, numero2);
break;
case '-':
resultado = subtracao(numero1, numero2);
break;
case '*':
resultado = multiplicacao(numero1, numero2);
break;
case '/':
resultado = divisao(numero1, numero2);
break;
default:
alert("Operação inválida!");
return; // Encerra a função se a operação não for válida
}
// Exibe o resultado apenas uma vez
alert(`O resultado da operação é: ${resultado}`);
}
calcular();
Resumo das melhorias:
- Legibilidade: O
switch é ótimo quando temos muitas opções de escolha (casos), substituindo vários else if. - Reaproveitamento: Ao criar funções como
adicao ou subtracao, você poderia usá-las em outras partes do programa no futuro, sem precisar reescrever a fórmula.
Continue praticando assim! Você está no caminho certo. Se tiver dúvidas sobre essa estrutura nova, pode perguntar.
Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!