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
Pour cette dernière fonction, le résultat doit être affecté à un enregistrement de même type. 
PROGRAMME convert_sec2 
Var 
nb_secondes:entier 
heures:hms 
Début 
nb_secondes←3950 
heures←sec_to_hms(nb_secondes)  
Afficher heures.heures,heures.minutes,heures.secondes 
Fin
  Une  procédure  ne  retournant  qu’une  seule  valeur  et  quel  que  soit  son  type  est  toujours  convertible  en 
fonction.  Une  telle  procédure  doit  d’ailleurs  toujours  être  convertie  en  ce  sens  :  elle  n’a  pas  d’intérêt 
autrement. 
Pour  tester  les  fonctions  sec_to_hms  et  hms_to_sec,  vous  pouvez  appeler  l’une  avec  l’autre.  Une  fonction 
représentant  son  résultat  (la  valeur  de  la  fonction  est  le  résultat  qu’elle  retourne),  elle  peut  être  utilisée  comme 
paramètre à une autre fonction si les types attendus sont compatibles. 
PROGRAMME convert_sec3 
Var 
nb_secondes1:entier 
nb_secondes2:entier 
Début 
nb_secondes1←3950 
nb_secondes2←hms_to_sec(sec_to_hms(nb_secondes1)) 
Si nb_secondes1!=nb_secondes2 Alors 
Afficher "Erreur dans l’une des fonctions ?" 
Sinon 
Afficher "Un programme parfait" 
FinSi 
Fin
c. Paramètres et Java 
Le  langage  Java  accepte  n’importe  quel  type  de  paramètre  en  argument  d’une  méthode  (une  fonction)  :  types 
classiques comme les entiers, ou tableaux, structures (enregistrements), objets. Dans certains cas ces paramètres 
peuvent  être  en  entrée  et  en  sortie  :  uniquement  si  la  variable  passée  en  argument  n’est  pas  d’un  type  primitif 
(entiers,  réels,  caractères).  Pour  les  autres  il  n’y  a  pas  le  choix  :  les  tableaux  ou  enregistrements  passés  en 
paramètres en entrée et sortie, ce qui veut dire que les paramètres de ce genre, s’ils sont modifiés dans la méthode, 
sont aussi modifiés hors de la méthode. C’est le principe du passage par référence. Les références seront abordées 
un peu plus profondément dans le chapitre Notions avancées consacré aux notions avancées dont les pointeurs. 
En attendant tous les exemples précédents sont faisables en Java, bien heureusement. La procédure RepeteCar() 
est donc transformée ainsi : 
class chap6_param1 { 
static void RepeteCar(int nbcar, char c) { 
 
int i ; 
 
for(i=1 ;i<=nbcar ;i++) System.out.print(c); 
 
System.out.println(); 
 
- 10 -
© ENI Editions - All rigths reserved - Jonifar lina
133
Précédent

- 133/220

Suivant