Exemple: Soit les déclarations de variables suivantes:
. . .
VAR T: ARRAY [1..100] OF Integer;
K, U, Tot: Integer;
. . .
et la procédure SumArray pour laquelle les paramètres sont transmis par référence:
PROCEDURE SumArray ( VAR I, N, Value: Integer );
BEGIN
Value := 0;
WHILE I<=N DO
BEGIN
Value:= Value+T[I];
I := I+1
END {-- WHILE, I>N}
END; {-- SumArray}
On voit sans difficulté que les paramètres I et N représentent l'intervalle de sommation. Le paramètre Value retourne la valeur du résultat obtenu, c'est-à-dire de la somme des N-I+1 composantes du tableau T, dans le programme appelant.
A l'activation de la procédure SumArray dans le segment de (sous-) programme suivant:
. . .
FOR K:=1 TO 100 DO
Readln( T[K] );
K := 3; U := 10;
SumArray( K, U, Tot );
Writeln( K, U, Tot );
. . .
on obtient schématiquement:
Figure 11.21 Schéma d'exécution
Remarque:
Dans l'instruction SumArray( K, U, Tot ), la variable Tot ne doit pas nécessairement être définie avant d' être utilisée comme paramètre. Sa valeur sera définie dans le cours de l'exécution de la procédure et renvoyée vers la procédure appelante. L'effet parasite consiste ici dans le fait que, après exécution de la procédure SumArray, l'intervalle de sommation n'est plus défini pour les valeurs de ces mêmes variables.
Pour éviter ce genre de problème, il est prudent soit d'envisager un autre mode de transmission, par exemple passage de U et de K par valeur, soit de prendre des précautions dans l'écriture du texte de la procédure, par exemple par l'introduction d'une variable locale ICopy dans laquelle on va copier la valeur de I et sur laquelle on va travailler.
¨ TERMES TECHNIQUES
effet de bord
paramètre formel
paramètre par adresse
paramètre par nom
paramètre par référence
paramètre par valeur
paramètre par variable
mode de transmission par nom
mode de transmission par référence
mode de transmission par valeur
© Aflo Informatique , 2003-2004