Chapitre 5 : Les sous-algorithmes (fonctions et procédures)

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émentPassage 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 :

1
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);
2
CONSTANTE (ou CONST) 
3
 Liste des constantes locales
4
VARIABLE (ou VAR)
5
 liste des variables locales
6
DÉBUT
7
 Liste des instructions de la procédure 
8
FIN ;

Ou en langage Pascal :

1
PROCEDURE nom_procédure (paramètre(s) en entrée; VAR paramètre(s) en sortie; VAR paramètre(s) en entrée/sortie);
2
CONSTANTE (ou CONST) 
3
 Liste des constantes locales
4
VARIABLE (ou VAR)
5
 liste des variables locales
6
BEGIN
7
 Liste des instructions de la procédure 
8
END ;

Appel à une procédure

Nous appelons une procédure en indiquant son nom suivi des paramètres effectifs entre parenthèses.

1
Nom_procédure (paramètre(s) effectif(s)) ;

ExempleLe 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.

1
ALGORITHME rechmaxPro ; 
2
VAR x,y,grand : Entier ;
3
PROCÉDURE Max(E a,b : Entier ; S M : Entier); 
4
 DÉBUT
5
  SI (a>=b) ALORS 
6
   M <- a ;
7
  SINON 
8
   M <- b ;
9
 FIN ;
10
DÉBUT 
11
 LIRE(x) ;
12
 LIRE(y) ; 
13
 Max (x,y,grand) ;
14
 Écrire('La plus grande valeur entre',x,'et',y,'est :',grand) ; 
15
FIN.

ComplémentGardez 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.

ExemplePermutation 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.

1
ALGORITHME permutation ; 
2
VAR a,b : Entier ;
3
PROCÉDURE echanger (E/S x, y : Entier) ; 
4
 VAR temp : Entier ;
5
 DÉBUT
6
  temp <- x ; 
7
  x <- y ; 
8
  y <- temp ;
9
 FIN ; 
10
DÉBUT
11
 Écrire('Entrez deux entiers :') ; 
12
 LIRE(a,b) ;
13
 echanger(a,b) ; 
14
 Écrire('a=',a,' et b = ',b) ;
15
FIN.

RappelDé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).

PrécédentPrécédentFin
AccueilAccueilImprimerImprimerRéalisé avec Scenari (nouvelle fenêtre)