Présentation de l'algorithme :

Algorithme qui permet de donner l'age des gens a partir de leur date de naissance et de la date d'aujourd'hui.

Tester l'algorithme :


(cliquer sur le bouton ci-dessus pour lancer ou relancer l'exécution de l'algorithme)
Remarque : si les messages "Algorithme lancé" et "Algorithme terminé" n'apparaissent pas au bout d'un moment dans la zone ci-dessous, c'est que l'algorithme contient une erreur.

Résultats :

Code de l'algorithme :
1     VARIABLES
2       TodayDay EST_DU_TYPE NOMBRE
3       TodayMonth EST_DU_TYPE NOMBRE
4       TodayYear EST_DU_TYPE NOMBRE
5       BirthDay EST_DU_TYPE NOMBRE
6       BirthMonth EST_DU_TYPE NOMBRE
7       BirthYear EST_DU_TYPE NOMBRE
8       Variable_bidouilliage EST_DU_TYPE NOMBRE
9       AgeDay EST_DU_TYPE NOMBRE
10      AgeMonth EST_DU_TYPE NOMBRE
11      AgeYear EST_DU_TYPE NOMBRE
12    DEBUT_ALGORITHME
13      AFFICHER "Quel jour sommes nous ?"
14      LIRE TodayDay
15      SI (TodayDay<1 OU TodayDay>31 OU TodayDay!=floor(TodayDay)) ALORS
16        DEBUT_SI
17        AFFICHER "Choisissez un nombre entier entre 1 et 31 SVP."
18        FIN_SI
19      TANT_QUE (TodayDay<1 OU TodayDay>31 OU TodayDay!=floor(TodayDay)) FAIRE
20        DEBUT_TANT_QUE
21        LIRE TodayDay
22        FIN_TANT_QUE
23      AFFICHER "Quel mois sommes nous ?"
24      LIRE TodayMonth
25      SI (TodayMonth<1 OU TodayMonth>12 OU TodayMonth!=floor(TodayMonth)) ALORS
26        DEBUT_SI
27        AFFICHER "Choisissez un nombre entier entre 1 et 12 SVP."
28        FIN_SI
29      TANT_QUE (TodayMonth<1 OU TodayMonth>31 OU TodayMonth!=floor(TodayMonth)) FAIRE
30        DEBUT_TANT_QUE
31        LIRE TodayMonth
32        FIN_TANT_QUE
33      AFFICHER "En quelle année sommes nous ?"
34      LIRE TodayYear
35      SI (TodayYear!=floor(TodayYear)) ALORS
36        DEBUT_SI
37        AFFICHER "Ce n'est pas une année. Veuillez taper un nombre entier SVP."
38        FIN_SI
39      TANT_QUE (TodayYear!=floor(TodayYear)) FAIRE
40        DEBUT_TANT_QUE
41        LIRE TodayMonth
42        FIN_TANT_QUE
43      SI (TodayYear<0) ALORS
44        DEBUT_SI
45        AFFICHER "Je croyais que J.-C. était déjà né mais bon je me trompe peut-être..."
46        FIN_SI
47      AFFICHER " "
48      AFFICHER "Nous sommes donc le "
49      AFFICHER TodayDay
50      SI (TodayMonth==1) ALORS
51        DEBUT_SI
52        AFFICHER " Janvier "
53        FIN_SI
54      SI (TodayMonth==2) ALORS
55        DEBUT_SI
56        AFFICHER " Février "
57        FIN_SI
58      SI (TodayMonth==3) ALORS
59        DEBUT_SI
60        AFFICHER " Mars "
61        FIN_SI
62      SI (TodayMonth==4) ALORS
63        DEBUT_SI
64        AFFICHER " Avril "
65        FIN_SI
66      SI (TodayMonth==5) ALORS
67        DEBUT_SI
68        AFFICHER " Mai "
69        FIN_SI
70      SI (TodayMonth==6) ALORS
71        DEBUT_SI
72        AFFICHER " Juin "
73        FIN_SI
74      SI (TodayMonth==7) ALORS
75        DEBUT_SI
76        AFFICHER " Juillet "
77        FIN_SI
78      SI (TodayMonth==8) ALORS
79        DEBUT_SI
80        AFFICHER " Août "
81        FIN_SI
82      SI (TodayMonth==9) ALORS
83        DEBUT_SI
84        AFFICHER " Septembre "
85        FIN_SI
86      SI (TodayMonth==10) ALORS
87        DEBUT_SI
88        AFFICHER " Octobre "
89        FIN_SI
90      SI (TodayMonth==11) ALORS
91        DEBUT_SI
92        AFFICHER " Novembre "
93        FIN_SI
94      SI (TodayMonth==12) ALORS
95        DEBUT_SI
96        AFFICHER " Décembre "
97        FIN_SI
98      AFFICHER TodayYear
99      AFFICHER "."
100     PAUSE
101     TANT_QUE (Variable_bidouilliage==0) FAIRE
102       DEBUT_TANT_QUE
103       BirthDay PREND_LA_VALEUR 0
104       BirthMonth PREND_LA_VALEUR 0
105       BirthYear PREND_LA_VALEUR 0
106       AgeDay PREND_LA_VALEUR 0
107       AgeMonth PREND_LA_VALEUR 0
108       AgeYear PREND_LA_VALEUR 0
109       AFFICHER "Quelle est votre date de naissance ?"
110       AFFICHER "Le jour ?"
111       LIRE BirthDay
112       SI (BirthDay<1 OU BirthDay>31 OU BirthDay!=floor(BirthDay)) ALORS
113         DEBUT_SI
114         AFFICHER "Choisissez un nombre entier entre 1 et 31 SVP."
115         FIN_SI
116       TANT_QUE (BirthDay<1 OU BirthDay>31 OU BirthDay!=floor(BirthDay)) FAIRE
117         DEBUT_TANT_QUE
118         LIRE BirthDay
119         FIN_TANT_QUE
120       AFFICHER " "
121       AFFICHER "Le mois ?"
122       LIRE BirthMonth
123       SI (BirthMonth<1 OU BirthMonth>12 OU BirthMonth!=floor(BirthMonth)) ALORS
124         DEBUT_SI
125         AFFICHER "Choisissez un nombre entier entre 1 et 12 SVP."
126         FIN_SI
127       TANT_QUE (BirthMonth<1 OU BirthMonth>12 OU BirthMonth!=floor(BirthMonth)) FAIRE
128         DEBUT_TANT_QUE
129         LIRE BirthMonth
130         FIN_TANT_QUE
131       AFFICHER "L'année ?"
132       LIRE BirthYear
133       SI (BirthYear!=floor(BirthYear)) ALORS
134         DEBUT_SI
135         AFFICHER "Ce n'est pas une année. Veuillez taper un nombre entier SVP."
136         FIN_SI
137       TANT_QUE (BirthYear!=floor(BirthYear)) FAIRE
138         DEBUT_TANT_QUE
139         LIRE BirthYear
140         FIN_TANT_QUE
141       SI (TodayYear<BirthYear OU TodayYear==BirthYear ET TodayMonth<BirthMonth OU TodayYear==BirthYear ET TodayMonth==BirthMonth ET TodayDay<BirthDay) ALORS
142         DEBUT_SI
143         AFFICHER "C'est impossible. Vous ne seriez même pas né."
144         AFFICHER "Vous vous êtez probablement trompé alors recommencer."
145         FIN_SI
146         SINON
147           DEBUT_SINON
148           SI (TodayDay<BirthDay) ALORS
149             DEBUT_SI
150             SI (TodayMonth==2 OU TodayMonth==4 OU TodayMonth==6 OU TodayMonth==7 OU TodayMonth==9 OU TodayMonth==11 OU TodayMonth==12) ALORS
151               DEBUT_SI
152               AgeDay PREND_LA_VALEUR 31
153               FIN_SI
154               SINON
155                 DEBUT_SINON
156                 SI (TodayMonth==3) ALORS
157                   DEBUT_SI
158                   AgeDay PREND_LA_VALEUR 28
159                   FIN_SI
160                   SINON
161                     DEBUT_SINON
162                     AgeDay PREND_LA_VALEUR 30
163                     FIN_SINON
164                 FIN_SINON
165             FIN_SI
166           AgeDay PREND_LA_VALEUR AgeDay+TodayDay-BirthDay
167           SI (TodayMonth<BirthMonth) ALORS
168             DEBUT_SI
169             AgeYear PREND_LA_VALEUR -1
170             AgeMonth PREND_LA_VALEUR TodayMonth-BirthMonth+12
171             FIN_SI
172             SINON
173               DEBUT_SINON
174               AgeMonth PREND_LA_VALEUR TodayMonth-BirthMonth
175               FIN_SINON
176           AgeYear PREND_LA_VALEUR AgeYear+TodayYear-BirthYear
177           AFFICHER " "
178           AFFICHER "Vous avez donc "
179           SI (AgeYear!=0) ALORS
180             DEBUT_SI
181             AFFICHER AgeYear
182             AFFICHER " ans"
183             FIN_SI
184           SI (AgeMonth!=0) ALORS
185             DEBUT_SI
186             SI (AgeYear!=0 ET AgeDay!=0) ALORS
187               DEBUT_SI
188               AFFICHER ", "
189               FIN_SI
190               SINON
191                 DEBUT_SINON
192                 SI (AgeDay==0 ET AgeYear!=0) ALORS
193                   DEBUT_SI
194                   AFFICHER " et "
195                   FIN_SI
196                   SINON
197                     DEBUT_SINON
198                     AFFICHER " "
199                     FIN_SINON
200                 FIN_SINON
201             AFFICHER AgeMonth
202             AFFICHER " mois"
203             FIN_SI
204           SI (AgeDay!=0) ALORS
205             DEBUT_SI
206             SI (AgeYear!=0 OU AgeMonth!=0) ALORS
207               DEBUT_SI
208               AFFICHER " et "
209               FIN_SI
210             AFFICHER AgeDay
211             AFFICHER " jours"
212             FIN_SI
213           AFFICHER "."
214           SI (AgeDay<10 ET AgeMonth==0 OU AgeDay>20 ET AgeMonth==11) ALORS
215             DEBUT_SI
216             AFFICHER "BON ANNIVERSAIRE"
217             SI (AgeDay==0 ET AgeMonth==0) ALORS
218               DEBUT_SI
219               AFFICHER " !!!"
220               AFFICHER "On doit fêter ça ! On le boit quand le champagne ?"
221               FIN_SI
222             SI (AgeDay<10 ET AgeMonth==0) ALORS
223               DEBUT_SI
224               AFFICHER " en retard !"
225               AFFICHER "Je viens a quelle heure pour boire un coup ?"
226               FIN_SI
227             SI (AgeDay>20 ET AgeMonth==11) ALORS
228               DEBUT_SI
229               AFFICHER " en avance !"
230               FIN_SI
231             FIN_SI
232           PAUSE
233           AFFICHER "Peut-être votre voisin ou votre voisine voudrait connaitre son age exact ?"
234           PAUSE
235           FIN_SINON
236       FIN_TANT_QUE
237   FIN_ALGORITHME