Parece que cuando uno acaba las cosas con sudor, agradece más el tiempo invertido y más orgulloso se siente de su trabajo. Yo no me considero ni mucho menos un gran programador, pero si me considero un amante de la programación. Por muy freaky que esto pueda sonar, no me avergüenzo de ello ni mucho menos… más bien todo lo contrario. Algo que siempre he echado de menos es comentar de vez en cuando algunas líneas de código en mi blog. Así que de vez en cuando a partir de ahora, añadiré partes de código que yo haya escrito o que me ha parecido interesante (en este último caso siempre comentaré de donde proviene el código original).
Para empezar voy a poner la estructura que elegí en la especificación de un paquete “Fechas” en Ada:
type Fecha is record
dd: Positive;
mm: Positive;
yyyy: Positive range 1..9999;
end record;
Una función booleana (sobrecargando el operador “<") que me resultó muy útil para comparar dos fechas pasadas como parámetro (fecha1 y fecha2) y devolver verdadero si "fecha1 es menor que fecha2" o falso en caso contrario es la que sigue:
function “<" (fecha1: in Fecha; fecha2: in Fecha) return Boolean is
valor1,valor2: Positive;
begin
–convierto las fechas a formato numérico ponderado en base a los siguientes criterios: –año –> año x 10^10000 –mes –> mes x 10^100 –dia –> dia x 10^0
valor1:= (fecha1.yyyy*10000)+(fecha1.mm*100)+(fecha1.dd);
valor2:=(fecha2.yyyy*10000)+(fecha2.mm*100)+(fecha2.dd);
if (valor1then return true;
else return false;
end if;
end “<";
Por último, añadiré el código que escribí para calcular si un año es bisiesto (la especificación de este algoritmo fue entregada por el equipo docente de Estructura de Datos I de la Universidad de Las Palmas de Gran Canaria):
function Es_Bisiesto (A: in natural) return boolean is
begin
–Cálculo del año Bisiesto según las indicaciones del calendario Gregoriano
if (((A rem 400)=0) or (((A rem 4)=0) and ((A rem 100)/=0))) then
return true;
else
return false;
end if;
end Es_Bisiesto;
Además de compartir el código públicamente, me gustaría abrir un debate. Es decir, si alguien encuentra algún error o se le ocurre alguna mejora a alguna de las partes de este código, le agradecería enormemente su contribución.
Un saludo a tod@s.
Technorati Tags: Programación | Ada | Fechas
Technorati Tags: Ada, Fechas, Programación