
- le programme appelant va transmettre à la procédure les arguments effectifs
- cette procédure va donc effectuer ses calculs sur ces arguments, et au moment de son
exécution (c'est-à-dire après la transmission des paramètres) tout va se passer comme si les
instructions de la procédure appelée s’étaient insérées dans le programme appelant à la place
de l’instruction d’appel.
- Quand l’exécution de l’instruction d’appel est terminée, le programme appelant passe à
l’exécution de l’instruction qui suit l’instruction d’appel.
Ex : Lors de l’appel de litvecteur(L) on a L = paramètre effectif et taillevect = paramètre formel.
- Les paramètres effectifs sont transmis à la procédure, c'est-à-dire que la variable taillevect va
prendre la valeur de la variable L (ou que l’adresse de la variable taillevect va être la même
que la variable L)
- La procédure sera exécutée, comme si le mot début de l’algorithme de la procédure litvecteur
était suivi de l’instruction taillevect prend la valeur de L.
- A la fin de l’exécution de la procédure litvecteur, c’est l’instruction recherchemax(L) qui sera
exécutée.
Les paramètres ont deux rôles :
- Transmettre la procédure, au moment de l’appel, les valeurs nécessaires à son exécution
- Au moment du retour, transmettre au programme appelant le ou les résultats du traitement
effectué.
Il y a plusieurs mécanismes de passage des arguments et des programmes appelés.
5) passage des paramètres
La façon dont la valeur des paramètres sont transmises est très importante et doit absolument être pris en
compte pour éviter les effets inattendus. Tout tourne autour de la question suivante : les arguments sont
ils modifiés par l’exécution de cette procédure ? Si oui, quelles valeurs auront-ils à la fin de cette
exécution dans le programme appelant ?
On distingue deux types de transmission de paramètres :
- le passage de paramètres par valeur
- le passage de paramètres par adresse (ou par variable)
a) passage par valeur
Dans ce mode de transmission, c’est la valeur des arguments qui est transmise au sous-programme appelé.
Il y a recopie des valeurs initiales des paramètres effectifs dans une zone locale du sous-programme.
programme PARAM
var A : entier
procédure plus1(X : entier)
début
X←X+1
Afficher X
fin
!Programme principal
début
A←0
afficher A
plus1(A)
afficher A
fin
Avant l’appel de plus1, on a la situation suivante :
- L’objet A contient la valeur 0
- L’objet A est représenté en mémoire centrale par un mot mémoire dont le contenu est 0