Previous Page Next Page

11.11 Comparaison des trois modes de transmission sur un exemple

Terminons ce paragraphe par un exemple un peu plus compliqué. Considérons la procédure Param définie par:

PROCEDURE Param ( <mode de transmission> A, I: Integer );

BEGIN

I := I+1;

A := A+2

END; {-- Param}

Supposons que la procédure Param est appelée dans le texte suivant:

. . .

VAR T: ARRAY [1..2] OF Integer;

K: Integer;

. . .

BEGIN

. . .

K := 1;

T[1] := 2;

T[2] := 3;

Param( T[K], K );

Writeln( T[1], T[2] );

. . .

END;

Discutons l'effet-net de la procédure Param en fonction des différents modes de transmision des paramètres.

A. Transmission par valeur

Undisplayed Graphic

Figure 11.18 Transmission par valeur

Les paramètres formels prennent les valeurs des paramètres effectifs. Au retour dans le (sous-) programme appelant, les paramètres effectifs gardent leur valeur initiale.

B. Transmission par référence

On obtient le schéma suivant:

Undisplayed Graphic

Figure 11.19 Transmission par référence

Les arguments formels adressent la même cellule-mémoire que les paramètres actuels correspondants pendant tout le cours de l'exécution du sous-programme. Soit ici:

A identifie la même cellule-mémoire que T[1],

I identifie la même cellule-mémoire que K.

Il est facile à voir qu'ici l'état des variables du (sous-) programme appelant est modifié par simple exécution de la procédure Param. Rappelons encore une fois que ce mode de transmission des paramètres peut conduire à des effets de bord [angl. side effects] non souhaités.

C. Transmission par nom

On obtient le schéma ci-dessous:

Undisplayed Graphic

Figure 11.20 Transmission par nom

Rappelons que lors du passage des paramètres par nom, les paramètres formels sont substitués par le texte, c'est-à-dire la chaîne de caractères, qui définit les paramètres effectifs correspondants.

Donc, le bloc de la procédure appelée est exE9‚cuté dans la version suivante:

K := K+1;

T[K] := T[K]+2;

Previous Page Next Page


© Aflo Informatique , 2003-2004