if(jour==30) {
jour=1;
mois++;
} else jour++;
break;
}
case 2: {
if( (annee%4==0) && ((annee%400==0) || (annee%100>0)) ) {
if(jour==29) {
jour=1;
mois++;
} else jour++;
} else {
if(jour==28) {
jour=1;
mois++;
} else jour++;
}
break;
}
case 12: {
if(jour==31) {
jour=1;
mois=1;
annee++;
} else jour++;
}
}
System.out.println("Demain est le "+jour+ "/"+mois+ "/" +annee);
}
}
b. La validité d’une date
Les calculs de dates sont une source inépuisable d’algorithmes. Sauriezvous par exemple vous inspirer de
l’algorithme cidessus pour tester la validité d’une date rentrée au clavier ? Il suffit pour chaque mois de vérifier si le
jour entré est correct, le piège étant comme cidessus pour les années bissextiles et le mois de février. L’algorithme
cidessous introduit une nouveauté : la présence d’un drapeau (qu’on appelle flag en anglais) ou indicateur. Le
drapeau est une variable initialisée à une valeur prédéfinie au début du programme et dont la valeur est modifiée
selon le résultat des tests. Après tous les tests, on vérifie la valeur du drapeau. Atelle changé ? Alors il y a eu un
problème. Le drapeau est représenté par la variable "erreur". En fin de script, si elle contient autre chose que 0, alors
la date est invalide. Sa valeur est modifiée à 1 lorsqu’un test n’est pas concluant.
Variables erreur, annee, mois, jour en Numérique
Début
erreur←0
Ecrire "Date initiale ?"
Lire jour, mois, annee
Si jour<0 OU mois<0 OU mois>12 Alors
erreur←1
Sinon Si Mois=1 OU mois=3 OU mois=5 OU mois=7 OU mois=8 OU mois=10
ou mois=12 Alors
Si jour>31 Alors
erreur←1
FinSi
Sinon Si mois=4 OU mois=6 OU mois=9 OU mois=11 Alors
Si jour>30 Alors
erreur←1
FinSi
Sinon SI mois=2 Alors
Si (annee%4=0) ET ((annee%400=0) OU (annee%100>0)) Alors
Si jour>29 Alors
erreur←1
FinSi
Sinon
Si jour>28 Alors
erreur←1
- 11 -
© ENI Editions - All rigths reserved - Jonifar lina
57
jour=1;
mois++;
} else jour++;
break;
}
case 2: {
if( (annee%4==0) && ((annee%400==0) || (annee%100>0)) ) {
if(jour==29) {
jour=1;
mois++;
} else jour++;
} else {
if(jour==28) {
jour=1;
mois++;
} else jour++;
}
break;
}
case 12: {
if(jour==31) {
jour=1;
mois=1;
annee++;
} else jour++;
}
}
System.out.println("Demain est le "+jour+ "/"+mois+ "/" +annee);
}
}
b. La validité d’une date
Les calculs de dates sont une source inépuisable d’algorithmes. Sauriezvous par exemple vous inspirer de
l’algorithme cidessus pour tester la validité d’une date rentrée au clavier ? Il suffit pour chaque mois de vérifier si le
jour entré est correct, le piège étant comme cidessus pour les années bissextiles et le mois de février. L’algorithme
cidessous introduit une nouveauté : la présence d’un drapeau (qu’on appelle flag en anglais) ou indicateur. Le
drapeau est une variable initialisée à une valeur prédéfinie au début du programme et dont la valeur est modifiée
selon le résultat des tests. Après tous les tests, on vérifie la valeur du drapeau. Atelle changé ? Alors il y a eu un
problème. Le drapeau est représenté par la variable "erreur". En fin de script, si elle contient autre chose que 0, alors
la date est invalide. Sa valeur est modifiée à 1 lorsqu’un test n’est pas concluant.
Variables erreur, annee, mois, jour en Numérique
Début
erreur←0
Ecrire "Date initiale ?"
Lire jour, mois, annee
Si jour<0 OU mois<0 OU mois>12 Alors
erreur←1
Sinon Si Mois=1 OU mois=3 OU mois=5 OU mois=7 OU mois=8 OU mois=10
ou mois=12 Alors
Si jour>31 Alors
erreur←1
FinSi
Sinon Si mois=4 OU mois=6 OU mois=9 OU mois=11 Alors
Si jour>30 Alors
erreur←1
FinSi
Sinon SI mois=2 Alors
Si (annee%4=0) ET ((annee%400=0) OU (annee%100>0)) Alors
Si jour>29 Alors
erreur←1
FinSi
Sinon
Si jour>28 Alors
erreur←1
- 11 -
© ENI Editions - All rigths reserved - Jonifar lina
57
