retour vers le sommaire du cours

Développement d'Application Informatique
et Génie Logiciel (DAIGL)
Jean HENRI

Exercice 2: Calcul de l'âge

Énoncé - Réponse de Mickaël - Explications - Algorithme plus juste - Algorithme final

ÉnoncéRetour en haut de page

Expliquer comment on calcule l'âge d'une personne.

Réponse de Mickaël Retour en haut de page

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 ?

ExplicationsRetour en haut de page

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

Un algorithme plus justeRetour en haut de page

On peut décrire le principe du calcul de l'âge de la manière suivante :

Pour calculer un âge, il faut connaître :

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).

Voici alors la description algorithmique du calcul :

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).


Page créée en septembre 2003
Auteur : Jean HENRI