Passage des paramètres par valeur et par référence
Conception : Clarification - Explicitation
- Il existe deux manières de transmettre des arguments ou des paramètres aux fonctions :
- - Passage par valeur
- - Passage par référence
- Dans le passage par valeur, une copie des arguments réels est transmise aux arguments formels respectifs. Alors que, dans le passage par référence, l’emplacement (adresse) des arguments réels est transmis à des arguments formels, toute modification apportée aux arguments formels se reflétera également dans les arguments réels.
- Définition de passage par valeur : Quand on utilise le passage par valeur, la copie de la valeur est transmise à la fonction, et les modifications apportées à l’intérieur de la fonction ne se répercutent pas sur les autres fonctions.
Ainsi, Lors du passage des paramètres par valeur, seule la valeur du paramètre est passé à la procédure. Cette dernière travaille donc sur une variable locale. Alors que dans le cas d’un passage par référence, ce n’est pas la valeur du paramètre qui est passé mais l’adresse de la variable contenant la valeur : dans ce cas, la procédure appelée et la procédure appelante travaille sur la même variable, même si le nom utilisé pour le paramètre est différent du nom de la variable initiale. De ce fait, il est possible de modifier le contenu de la variable passée en paramètre à partir de la procédure appelée.
- Définition de passage par référence : Quand on utilise le passage par référence, l’adresse de l’argument est transmis à la fonction, et les modifications effectuées à l’intérieur de la fonction sont également répercutées en dehors de la fonction.
- Ainsi, dans un passage par référence, ce n'est pas la valeur de l'argument qui est utilisée dans le corps de la fonction, c'est l'argument lui-même, en tant qu'objet, qui est utilisé et modifié : ces modifications resteront donc visibles après le retour de la fonction. Le passage par référence s'applique à un argument si le paramètre correspondant a été déclaré en acollant & à son type. L'argument correspondant doit être une expression désignant un objet.
- C++, comme Pascal, offre deux modes de passage des arguments à une fonction : par valeur, et par référence. Par contre, C, Java et CAML, par simplicité n'en offrent qu'un, le passage par valeur, tandis que Fortran fait le choix inverse.
Conceptions erronées et origines possibles
Quand on utilise le passage par valeur, les modifications apportées à l’intérieur de la procédure appelée se répercutent sur la procédure appelante comme si on utilise un passage par référence d’où l'utilisation erroné de passage des paramètres: par exemple si dans un programme principal on veut appeler une procédure qui permute deux variables entiers, la modification des valeurs des variables effectuées à l’intérieur de la procédure est transféré au programme principal. Donc ce n'est pas la valeur du paramètre qui est utilisé dans la procédure, mais c'est l'adresse de variable.
Cette conception est d'origine didactique, comme il montre l'exemple de permutation, il faut bien expliquer la notion de référence, variable...
Conceptions: Origines possibles
- Mauvaise compréhension de transfert des informations entre les paramètres formels et celles effectifs.
- Mauvaise compréhension de la notion de référence.
- Mauvaise utilisation de la portée des variables.
Conceptions liées - Typologie
Concepts ou notions associés
Références
| |||
---|---|---|---|
Sur le Portail Questions / Réponses |
Sur Portail de Formation Gratuite |
Sur des sites de Formation |
Sur DidaQuest |
Passage des paramètres par valeur et par référence sur : Wikipedia / Wikiwand / Universalis / Larousse encyclopédie / Khan Académie | |||
Sur Wikiwand :
Variable / Procédure / Paramètres formels / Paramètres effectifs / Référence | |||
Sur Wikipédia :
Variable / Procédure / Paramètres formels / Paramètres effectifs / Référence | |||
Sur Wikiversity :
Variable / Procédure / Paramètres formels / Paramètres effectifs / Référence | |||
Sur Universalis :
Variable / Procédure / Paramètres formels / Paramètres effectifs / Référence | |||
Sur Khan Académie :
Variable / Procédure / Paramètres formels / Paramètres effectifs / Référence |
Éléments graphique
Stratégie de changement conceptuel
- Si vous souhaitez ne transmettre que la valeur du variable utilisez le «Passage par valeur» et si vous souhaitez voir la modification de la valeur originale du variable, utilisez le «Passage par référence».
- Présentation et explication bien de certains concepts: La portée d'une variable, les paramètres formels, les paramètres effectifs, les références, le passage par valeur et celui par référence.
- On utilise les schémas.
- par des exemples pratique.
- Avantages et inconvénients des deux méthodes
- Les passages par références sont plus rapides et plus économes en mémoire que les passages par valeur, puisque les étapes de la création de la variable locale et la copie de la valeur ne sont pas faites.
Questions possibles
Bibliographie
Pour citer cette page: (des paramètres par valeur et par référence)
ABROUGUI, M & al, 2020. Passage des paramètres par valeur et par référence. In Didaquest [en ligne]. <http:www.didaquest.org/wiki/Passage_des_param%C3%A8tres_par_valeur_et_par_r%C3%A9f%C3%A9rence>, consulté le 21, novembre, 2024
- Kalumba, Etienne. « Formation Visual Basic Net ».Visual Basic.NET En 21 Jours, Ducan Mackenzie, Kent Sharkey, Campus Press, 2002, ISBN: 2-7440-1369-2. Consulté le 3 mai 2020. https://www.academia.edu/38476347/Formation_visual_basic_net.
- KOUIS, Amine. « Différence entre passage par référence et passage par valeur ». WayToLearnX, 9 septembre 2018. https://waytolearnx.com/2018/09/difference-entre-passage-par-reference-et-passage-par-valeur.html.
- Tahé, Serge. « Introduction au langage VBScript ». Developpez.com. Consulté le 17 mai 2020. http://tahe.developpez.com/web/vbscript/.
- Obstacle didactique - Conceptions
- Obstacle épistémologique - Conceptions
- Conceptions
- Variable - Conceptions
- Procédure - Conceptions
- Paramètres formels - Conceptions
- Paramètres effectifs - Conceptions
- Référence - Conceptions
- Passage par valeur - Conceptions
- Passage par référence - Conceptions
- Fiches Conceptions