1.
Passage des paramètres en Pascal
La théorie générale sur les passages de paramètres n'est pas explicitée ici, nous n'étudions que les cas pratiques du langage pascal.
On s’intéresse dans ce
paragraphe aux langages impératifs descendants de la famille des
ALGOL (avec des structures de contrôle classiques) et en particulier
au langage Pascal. On envisage les rapports qu’il y a entre un programme
appelant et un sous-programme appelé. En réalité toutes
les questions que l’on se pose reviennent à celle-ci :
Quel est l’effet produit sur un paramètre effectif transmis à un sous-programme, lorsque l’on modifie le paramètre formel correspondant dans le corps du sous-programme ou bien lorsque l’on modifie son mode de passage. |
Pascal ne dispose que de 2 modes
de passage sur les 5 modes généraux:
|
Dans un passage par valeur, le paramètre formel est considéré comme une variable locale dans le corps du sous-programme. Sa valeur est initialisée au début de chaque exécution du sous-programme avec la valeur du paramètre effectif correspondant.
Il y a recopie de la valeur du
paramètre effectif dans une zone spécifique locale à
la procédure. Toutes les opérations qui sont effectuées
sur le paramètre formel n’affectent que cette valeur locale.
Avantage
: sécurité et protection des informations.
Inconvénient
: lenteur due à la recopie des données et doublement de la
place mémoire occupée (mais convient bien pour des variables
simples !).
|
en Pascal procedure sp(... x: real ....)
passage par valeur
en Pascal procedure sp (....var x : real .....)
passage
par référence
Avantage : rapidité d’accès aux données, moindre occupation mémoire puisqu’il ne s’agit que d’une adresse. Inconvénient : ce mode est dangereux à cause de la non protection des données et de la nécessité qu’il y a de connaître la façon dont sont implantées physiquement les données sur la machine.
Ces deux modes de passage des paramètres sont présents dans des langages comme C++, java, Ada, Visual-Basic et Delphi. Ils suffit donc pour le débutant, de bien comprendre le processus avec le pascal et par analogie il pourra l'utiliser avec les autres langages.