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 sous­programmes dans d’autres sous­programmes, 
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
Précédent

- 135/220

Suivant