Les fonctions
CHAPITRE 8
150
2.2 Conséquences de la transmission par valeur
Supposez que nous souhaitions écrire une fonction nommée echange chargée d’échanger
les valeurs de deux variables qu’on lui fournirait en paramètres. Nous pourrions être tentés de
procéder ainsi :
fonction échange (entier a, entier b)
{ entier c
c := a
a := b
b := c
}
Mais, comme la transmission des paramètres a lieu par valeur, on constate que les échanges
vont s’opérer localement à la fonction et qu’ils ne concerneront pas les paramètres fournis
lors de l’appel. Pour nous en convaincre, ajoutons quelques instructions d’écriture dans notre
fonction et dans un programme l’utilisant :
entier n := 10, p := 20
écrire «avant appel : », n, p
echange (n, p)
écrire «après appel : », n, p
fonction échange (entier a, entier b)
{ entier c
écrire «début échange : », a, b
c := a
a := b
b := c
écrire «fin échange : », a, b
}
avant appel : 10 20
début échange : 10 20
fin échange : 20 10
après appel : 10 20
Conséquences de la transmission par valeur
Comme on pouvait s’y attendre, les valeurs de n et p ont été recopiées dans les emplacements
locaux a et b de la fonction. Localement, l’échange des valeurs de a et b a bien eu lieu. En
revanche, les variables n et p du programme n’ont pas été modifiées.
2.3 La transmission par référence
Comme nous l’avons exposé, la transmission par référence consiste à fournir à la fonction,
non plus les valeurs des paramètres effectifs, mais leurs adresses. Nous conviendrons que le
choix d’un tel mode de transmission se fait individuellement pour chaque paramètre concer-
Précédent

- 173/370

Suivant