JavaScriptCondicionaisintermediario

Ano bissexto

Em sistemas que lidam com calendários, como agendas, feriados ou cálculo de prazos, saber se um ano é bissexto é essencial. Bibliotecas de data fazem isso automaticamente, mas quando você precisa implementar a lógica por conta própria — por exemplo, em um sistema legado ou validação de entrada — as regras precisam estar corretas. Dominar a combinação de operadores && e || para expressar condições compostas como essa evita bugs sutis que podem gerar erros de data em produção.

O PROBLEMA

Declare um ano e diga se é bissexto. Divisível por 4, exceto por 100, a menos que por 400.

EXEMPLO

ano=2000 → Bissexto
ano=1900 → Não bissexto

SOBRE O CONCEITO

Um ano bissexto segue a regra: divisível por 4, exceto se for divisível por 100, a menos que também seja divisível por 400. Isso significa que a condição de ser divisível por 400 tem precedência sobre a exceção do 100. O erro comum é escrever a condição na ordem errada, por exemplo, tratando a divisibilidade por 400 depois de negar os múltiplos de 100, o que faz com que anos como 2000 sejam incorretamente classificados. A forma correta é: if ((ano % 400 === 0) || (ano % 4 === 0 && ano % 100 !== 0)). Aqui, o || garante que se o ano for múltiplo de 400, a condição é verdadeira independentemente do resto; caso contrário, exige que seja múltiplo de 4 e não de 100. Usar && antes de || sem os parênteses adequados também pode alterar a precedência. Lembre-se: operadores lógicos têm precedência (! > && > ||), então parênteses são seus aliados para garantir a lógica desejada.

RESOLUÇÃO

Mais exercícios de Condicionais

JSC020 · IntermediárioOperador ternárioJSC005 · BásicoMaior entre doisJSC006 · BásicoDesconto simplesJSC012 · IntermediárioClassificação do IMC
Ver todos os exercícios de JavaScript