sábado, 19 de enero de 2008

Función Mes del Año en lenguaje ADA

Implemente una función de tipo Natural llamada Mes con un parámetro de entrada de tipo Positive. Esta función devolverá el número de días del mes cuyo ordinal es representado por el valor del parámetro. Si el valor del parámetro no está comprendido entre 1 y 12 (meses válidos), la función devolverá el valor 0.

function Mes (m : in Positive) return Natural is
begin
-- nos aseguramos que sea un mes valido
if (m > 0) and (m < 13) then
-- Febrero tiene 28 dias
if m = 2 then
return 28;
end if;
-- Hacemos una separacion entre los meses de Julio(7) y Agosto(8)
-- porque ambos meses tienes 31 dias, y si ponemos solo la primera
-- condicion del bucle Agosto saldra con 30 dias porque 8 mod 2 = 0
if (m <= 7 and m mod 2 = 1) or
(m >= 8 and m mod 2 = 0)
-- Con la segunda condicion si se cumple que
-- agosto tenga 31 dias, porque 8 mod 2 = 0, y entra en el bucle.
then
return 31;
else
return 30;
end if;
else
-- en cualquier otro caso devuelve 0
return 0;
end if;
end Mes;