une seule structure pour représenter toutes les composantes d’une heure ? 
Struct hms 
heures:entier 
minutes:entier 
secondes:entier 
FinStruct
Un enregistrement peut être passé en paramètre d’une procédure tout comme une variable, en entrée ou en sortie. 
La procédure et le programme peuvent être convertis comme ceci : 
Types 
Struct hms 
heures:entier 
minutes:entier 
secondes:entier 
FinStruct 
 
Procédure sec_to_hms(E nbsec:entier, S duree:hms) 
Début 
duree.heures←nbsec DIV 3600 
nbsec←nbsec%3600 
duree.minutes←nbsec DIV 60 
duree.secondes←nbsec%60 
FinProcédure 
 
PROGRAMME convert_sec 
Var 
nb_secondes:entier 
heures:hms 
Début 
nb_secondes←3950 
sec_to_hms(nb_secondes,heures)  
Afficher heures.heures,heures.minutes,heures.secondes 
Fin
b. Les fonctions 
Les fonctions ne retournent qu’une seule valeur via l’instruction Retourne. Aussi il n’y a pas besoin de spécifier si les 
paramètres sont en entrée ou en sortie. Ils sont forcément en entrée. Par contre, la valeur de la fonction peut être 
de n’importe quel type. 
Voici une fonction qui fait l’inverse de la procédure précédente : elle reçoit des heures, minutes et seconde, et en 
contrepartie elle retourne le nombre de secondes total. 
Fonction hms_to_sec(heures,minutes,secondes :entiers):entier 
Var 
total:entier 
Début 
total←heures*3600+minutes*60+secondes 
Retourne total 
FinFonc
Une  fonction  peut  parfaitement  récupérer  un  enregistrement  comme  paramètre.  Voici  une  bonne  occasion  de 
réutiliser le type structuré précédemment défini : 
Fonction hms_to_sec(duree:hms):entire 
Var 
total :entier 
Début 
total←duree.heures*3600+duree.minutes*60+duree.secondes 
Retourne total 
FinFonc
Enfin,  une  fonction  peut  aussi  retourner  un  enregistrement.  Ce  qui  veut  dire  que  la  procédure  sec_to_hms  est 
inutile : une fonction peut la remplacer : 
- 9 -
© ENI Editions - All rigths reserved - Jonifar lina
132
Précédent

- 132/220

Suivant