Les procédures
Contrairement à une fonction qui ne retourne qu'un seul résultat à la fois, une procédure est un sous-algorithme qui ne retourne aucun résultat ou retourne plusieurs résultats qui ne sont pas forcément du même type.
Une procédure peut admettre des paramètres avec de différents passages.
Types de passages de paramètres à une procédure
Il existe trois types d'association (que nous nommons passages de paramètres) entre les paramètres formels d'une procédure et les variables de l'algorithme appelant passées en paramètres effectifs :
En entrée, préfixé par Entrée (ou E).
En sortie, préfixé par Sortie (ou S).
En entrée/sortie, préfixé par Entrée/Sortie (ou E/S).
Le passage de paramètres en entrée
Les instructions du sous-algorithme ne peuvent pas modifier l'entité (variable ou constante) de l'algorithme appelant. En fait, c'est la valeur de l'entité de l'algorithme appelant qui est copiée dans le paramètre (à part cette copie il n'y a pas de relation entre le paramètre et l'entité de l'algorithme appelant).
Le passage de paramètres en sortie
Les instructions du sous-algorithme affectent obligatoirement une valeur à ce paramètre. Et cette valeur sera affectée à l'entité associée de l'algorithme appelant. Il y a donc une liaison forte entre le paramètre et l'entité de l'algorithme appelant. C'est pour cela que ne pouvons pas utiliser de constantes pour ce type de paramètre.
La valeur que pouvait posséder la variable associée de l'algorithme appelant n'est pas utilisée par le sous-algorithme. Par exemple, le sous-algorithme LIRE (), qui permet de mettre dans des variables des valeurs saisies par l'utilisateur, admet n paramètres en sortie.
Le passage de paramètres en entrée/sortie
C'est un passage de paramètres qui combine les deux types de passages précédents. C'est le passage à utiliser lorsque le sous-algorithme doit modifier la valeur de la variable de l'algorithme appelant. De ce fait, nous ne pouvons pas faire passer une constante par un passage en entrée/sortie.
Complément : Passage de paramètres en langage Pascal
Contrairement au langage algorithmique dans lequel nous spécifions chaque passage de paramètre par un mot réservé (i.e. en entrée (E), en sortie (S), et en entrée/sortie (E/S)), en langage Pascal nous n'avons qu'un seul mot réservé, à savoir : VAR. En effet, VAR est utilisé pour désigner un passage de paramètre en sortie ou en entrée/sortie. Cependant, il n'existe pas de mot réservé pour désigner un passage de paramètre en entrée. Par conséquent, les paramètres passés en entrée à une procédure en Pascal ne sont précédés par aucun mot réservé.
Syntaxe de déclaration d'une procédure
Nous déclarons une procédure de la façon suivante :
PROCÉDURE nom_procédure (E paramètre(s) en entrée; S paramètre(s) en sortie; E/S paramètre(s) en entrée/sortie);
CONSTANTE (ou CONST)
Liste des constantes locales
VARIABLE (ou VAR)
liste des variables locales
DÉBUT
Liste des instructions de la procédure
FIN ;
Ou en langage Pascal :
PROCEDURE nom_procédure (paramètre(s) en entrée; VAR paramètre(s) en sortie; VAR paramètre(s) en entrée/sortie);
CONSTANTE (ou CONST)
Liste des constantes locales
VARIABLE (ou VAR)
liste des variables locales
BEGIN
Liste des instructions de la procédure
END ;
Appel à une procédure
Nous appelons une procédure en indiquant son nom suivi des paramètres effectifs entre parenthèses.
Nom_procédure (paramètre(s) effectif(s)) ;
Exemple : Le maximum de deux nombres en utilisant une procédure
Réécrire l'algorithme rechmax en utilisant une procédure à la place de la fonction Max.
ALGORITHME rechmaxPro ;
VAR x,y,grand : Entier ;
PROCÉDURE Max(E a,b : Entier ; S M : Entier);
DÉBUT
SI (a>=b) ALORS
M <- a ;
SINON
M <- b ;
FIN ;
DÉBUT
LIRE(x) ;
LIRE(y) ;
Max (x,y,grand) ;
Écrire('La plus grande valeur entre',x,'et',y,'est :',grand) ;
FIN.
Complément : Gardez en tête !
Lors de l'exécution de la procédure Max, la variable x et le paramètre a sont associés par un passage de paramètre en entrée. De même pour la variable y et le paramètre b. Ce qui veut dire que la valeur de x est copiée dans a et la valeur de y est copiée dans b. Par contre la variable grand est associée en paramètre de sortie avec le paramètre M. Donc c'est la valeur de M qui est copiée dans grand à la fin de l’exécution de Max.
Exemple : Permutation de deux valeurs en utilisant une procédure
Écrire un algorithme qui permet de permuter deux valeurs entières. Et ceci en faisant appel à une procédure.
ALGORITHME permutation ;
VAR a,b : Entier ;
PROCÉDURE echanger (E/S x, y : Entier) ;
VAR temp : Entier ;
DÉBUT
temp <- x ;
x <- y ;
y <- temp ;
FIN ;
DÉBUT
Écrire('Entrez deux entiers :') ;
LIRE(a,b) ;
echanger(a,b) ;
Écrire('a=',a,' et b = ',b) ;
FIN.
Rappel : Déroulement de l'exécution
Lors de l'exécution de la procédure echanger, la variable a et le paramètre x sont associés par un passage de paramètre en entrée/sortie (même chose avec la variable b et le paramètre x). Toute modification sur x
est effectuée sur a (de même pour y et b
).