Les paramètres en Pascal


1. Les paramètres en général
2. L'exercice proposé

Cliquez ici pour retourner aux thèmes d'exercices : ....Hyperlien vers page de cours HTML


1. Les paramètres en général
 

n s’intéresse ici aux langages impératifs de la famille des ALGOL (avec des structures de contrôle classiques). On envisage les rapports qu’il y a entre un programme appellant et un sous-programme appelé.
 
 
La notion de paramètre formel associée à la notion de paramètre effectif, permet de définir par des variables muettes le moyen de communiquer entre un programme appellant et un sous-programme appelé.


 

En réalité toutes les questions que l’on se pose reviennent à celle-ci :
 
Quel est l’effet sur un paramètre effectif transmis à un sous-programme, d’une modification éventuelle de la valeur du paramètre formel correspondant dans le corps du sous-programme.

l faut retenir qu’un paramètre effectif transmis au sous-programme appelé est un mécanisme d’accès à une information appartenant au programme appelant (ce peut être une valeur, ou un algorithme utilisé pour chaque accès à l’information transmise). Ci-dessous les 5 grand modes de passages des paramètres en programmation.
 
 
LECTURE SEULEMENT / PASSAGE PAR VALEUR

ans un passage par valeur, le paramètre formel est traité comme une variable locale dans le corps du  sous-programme; valeur initialisée au début de chaque exécution du sous-programme avec la valeur du paramètre effectif correspondant.

en ALGOL W :   procedure sp(... REAL VALUE x ....)
en Pascal  :   procedure sp(...  x: real ....)
en Java : void sp( ... float x ...)


 
 
 
ECRITURE SEULEMENT / PASSAGE PAR RESULTAT

ans un passage par résultat, le paramètre formel est traité comme une variable locale au sous-programme, dont la valeur initiale à chaque appel est indéfinie, et dont la valeur finale est affectée au paramètre effectif correspondant.

Remarque : l’utilisation comme paramètre, d’une constante ou d’une expression est une erreur

en ALGOL W :  procedure sp(... REAL RESULT x ....)
en Pascal  :   pas de représentation
en java  :   pas de représentation


 
 
 
LECTURE / ECRITURE

PASSAGE PAR VALEUR-RESULTAT

ans un passage comme valeur-résultat le paramètre formel est traité comme une variable locale au corps du sous-programme, elle reçoit au moment de chaque appel la valeur du paramètre effectif correspondant et sa valeur finale est affectée au paramètre effectif après chaque exécution du sous-programme. Ce passage est la combinaison des passages par valeurs et par résultat.

en ALGOL W   procedure sp(... REAL VALUE RESULT x ....)
en Pascal  :   pas de représentation
en java  :   pas de représentation


 
 

PASSAGE PAR ADRESSE (ou PAR REFERENCE)

ans un passage par adresse le paramètre formel est traité comme une variable dont l’adresse qui est transmise au moment de chaque appel, est celle du paramètre effectif correspondant.

Attention : 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.

en ALGOL W   pas de représentation
en Pascal     procedure sp (....var x : real .....)
en FORTRAN et en PL/1 c’est le mode habituel
en java  :   seuls les objets sont passés par référence


 
 

PASSAGE PAR NOM :

e mode correspond à une véritable substitution textuelle du paramètre formel par le paramètre effectif.

dans un passage par nom l’exécution de toute instruction du sous-programme faisant intervenir le paramètre formel est équivalente à l’exécution de la même instruction où l’on aurait remplaçé le nom du paramètre formel par celui du paramètre effectif.

en ALGOL W :  c’est le mode habituel
en Pascal  :   pas de représentation
en java  :   pas de représentation
 

Remarque
ans le passage par nom, si le sous-programme possède une variable locale de nom “n”,  il n’y a pas d’ambiguïté, car il suffit de façon abstraite de renommer nLoc cette variable, car c’est effectivement ce qu’il se passe.

En pascal, dans une même en-tête de procédure on peut trouver les deux mmodes de passage des paramètres effectifs (par valeur et par référence) :


ici x et y sont passés par valeur et t par référence.



2. L'exercice proposé

'assistant vous propose 8 exercices  sous formes de petit programme pascal contenant des fonctions ou des procédures avec en bleu les paramètres formels proposé et en rouge un appel avec des paramètres effectifs dans le programme principal. Certains de ces appels sont corrects d'autres sont incorrects à vous de déterminez la justesse deu programme :

Une fois votre choix arrêté, vous cliquez sur l'un des deux boutons radio rouges (correct ou incorrect), l'assistant vous renvoie alors une réponse auditive assortie d'une explication sur le passage de paramètre.