09-2016 J.M. Adam
Université Grenoble Alpes
U.F.R. Sciences de l’Homme et de la Société
Master IC2A DCISS
Algorithmique T.D. n° 4
Exercice 1 : Horloge
a) Ecrire un algorithme qui lit une heure fournie sous la forme de trois nombres : heure, minute,
seconde, et qui affiche l’heure à la seconde suivante. On définira un type nommé pour
représenter les heures, un autre pour représenter les minutes et un troisième pour représenter
les secondes.
Exemple : donnée : 12, 19, 59 résultat : 12, 20, 0
b) Définir le type structuré horaire formé de trois champs représentant les heures, les minutes et
les secondes.
c) Transformer l’algorithme en une fonction qui calcule un horaire à la seconde suivante :
HoraireSuivant : fonction (X : horaire) —→ horaire
// HoraireSuivant(X) désigne l’horaire correspondant à X + une seconde
Exercice 2 : Distance
Spécifier et réaliser une fonction qui calcule la distance entre deux points du plan. On définira
auparavant un type permettant de représenter un point.
Exercice 3 : Comparaison et calcul de dates
a) Ecrire la fonction avant qui détermine si une date est antérieure à une autre :
fonction avant (d1, d2 : Date) → booléen
// avant(d1, d2) renvoie vrai si la date d1 est strictement antérieure à la date d2
Exemples : avant(< 31, 10, 2015 >, < 2, 11, 2015 >) renvoie vrai
avant(< 19, 10, 2015 >, < 10, 11, 2014 >) renvoie faux
b) Ecrire la fonction veille qui calcule la date qui a précède la date donnée en argument :
fonction veille (d : Date) → Date
// veille(d) renvoie la date correspondant à la veille de la date d
Exemples : veille(< 19, 10, 2015 >) renvoie la date < 18, 10, 2015 >
veille(< 1, 1, 2015 >) renvoie la date < 31, 12, 2014 >
veille(< 1, 3, 2000 >) renvoie la date < 29, 2, 2000 >
Pour écrire cette fonction, on dispose de la fonction estBissextile étudiée en TD, il
n’est pas nécessaire de la réécrire
c) Ecrire un algorithme principal qui saisit deux dates, détermine la plus ancienne, puis
calcule et affiche la date correspondant à la veille de la date la plus ancienne, au format
jour/mois/année.
Exemple : dates saisies : < 1, 3, 2014 > < 1, 1, 2015 >
date affichée : 28/2/2014