Une solution pour l'exercice 5 du TP3 d'informatique en MIAS+MASS S1

PROGRAM calendrier ;

VAR mois, jour, numero: integer ;
    dateOK : boolean ;
    joursemaine : string[10] ;

BEGIN
(* saisie *)
writeln('Donnez-moi une date en 2001 :') ;
(* saisie du mois *)
repeat
  write('mois ') ;
  readln(mois) ;
  until (mois>=1) and (mois <=12) ;
(* saisie du jour *)
repeat
  write('jour ') ;
  readln(jour) ;
  dateOK:=(jour>=1) and (jour<=31) ;
  case mois of
     2 : if jour>29 then dateOK:=false ;
     4,6,9,11 : if jour>30 then dateOK:=false ;
     end ;
  until dateOK ;

(* calcul du numero et du jour de la semaine *)
case mois of
   1 : numero:=jour ;
   2 : numero:=31+jour ;
   3 : numero:=31+29+jour ;
   4 : numero:=31+29+31+jour ;
   5 : numero:=31+29+31+30+jour ;
   6 : numero:=31+29+31+30+31+jour ;
   7 : numero:=31+29+31+30+31+30+jour ;
   8 : numero:=31+29+31+30+31+30+31+jour ;
   9 : numero:=31+29+31+30+31+30+31+31+jour ;
  10 : numero:=31+29+31+30+31+30+31+31+30+jour ;
  11 : numero:=31+29+31+30+31+30+31+31+30+31+jour ;
  12 : numero:=31+29+31+30+31+30+31+31+30+31+30+jour ;
  end ;

(* détermination du jour de la semaine *)
case (numero mod 7) of
  0 : joursemaine:='vendredi' ;
  1 : joursemaine:='samedi' ;
  2 : joursemaine:='dimanche' ;
  3 : joursemaine:='lundi' ;
  4 : joursemaine:='mardi' ;
  5 : joursemaine:='mercredi' ;
  6 : joursemaine:='jeudi' ;
  end ;

(* affichage du résultat *)
writeln('Le ',jour,'/',mois,'/2000 était le jour numéro ',numero) ;
writeln('C''était un ', joursemaine) ;
END.