🎯 O que você vai aprender nesta aula:
- A matemática e a lógica por trás dos anos bissextos.
- Como usar o operador de resto de divisão (
%) junto com operadores lógicos. - Criar o algoritmo manual clássico cobrado em faculdades e testes lógicos.
- Como usar o "jeito sênior" com a função nativa
date()do PHP.
Todo programador, em algum momento da vida, vai precisar lidar com datas. E quando o assunto é data, fevereiro é sempre o mês problemático. Neste tutorial de PHP, vamos unir o que aprendemos sobre OPERADORES LÓGICOS para criar um script que descobre se um ano tem 365 ou 366 dias.
Como saber se um ano é bissexto no PHP?
Para verificar se um ano é bissexto em PHP, você pode usar uma equação lógica avaliando se o ano é múltiplo de 400, ou se é múltiplo de 4 mas não de 100. Alternativamente, basta usar a função nativa do PHP date('L', mktime(0, 0, 0, 1, 1, $ano)), que retorna 1 (TRUE) para anos bissextos.
A Lógica de Programação (O Algoritmo)
Antes de sairmos digitando código igual malucos, precisamos entender a regra do mundo real. Normalmente, temos 365 dias no ano, com fevereiro tendo 28 dias. Porém, a cada 4 anos, a Terra dá aquela atrasadinha básica na translação e precisamos adicionar um dia extra.
A regra matemática para o Algoritmo do Ano Bissexto é a seguinte:
- Todo ano múltiplo de 400 é sempre bissexto (Ex: 1600, 2000, 2400).
- OU: Os anos múltiplos de 4 são bissextos, EXCETO se forem também múltiplos de 100 (Ex: 1996, 2004, 2008, 2012 são bissextos. Já 1900 não é, pois é múltiplo de 100 mas não de 400).
Para testar múltiplos no PHP, usamos o operador matemático de módulo % (que nos dá o resto da divisão). Se $ano % 4 == 0, significa que a divisão por 4 é exata, logo, ele é múltiplo.
Criando o Script PHP Manualmente
Juntando nossa regra matemática com o IF E ELSE NO PHP e os operadores lógicos && (E) e || (OU), nosso código HTML + PHP fica assim:
<html>
<head>
<title>Apostila PHP Progressivo</title>
</head>
<body>
<!-- Formulário para o usuário digitar o ano -->
<form action="" method="get">
Digite o Ano (ex: 2024): <input type="number" name="year" required />
<input type="submit" value="Testar" />
</form>
<?php
if(isset($_GET['year'])) {
$ano = $_GET['year'];
// A expressão mágica do ano bissexto
if ( ($ano % 4 == 0 && $ano % 100 != 0) || $ano % 400 == 0 ) {
echo "<p>O ano <b>$ano</b> É bissexto! (Fevereiro tem 29 dias)</p>";
} else {
echo "<p>O ano <b>$ano</b> NÃO é bissexto! (Fevereiro tem 28 dias)</p>";
}
}
?>
</body>
</html>
Preste muita atenção nos parênteses! Eles funcionam igualzinho na matemática da escola: garantem que o PHP resolva primeiro o bloco do && antes de comparar com o ||.
🧠 Matemática + Código te assusta?
Algoritmos clássicos como o do Ano Bissexto são figurinhas carimbadas em testes de emprego e provas de faculdade. O segredo não é decorar, é entender a lógica. Na nossa Apostila PHP Progressivo, você encontra dezenas de exercícios focados em desenvolver o seu raciocínio lógico, passo a passo, para estudar onde e quando quiser.
Baixar Apostila Completa →O Jeito Sênior: Usando a Função Nativa do PHP
Fazer o algoritmo manual é excelente para treinar sua lógica de programação (e recomendo que você o faça!). Mas, no mundo corporativo do dia a dia, a regra número um é: não reinvente a roda.
O PHP já possui um gigantesco arsenal de funções prontas. Para trabalhar com datas, temos a poderosa FUNÇÃO DATE PHP. O parâmetro 'L' (maiúsculo) dessa função foi criado especificamente para verificar se um ano é bissexto. Ele retorna 1 (que vale como TRUE) se for, e 0 (que vale como FALSE) se não for.
Veja como o código fica absurdamente mais simples:
<?php
if(isset($_GET['year'])) {
$ano = $_GET['year'];
// mktime() cria um carimbo de data (timestamp) para o dia 1 de janeiro do ano digitado
// date('L') avalia se o ano desse timestamp é bissexto
$bissexto = date('L', mktime(0, 0, 0, 1, 1, $ano));
if ($bissexto) {
echo "<p>O ano $ano É bissexto! (Resolvido com função nativa)</p>";
} else {
echo "<p>O ano $ano NÃO é bissexto!</p>";
}
}
?>
💡 Dica de Mestre
Não se desespere se não entendeu a função mktime() agora. Iremos estudar manipulação avançada de datas e horas em um módulo específico mais adiante no nosso curso. O importante hoje é entender que no PHP, quase sempre existe uma função pronta para facilitar sua vida!
Sua lógica está ficando afiada! Que tal continuar evoluindo e dominar novas ferramentas do PHP?
Continuar Curso (Próxima Aula) »
Nenhum comentário:
Postar um comentário