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 :
Graphique :
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