Procé dure nom_proc(E param1:type,ES param2:type,S param3:type)
Les paramètres d’une procédure sont de trois catégories :
q Ceux en entrée, qui correspondent aux valeurs que vous souhaitez transmettre à la procédure. Entre les
parenthèses, ils sont précédés d’un "E", comme Entrée, car ce sont les valeurs en entrée de la procédure.
q Ceux en sortie, qui correspondent aux valeurs retournées par la procédure au programme ou au sousprogramme l’ayant appelé. Ils sont précédés d’un "S", comme Sortie, car ce sont les valeurs en sortie de la
procédure. Ces paramètres sont des variables qui doivent être déclarées dans le programme ou sousprogramme appelant.
q Ceux en entrée et en sortie, précédés de "ES".
Quand vous avez plusieurs paramètres en entrée, il suffit de tous les mettre après le E, et même de les regrouper
selon leur type. Cette procédure prend cinq paramètres : trois entiers et deux chaînes.
Procédure proc(E p1,p2,p3:entiers,p4,p5:chaînes)
La procédure RepeteCar() se prête bien à un paramètre. Comment en effet utiliser une variable globale pour spécifier
le nombre de caractères à répéter ? Autant passer ce nombre en paramètre. Voici le programme modifié en
conséquence :
Procédure RepeteCar(E nbcar:entier, E c:caractère)
VAR
i:entier
DEBUT
Pour i de 1 à nbcar Faire
Afficher c
FinPour
FinProc
PROGRAMME LIGNES
VAR
i:entier
DEBUT
Pour i de 1 à 10 Faire
RepeteCar(i,"*")
FinPour
FIN
Vous récupérez une éventuelle valeur en sortie via la ou les variables E ou ES. Voici une procédure qui convertit un
nombre de secondes en heures, minutes et secondes. Elle prend quatre paramètres dont un en entrée (le nombre de
secondes) et trois en sortie (heures minutes et secondes).
Procédure sec_to_hms(E nbsec:entier, S h,m,s:entiers)
Début
h←nbsec DIV 3600
nbsec←nbsec%3600
m←nbsec DIV 60
s←nbsec MOD 60
FinProcédure
PROGRAMME convert_sec
Var
nb_secondes :entier
heures,minutes,secondes:entiers
Début
nb_secondes←3950
sec_to_hms(nb_secondes,heures,minutes,secondes)
Afficher heures,minutes,secondes
Fin
La procédure précédente fonctionne certes à merveille, mais avec un peu plus de réflexion, pourquoi ne pas utiliser
Passer un enregistrement comme paramètre
- 8 -
© ENI Editions - All rigths reserved - Jonifar lina
131
Les paramètres d’une procédure sont de trois catégories :
q Ceux en entrée, qui correspondent aux valeurs que vous souhaitez transmettre à la procédure. Entre les
parenthèses, ils sont précédés d’un "E", comme Entrée, car ce sont les valeurs en entrée de la procédure.
q Ceux en sortie, qui correspondent aux valeurs retournées par la procédure au programme ou au sousprogramme l’ayant appelé. Ils sont précédés d’un "S", comme Sortie, car ce sont les valeurs en sortie de la
procédure. Ces paramètres sont des variables qui doivent être déclarées dans le programme ou sousprogramme appelant.
q Ceux en entrée et en sortie, précédés de "ES".
Quand vous avez plusieurs paramètres en entrée, il suffit de tous les mettre après le E, et même de les regrouper
selon leur type. Cette procédure prend cinq paramètres : trois entiers et deux chaînes.
Procédure proc(E p1,p2,p3:entiers,p4,p5:chaînes)
La procédure RepeteCar() se prête bien à un paramètre. Comment en effet utiliser une variable globale pour spécifier
le nombre de caractères à répéter ? Autant passer ce nombre en paramètre. Voici le programme modifié en
conséquence :
Procédure RepeteCar(E nbcar:entier, E c:caractère)
VAR
i:entier
DEBUT
Pour i de 1 à nbcar Faire
Afficher c
FinPour
FinProc
PROGRAMME LIGNES
VAR
i:entier
DEBUT
Pour i de 1 à 10 Faire
RepeteCar(i,"*")
FinPour
FIN
Vous récupérez une éventuelle valeur en sortie via la ou les variables E ou ES. Voici une procédure qui convertit un
nombre de secondes en heures, minutes et secondes. Elle prend quatre paramètres dont un en entrée (le nombre de
secondes) et trois en sortie (heures minutes et secondes).
Procédure sec_to_hms(E nbsec:entier, S h,m,s:entiers)
Début
h←nbsec DIV 3600
nbsec←nbsec%3600
m←nbsec DIV 60
s←nbsec MOD 60
FinProcédure
PROGRAMME convert_sec
Var
nb_secondes :entier
heures,minutes,secondes:entiers
Début
nb_secondes←3950
sec_to_hms(nb_secondes,heures,minutes,secondes)
Afficher heures,minutes,secondes
Fin
La procédure précédente fonctionne certes à merveille, mais avec un peu plus de réflexion, pourquoi ne pas utiliser
Passer un enregistrement comme paramètre
- 8 -
© ENI Editions - All rigths reserved - Jonifar lina
131
