BTS SIO - Notes de cours

Accueil > Seconde Année > Algorithmique > Travail sur les dates

Travail sur les dates

lundi 7 octobre 2013, par

Algorithme TestDate
Paramètres : j entier représentant le jour de la date, m le mois, a l'année
Résultat : booléen vrai si a-m-j est une date valide
variables : T tableau de durée de mois
début
 T<-[31,28,31,30,31,30,31,31,30,31,30,31]
 si a%4==0 alors
   si a%100 != 0 alors
     T[2]<-29
   sinon si a%400 == 0 alors
     T[2]<-29
   fin si
 R<-vrai
 si a<1600 alors R<-faux
 si m>12 alors
   R<-faux
 sinon si j>T[m] alors
   R<- faux
 fin si
 répondre R
fin
Algorithme DatePlusUn
Paramètres : j entier représentant le jour de la date, m le mois, a l'année
Résultat : le lendemain de la date a-m-j ou erreur
début
 // On utilise la fonction testDate
 Si testDate(j,m,a) alors
   Si TestDate(j+1,m,a) Alors // le cas général
     retourner(j+1,m,a)
   Sinon
     Si TestDate(1,m+1,a) alors // on change de mois
       retrouner (1,m+1,a)
     Sinon
       retourner(1,1,a+1) // On change d'année
     fin si
   fin si
 Sinon // la date entrée est une erreur
   retourner(erreur)
 fin si
Fin

Implémentation Python

def TestDate(j,m,a):
        # on définit un tableau des longueurs de mois
        T=[31,28,31,30,31,30,31,31,30,31,30,31]
        # On cherche si l'année est bisextile
        if a%4==0:
                if a%100!=0:
                        T[1]=29
                elif a%400==0:
                        T[1]=29
        # R est le résultat, on suppose vrai et on cherche les erreurs
        R=True
        if a<1600:
                R=False
        if m>12 or m<1:
                R=False
                return R # Si le mois est >12 alors il faut eviter l'erreur d'index
        if j>T[m-1] or j<1:
                R=False
        return R

def DatePlusUn(j,m,a):
        # On utilise TestDate
        if TestDate(j,m,a):
                if TestDate(j+1,m,a):
                        return[j+1,m,a]
                elif test(1,m+1,a):
                        return [1,m+1,a]
                else:
                        return[1,1,a+1]
        else:
                return[]

Un message, un commentaire ?

Qui êtes-vous ?
Votre message

Pour créer des paragraphes, laissez simplement des lignes vides.