retour vers le sommaire du cours
Énoncé - Réponse de Mickaël - Explications - Algorithme plus juste - Algorithme final
Expliquer comment on calcule l'âge d'une personne.
Déclaration des variables :
N : Année de naissance
A : Année actuelle
T : Age de la personne
Début
Saisir N
Saisir A
T <-- A - N
Afficher "L'âge est de : ", T
Fin
En testant cette réponse avec sa propre date de naissance, quelques étudiant(e)s ne parviennent pas à calculer de manière exacte leur âge. Pourquoi ?
En supposant que nous sommes le 4 septembre 2003, nous parvenons à dire de manière quasi immédiate (c'est à dire sans tenir compte de la proposition ci-dessus) les âges correspondant aux dates suivantes :
Date de naissance |
Âge déterminé |
Justification |
17/08/1980 |
23 ans |
Le mois d'août est avant le mois de septembre, donc l'âge est égal à 2003 - 1980 |
15/12/1980 |
22 ans |
Le mois de naissance est après le mois actuel, donc l'âge est égal à 2003 - 1980 - 1 (le -1 exprime le fait que l'anniversaire n'est pas encore passé). |
23/09/1980 |
22 ans |
Le mois de naissance est le même que le mois actuel, donc c'est le jour de naissance situé après le jour actuel qui permet de conclure que l'âge est égal à 2003 - 1980 - 1 |
01/09/1980 |
23 ans |
Le mois de naissance est le même que le mois actuel, donc c'est le jour de naissance situé avant le jour actuel qui permet de conclure que l'âge est égal à 2003 - 1980 |
04/09/1980 |
23 ans |
Le mois de naissance est le même que le mois actuel et le jour de naissance est le même que le jour actuel donc "par convention", on considère que l'âge est égal à 2003 - 1980 |
Pour calculer un âge, il faut connaître :
Le jour, le mois et l'année de naissance ; Le jour, le mois et l'année actuels.Lorsque le mois de naissance est situé avant le mois actuel, l'âge vaut : "année actuelle" - "année de naissance"
Lorsque le mois de naissance est situé après le mois actuel, l'âge vaut : "année actuelle" - "année de naissance" - 1
Lorsque le mois de naissance est le même que le mois actuel, il faut comparer les jours :
si le jour de naissance est situé après le jour actuel, l'âge vaut : "année actuelle" - "année de naissance" - 1
sinon l'âge vaut : "année actuelle" - "année de naissance" (cela regroupe avant et le même).
programme CalculAge
données :
JourNaissance, MoisNaissance et AnneeNaissance sont des entiers
Age est un entier
début
afficher "Indiquez votre date de naissance (jour, mois, année) : "
saisir JourNaissance, MoisNaissance, AnneeNaissance
Age <-- CalculerAge (JourNaissance, MoisNaissance, AnneeNaissance)
afficher "Votre âge est de ", Age, " an(s)"
fin
fonction CalculerAge (entrée : JourN, MoisN, AnneeN sont entiers)
retourne un entier
données :
JourActuel, MoisActuel, AnneeActuelle sont entiers
Resultat est entier
début
Resultat <-- 0
ObtenirDateSystème (JourActuel, MoisActuel, AnneeActuelle)
si (MoisN < MoisActuel) alors
Resultat <-- AnneeActuelle - AnneeN
fin si
si (MoisN > MoisActuel) alors
Resultat <-- AnneeActuelle - AnneeN - 1
fin si
si (MoisN = MoisActuel) alors
si (JourN > JourActuel) alors
Resultat <-- AnneeActuelle - AnneeN - 1
sinon
Resultat <-- AnneeActuelle - AnneeN
fin si
fin si
retourner Resultat
fin
procedure ObtenirDateSystème (sortie : JourSys, MoisSys, AnneeSys sont entiers)
// Cette procédure mise à disposition par l'outil de développement fournit la date gérée par le système (l'ordinateur).