programandoai

Passo 4: Igual e divisão por zero

A calculadora fecha a conta: o botão de igual calcula de verdade, e trata com cuidado o único caso que quebra a matemática.

Estudar esta lição interativa →

Chegou o botão de igual, que fecha a frase iniciada no passo anterior. Toda a matemática mora numa função separada, calcular(a, operador, b), que só recebe números e um símbolo e devolve um resultado: nenhuma linha dela toca o DOM. Separar "a conta" (lógica pura) de "o que aparece na tela" (efeito no DOM) é uma prática que vai te acompanhar em projetos cada vez maiores, porque uma função assim é fácil de testar sozinha, sem precisar simular clique nenhum, e é exatamente essa separação que torna o desafio final deste módulo possível.

A calculadora do exemplo também cuida das situações que quebram uma versão ingênua: digitar um número logo depois do igual começa uma conta nova (sem grudar no resultado), apertar um segundo operador encadeia a conta (2 + 3 + já calcula 5 antes de seguir), trocar de operador sem digitar nada mantém o número anterior, e o resultado é arredondado para esconder o ruído do ponto flutuante (0.1 + 0.2 aparece como 0.3, e não como 0.30000000000000004). Agora os botões % e ± também funcionam: ± troca o sinal do número que está no visor (5 vira -5, e -5 volta a 5), e % transforma o número do visor em porcentagem dele mesmo (50 vira 0.5, então 50 % × 8 = dá 4). Os dois são pequenos: mexem só em atual e no visor, sem tocar em calcular, e valem a leitura do final do código do exemplo. O resultado da conta é arredondado só na hora de mostrar na tela (a função formatar); a função calcular devolve o número exato.

Divisão por zero merece cuidado especial: matematicamente indefinida, em JavaScript ela não trava o programa, devolve Infinity. Mostrar "Infinity" numa calculadora pareceria um bug, não um resultado, então tratamos esse caso à parte, devolvendo null da função e mostrando uma mensagem amigável no visor.

🧩 Este conteúdo é interativo — abra no app para ver e rodar de verdade. Faça uma conta completa. Depois tente dividir por zero.

Por que null, e não 0 ou uma string de erro?

calcular normalmente devolve um number. Se ela devolvesse 0 para "erro", ficaria indistinguível do resultado real de 0 ÷ 5. Devolver null cria um sinal inconfundível de "isto não é um número válido", que quem chama a função pode checar com segurança antes de decidir o que mostrar.

← Voltar ao índice do curso