Mode de transmission des paramètres
149
Exercice 8.2 Écrire une fonction nommée prixTTC fournissant en résultat le prix TTC correspondant à un prix hors taxe et un taux de TVA fournis en paramètres.
Exercice 8.3 Écrire une fonction nommée estVoyelle examinant si un caractère fourni en
paramètre est une voyelle et fournissant un résultat de type booléen. Écrire un petit programme l’utilisant.
2 Mode de transmission des paramètres
2.1 Introduction
Jusqu’ici, nous avons simplement indiqué que dans un appel tel que :
salut (n)
la valeur de n était transmise à la fonction salut. Mais, nous ne nous sommes pas préoccupés de savoir ce que se passerait si la fonction cherchait à modifier la valeur du paramètre
muet correspondant, comme dans cet exemple :
fonction salut (entier nb)
{ .....
nb := nb + 1
.....
}
Certes, une telle opération est réalisable dans tous les langages. Mais, il faut bien comprendre
que, lors de l’appel de salut, la valeur fournie en paramètre (ici, celle de n) a été recopiée
dans un emplacement local à salut, nommé nb. Tout se passe comme si nb était une variable locale à la fonction, initialisée avec la valeur fournie lors de l’appel. Dans notre exemple,
l’augmentation de 1 de la valeur de nb n’aura aucune incidence sur la valeur de la variable n
du programme ayant appelé la fonction salut.
Ce mode de transmission des paramètres se nomme tout naturellement transmision par
valeur. C’est celui que nous avons utilisé implicitement jusqu’ici. Il s’applique à tous les
types de base (entier, réel, caractère, booléen).
Mais, la plupart des langages disposent d’un autre mode de transmission nommé transmission par référence (ou par adresse) dans lequel on transmet à la fonction, non plus la valeur,
mais l’adresse du paramètre effectif. Ici, nous allons supposer que nous pouvons également
disposer d’un tel mode de transmission et nous définirons des conventions pour le mettre en
œuvre. Mais, auparavant, pour mieux vous faire sentir l’intérêt de cette transmission par référence, nous commencerons par vous présenter un exemple qui montre l’insuffisance du seul
mode de transmission par valeur.
149
Exercice 8.2 Écrire une fonction nommée prixTTC fournissant en résultat le prix TTC correspondant à un prix hors taxe et un taux de TVA fournis en paramètres.
Exercice 8.3 Écrire une fonction nommée estVoyelle examinant si un caractère fourni en
paramètre est une voyelle et fournissant un résultat de type booléen. Écrire un petit programme l’utilisant.
2 Mode de transmission des paramètres
2.1 Introduction
Jusqu’ici, nous avons simplement indiqué que dans un appel tel que :
salut (n)
la valeur de n était transmise à la fonction salut. Mais, nous ne nous sommes pas préoccupés de savoir ce que se passerait si la fonction cherchait à modifier la valeur du paramètre
muet correspondant, comme dans cet exemple :
fonction salut (entier nb)
{ .....
nb := nb + 1
.....
}
Certes, une telle opération est réalisable dans tous les langages. Mais, il faut bien comprendre
que, lors de l’appel de salut, la valeur fournie en paramètre (ici, celle de n) a été recopiée
dans un emplacement local à salut, nommé nb. Tout se passe comme si nb était une variable locale à la fonction, initialisée avec la valeur fournie lors de l’appel. Dans notre exemple,
l’augmentation de 1 de la valeur de nb n’aura aucune incidence sur la valeur de la variable n
du programme ayant appelé la fonction salut.
Ce mode de transmission des paramètres se nomme tout naturellement transmision par
valeur. C’est celui que nous avons utilisé implicitement jusqu’ici. Il s’applique à tous les
types de base (entier, réel, caractère, booléen).
Mais, la plupart des langages disposent d’un autre mode de transmission nommé transmission par référence (ou par adresse) dans lequel on transmet à la fonction, non plus la valeur,
mais l’adresse du paramètre effectif. Ici, nous allons supposer que nous pouvons également
disposer d’un tel mode de transmission et nous définirons des conventions pour le mettre en
œuvre. Mais, auparavant, pour mieux vous faire sentir l’intérêt de cette transmission par référence, nous commencerons par vous présenter un exemple qui montre l’insuffisance du seul
mode de transmission par valeur.
