passer (voyez celle en gras).
Type
Struct hms
heures:entier
minutes:entier
secondes:entier
FinStruct
Fonction hms_to_sec(duree:hms):entier
Var
total:entier
Début
total←duree.heures*3600+duree.minutes*60+duree.secondes
Retourne total
FinFonc
Fonction sec_to_hms(nbsec :entier):hms
Var
duree:hms
Début
duree.heures←nbsec DIV 3600
nbsec←nbsec%3600
duree.minutes←nbsec DIV 60
duree.secondes←nbsec%60
Retourne duree
FinFonc
Programme delta
Var
heure1,heure2,delta:hms
Début
Afficher "Saisir l’heure de départ"
Saisir heure1.heures,heure1.minutes,heure1.secondes
Afficher "Saisir l’heure de fin"
Saisir heure2.heures,heure2.minutes,heure2.secondes
delta←sec_to_hms(hms_to_nbsec(heure2)-hms_to_nbsec(heure1))
Afficher "Il s’est écoulé :"
Afficher delta.heures,delta.minutes,delta.secondes
Fin
Pourquoi ne pas aller encore plus loin en créant une fonction qui calcule seule la durée en faisant appel aux deux
autres fonctions ? En effet vous pouvez parfaitement appeler des sousprogrammes dans d’autres sousprogrammes,
donc des fonctions dans des fonctions, ou des procédures dans des fonctions et réciproquement. Voici une fonction
hms_delta qui va calculer tout ceci :
Fonction hms_delta(hms1,hms2:hms):hms
Var
delta:hms
Début
delta←nbsec_to_hms(hms_to_nbsec(hms2)-hms_to_nbsec(hms1))
Retourne delta
FinFonc
Du coup le programme principal est modifié comme ceci :
Programme delta
Var
heure1,heure2,delta:hms
Début
Afficher "Saisir l’heure de départ"
Saisir heure1.heures,heure1.minutes,heure1.secondes
Afficher "Saisir l’heure de fin"
Saisir heure2.heures,heure2.minutes,heure2.secondes
delta←hms_delta(heure1,heure2)
Afficher "Il s’est écoulé :"
Afficher delta.heures,delta.minutes,delta.secondes
Fin
- 12 -
© ENI Editions - All rigths reserved - Jonifar lina
135
Type
Struct hms
heures:entier
minutes:entier
secondes:entier
FinStruct
Fonction hms_to_sec(duree:hms):entier
Var
total:entier
Début
total←duree.heures*3600+duree.minutes*60+duree.secondes
Retourne total
FinFonc
Fonction sec_to_hms(nbsec :entier):hms
Var
duree:hms
Début
duree.heures←nbsec DIV 3600
nbsec←nbsec%3600
duree.minutes←nbsec DIV 60
duree.secondes←nbsec%60
Retourne duree
FinFonc
Programme delta
Var
heure1,heure2,delta:hms
Début
Afficher "Saisir l’heure de départ"
Saisir heure1.heures,heure1.minutes,heure1.secondes
Afficher "Saisir l’heure de fin"
Saisir heure2.heures,heure2.minutes,heure2.secondes
delta←sec_to_hms(hms_to_nbsec(heure2)-hms_to_nbsec(heure1))
Afficher "Il s’est écoulé :"
Afficher delta.heures,delta.minutes,delta.secondes
Fin
Pourquoi ne pas aller encore plus loin en créant une fonction qui calcule seule la durée en faisant appel aux deux
autres fonctions ? En effet vous pouvez parfaitement appeler des sousprogrammes dans d’autres sousprogrammes,
donc des fonctions dans des fonctions, ou des procédures dans des fonctions et réciproquement. Voici une fonction
hms_delta qui va calculer tout ceci :
Fonction hms_delta(hms1,hms2:hms):hms
Var
delta:hms
Début
delta←nbsec_to_hms(hms_to_nbsec(hms2)-hms_to_nbsec(hms1))
Retourne delta
FinFonc
Du coup le programme principal est modifié comme ceci :
Programme delta
Var
heure1,heure2,delta:hms
Début
Afficher "Saisir l’heure de départ"
Saisir heure1.heures,heure1.minutes,heure1.secondes
Afficher "Saisir l’heure de fin"
Saisir heure2.heures,heure2.minutes,heure2.secondes
delta←hms_delta(heure1,heure2)
Afficher "Il s’est écoulé :"
Afficher delta.heures,delta.minutes,delta.secondes
Fin
- 12 -
© ENI Editions - All rigths reserved - Jonifar lina
135
