sábado, 6 de marzo de 2010

Año bisiesto.

En la última semana hemos sido testigos de una noticia de alcance internacional, la cual hacía referencia a un fallo de programación del reloj de un modelo concreto de la videoconsola Playstation 3, lo cual "hizo creer" a dicha consola que 2010 era año bisiesto cuando es evidente que este año lo es. No voy a entrar más en detalle en esta noticia ya que prácticamente todo el que siga esta entrada sabrá de lo que estoy hablando y si no, no hay más que teclear en cualquier buscador de internet las palabras Playstation 3 y bisiesto, para que aparezcan cientos de páginas con información referente a lo que estoy contando.
Sin embargo, todo esto ha hecho que me proponga escribir un artículo referente a cómo calcular si un año es o no bisiesto y ya veréis que no tiene ninguna complicación el hecho en cuestión.

No voy a entrar en detalles históricos ni astronómicos, mi propósito es dar unas pinceladas básicas para que a todo aquél que esté leyendo esto le quede clara la manera de calcular si un año es o no bisiesto.
En primer lugar comentar que la mayoría de los países occidentales han tomado el Calendario Gregoriano como referente para medir los años. España adoptó dicho calendario en el año 1582. Como es sabido por todos, el año consta de 365 días, lo que establece una función entre nuestro año y lo que tarda nuestro planeta Tierra en dar una vuelta completa alrededor del Sol. Aquí está la clave del tema que estamos tratando ya que exactamente y atendiendo a razones astrológicas y matemáticas que no son objeto de este artículo, la Tierra tarda exactamente 364,2422 días realizar el recorrido alrededor del Sol, lo que traducido a nuestro lenguaje temporal equivale a 365 días, 5 horas, 48 minutos y algunos segundos.

Es decir, que tarda 365 días y 6 horas aproximadamente, por lo que cada 4 años, debemos añadir un día más a nuestro cómputo de días para completar el año, ¡el famoso año bisiesto!. Pero no queda aquí la cosa, ya que el redondeo a 6 horas tanto matemáticamente como astronómicamente no sería correcto ni preciso, así que añadimos una regla más al cálculo de nuestro año bisiesto. Esa regla no es más que considerar el último año del siglo que acaba en 00 como no bisiesto para corregir la imprecisión que comentaba anteriormente, pero para terminar de aproximar la función entre el año y el giro de la tierra en torno al sol, cada cuatro siglos no se considera esta última regla.
Como ejemplo de todo ello podemos afirmar que el año 1900 no fue bisiesto y sin embargo, el año 2000 sí lo fue. Valga esto como una pequeña aclaración de las notas anteriores.

En resumidas cuentas y puesto en forma de pseudocódigo, el algoritmo para calcular un año bisiesto es el siguiente:

Si un año es divisible por 4 y no es divisible por 100, o bien ese año es divisible por 400, es año bisiesto, en caso contrario no lo será.

También me he tomado la molestia de escribir este algoritmo en lenguaje C, compilarlo y ver que funciona, lo pego aquí para aquél que esté interesado en tener su propio calculador de años bisiestos:

int main ()
{
int anno;

scanf("%d",&anno);

if ((anno%4 == 0 && anno%100 != 0) || (anno%400) == 0)
printf ("Año bisiesto");
else
printf("Año NO bisiesto");

return 0;
}


Este programa nos solicita un dato, hace los cálculos indicados anteriormente y nos devuelve por consola si el año introducido es o no bisiesto, así de sencillo...