Il est parfois très pratique de savoir quelles années possèdent 366 jours plutôt que les 365 jours habituels du calendrier grégorien. Ces années particulières sont appelées des années bissextiles et jouent un rôle important dans le maintien de la concordance entre notre calendrier civil et la durée réelle de la révolution de la Terre autour du Soleil. En effet, une année astronomique dure environ 365 jours et un quart, ce qui entraîne progressivement un décalage si aucun ajustement n'est effectué. Pour corriger cette différence, une journée supplémentaire est ajoutée au mois de février à intervalles réguliers.
Toutefois, la détermination d'une année bissextile n'est pas aussi simple qu'une règle consistant à ajouter un jour tous les quatre ans. Le calendrier grégorien utilise un mécanisme plus élaboré afin d'obtenir une meilleure précision à long terme. Ainsi, une année divisible par quatre est généralement bissextile, mais les années séculaires, c'est-à-dire celles se terminant par « 00 », ne le sont pas automatiquement. Pour être considérée comme bissextile, une année séculaire doit également être divisible par 400. C'est pourquoi l'année 1900 n'était pas bissextile, alors que l'année 2000 l'était.
Cette règle, bien que relativement simple à appliquer manuellement, est souvent automatisée dans les logiciels de gestion de dates, les calendriers électroniques et les langages de programmation. Le langage Delphi propose d'ailleurs une fonction standard nommée IsLeapYear permettant de déterminer rapidement si une année donnée est bissextile ou non. Toutefois, il peut être instructif de comprendre et de reproduire soi-même l'algorithme utilisé pour effectuer cette vérification.
À l'aide du code source Delphi présenté ci-dessous, vous pourrez déterminer quelles années comprises entre 1900 et 2009 sont des années bissextiles. Le programme applique directement les règles du calendrier grégorien à l'aide d'opérations arithmétiques simples et affiche toutes les années répondant aux critères. Vous trouverez ainsi une méthode rapide et efficace pour identifier les années comportant 366 jours et mieux comprendre le fonctionnement interne des calculs calendaires modernes :
- Program IsLeapYearSource;
-
- {$APPTYPE CONSOLE}
-
- Uses SysUtils;
-
- Function _IsLeapYear(Year:Integer):Boolean;Begin
- _IsLeapYear:=((Year AND 3) = 0) AND ((Year MOD 100 <> 0) OR (Year MOD 400 = 0));
- End;
-
- Var
- I:Integer;
-
- BEGIN
- For I:=1900 TO 2009 do Begin
- If _IsLeapYear(I)Then WriteLn(I,' est une année bissextile');
- End;
- END.
on obtiendra le résultat suivant :
1904 est une année bissextile1908 est une année bissextile
1912 est une année bissextile
1916 est une année bissextile
1920 est une année bissextile
1924 est une année bissextile
1928 est une année bissextile
1932 est une année bissextile
1936 est une année bissextile
1940 est une année bissextile
1944 est une année bissextile
1948 est une année bissextile
1952 est une année bissextile
1956 est une année bissextile
1960 est une année bissextile
1964 est une année bissextile
1968 est une année bissextile
1972 est une année bissextile
1976 est une année bissextile
1980 est une année bissextile
1984 est une année bissextile
1988 est une année bissextile
1992 est une année bissextile
1996 est une année bissextile
2000 est une année bissextile
2004 est une année bissextile
2008 est une année bissextile