--
-- Représente un calendrier
--
package Calendrier is
-- Jours de la semaine
type T_Nom_Jour is (Lun, Mar, Mer, Jeu, Ven, Sam, Dim) ;
-- Phase de la lune
type T_Lune is (Nouvelle_Lune, Pleine_Lune, Premier_Quartier, Dernier_Quartier, Intermediaire) ;
-- Pour mesurer la durée du jour
type T_Duree is record
Heures : Integer ;
Minutes : Integer ;
end record ;
-- Un jour dans un mois
type T_Jour is record
-- Jour de la semaine
Nom_Jour : T_Nom_Jour ;
-- Duree du jour en heures (entre le lever et le coucher du soleil)
Duree_Jour : T_Duree ;
-- Phase de la lune
Phase_Lune : T_Lune ;
end record ;
-- Un tableau de jours
type Tab_Jours is array(Integer range <>) of T_Jour ;
type T_Mois is record
-- Nom du mois sur 20 caractères.
Nom_Mois : String(1..20) ;
Nombre_Jours : Integer ;
-- Tableau des jours de ce mois.
-- Le tableau contient toujours 31 cases, mais si le mois a moins de 31 jours,
-- les dernières cases ne doivent pas être prises en compte.
Jours : Tab_Jours(1..31) ;
end record ;
type T_Annee is array(Integer range <>) of T_Mois ;
-- Cette fonction renvoie le calendrier de l'année 2042
-- Les cases du tableau sont numérotées de 1 à 12.
function Cal2042 return T_Annee ;
end Calendrier ;