Correction du TD n°2

Exercice 1

Ecrire un algorithme qui, à partir d'une date donnée sous la forme jour, mois, année, calcule la date du lendemain.

001  { Test si une annee est bissextile          }
002  
003  action testBissextile(a,bsxt)
004    Donnees   a  : entier          { l'annee a tester                            }
005    Resultats bsxt : booleen       { le booleen resultat (vrai si a bissextile   }
006    bsxt := faux
007    si (a modulo 4) = 0 alors
008      bsxt := vrai
009    fsi
010    si (a modulo 100) = 0 alors
011      bsxt := faux
012    fsi
013    si (a modulo 400) = 0 alors
014      bsxt := vrai
015    fsi
016  fin action
017  
018  { Calcul du nombre de jours d'une annee     }
019  { eventuellement bissextile                 }
020  
021  action nombreJoursMois(m,a,nb)
022    Donnees   m  : entier          { le mois de calcul                           }
023              a  : entier          { l'annee de calcul                           }
024    Resultats nb : entier          { l'entier resultat                           }
025    Locales   bsxt : booleen
026    dans le cas de
027      m
028       1 :
029       3 :
030       5 :
031       7 :
032       8 :
033      10 :
034      12 : nb := 31
035       4 :
036       6 :
037       9 :
038      11 : nb := 30
039       2 : testBissextile(a,bsxt)
040           si bsxt alors
041             nb := 29
042             sinon
043             nb := 28
044           fsi
045    fin cas de
046  fin action  
047  
048  { Calcul de la date du lendemain            }
049  
050  action dateLendemain(ji,mi,ai,jf,mf,af)
051    Donnees   ji : entier          { le jour de calcul                           }
052              mi : entier          { le mois de calcul                           }
053              ai : entier          { l'annee de calcul                           }
054    Resultats jf : entier          { le jour resultat                            }
055              mf : entier          { le mois resultat                            }
056              af : entier          { l'annee resultat                            }
057    Locales   jm : entier          { variable locale de stockage du nombre       }
058                                   { de jours du mois de l'annee de calcul       }
059    nombreJoursMois(mi,ai,jm)
060    si ji < jm alors
061      jf := ji+1
062      mf := mi
063      af := ai
064      sinon
065      jf := 1
066      si mi < 12 alors
067        mf := mi+1
068        af := ai
069        sinon
070        mf := 1
071        af := ai+1
072      fsi
073    fsi
074  fin action

DateLendemain.lda

Auteur: Nicolas JANEY
UFR Sciences et Techniques
Université de Besançon
16 Route de Gray, 25030 Besançon
nicolas.janey@univ-fcomte.fr