Remarque préliminaire:
Les paramètres dans les procédures jouent un rôle analogue à celui des paramètres dans les fonctions. Donc, cet important paragraphe concerne aussi bien les paramètres des procédures que ceux des fonctions.
Exemple: Considérons la figure suivante:
Figure 11.2 Deux carrés de même origine
qui est constituée de deux carrés de même origine, mais décalés de 180 degrés. Supposons que l'on dispose d'une bibliothèque "TurtleGraphics" de procédures et de fonctions qui renferme entre autres les cinq procédures suivantes décrivant les mouvements d'une tortue sur l'écran:
< Forward( X ): fait avancer la tortue de X unités de longueur dans la direction qui est spécifiée plus bas et en dessinant sur l'écran,
< Right( A ): modifie la direction future du déplacement de la tortue d'un angle égal à A degrés dans le sens de rotation des aiguilles d'une montre (sens mathématique négatif),
< PenUp: lève la plume de la tortue,
< PenDown: descend la plume de la tortue,
< Home: replace, sans dessiner, la tortue au centre de l'écran, en position PenDown, de manière que la direction de son déplacement futur soit celle d'un axe vertical, orienté du bas vers le haut.
Supposons que les angles sont mesurés en degrés et les déplacements en une unité de longueur quelconque.
Figure 11.3 Déplacement de la plume
A l'aide de cette "machine à dessiner" il est évident que le programme suivant trace deux carrés de 100 unités de côté et de même origine, décalés de 180 degrés, et permet ainsi de réaliser la figure 11.2.
Remarquons que, pour utiliser les procédures Forward, Right, PenUp, PenDown et Home dans un programme particulier, il suffit d'insérer la bibliothèque entière "TurtleGraphics" dans le programme. Ceci peut se faire soit de façon manuelle en utilisant un éditeur de textes, soit de façon automatique. En Turbo-Pascal, ceci peut se faire en utilisant l'instruction Uses. Dans ce cas, la bibliothèque "TurtleGraphics" doit être disponible sous forme d'une interface [angl. unit]. Les interfaces sont la base de la programmation modulaire en Turbo-Pascal. Elles sont utilisées pour créer des bibliothèques entières de sous-programmes que l'on peut inclure dans de nombreux autres programmes tout en évitant de rendre accessible le code source des sous-programmes, et pour diviser de grands programmes en modules de taille moins grande, liés entre-eux de façon logique.
L'instruction
Uses TurtleGraphics;
insite le compilateur Turbo-Pascal à rechercher la bibliothèque précompilée.
PROGRAM BiSquare;
Uses TurtleGraphics;
PROCEDURE Square100;
VAR I:Integer;
BEGIN
FOR I:=1 TO 4 DO
BEGIN
Forward( 100 );
Right( 90 )
END
END; {-- Square100}
BEGIN {main}
Home; {initialiser la plume}
Square100;
Right( 180 );
Square100;
END. {-- BiSquare}
Exemple: Si l'on veut réaliser le dessin de la figure 11.4
Figure 11.4
on doit nécessairement paramétriser la dimension du carré. A cet effet on remplacera la procédure Square100 par la procédure plus générale Square définie comme suit:
PROCEDURE Square ( SideLength: Integer );
VAR I: Integer;
BEGIN
FOR I:=1 TO 4 DO
BEGIN
Forward( SideLength );
Right( 90 )
END
END; {-- Square}
Si la procédure Square fait elle-aussi partie de la bibliothèque "TurtleGraphics", alors le programme permettant de réaliser la figure 11.4 va s'écrire:
PROGRAM NestedSquares;
Uses TurtleGraphics;
VAR SLength, I: Integer;
BEGIN
SLength := 100;
FOR I:=1 TO 4 DO
BEGIN
Home; Square( SLength );
Right( 180 ); Square( SLength );
SLength := SLength - 20
END
END. {-- NestedSquares}
On distingue les paramètres formels [angl. formal parameters] (SideLength dans la procédure Square) qui sont les noms des paramètres énumérés dans le prototype de la procédure des arguments actuels [angl. actual parameters], appelés aussi paramètres effectifs ou paramètres réels (SLength dans le programme principal), lesquels sont formés par les expressions qui apparaissent dans la liste d'arguments de l'instruction d'appel de la procédure.
Donc, pour passer des données à un sous-programme, que ce soit une procédure ou une fonction, on envisage deux manières différentes en langage Turbo-Pascal:
(1) la déclaration de variables au niveau global
Les variables qui sont déclarées dans la partie déclarative du programme principal, donc en dehors des sous-programmes, sont globales à tout le programme. C'est-à-dire, après leur déclaration elles sont accessibles par tous les sous-programmes, y compris, bien sûr, le programme principal lui-même. Cependant, cette façon de procéder est strictement déconseillée du fait possible de modification inattendue de la valeur d'une variable lors de l'appel d'un sous-programme.
(2) la déclaration de paramètres au niveau local
D'une manière générale, les paramètres sont un moyen pour passer des données à un sous-programme, que ce soit une procédure ou une fonction.
Dans l'entête d'un sous-programme, on annonce au reste du programme quel va être le prototype du sous-programme, c'est-à-dire, le nom et les paramètres éventuels dans le cas d'une procédure, respectivement le nom, les paramètres éventuels et le type dans le cas d'une fonction (voir le chapitre 12 sur les fonctions).
Le corps du sous-programme contient le traitement à effectuer par le sous-programme ainsi que d'éventuelles définitions et déclarations locales au sous-programme.
TERMES TECHNIQUES
argument actuel
corps d'un sous-programme
entête d'un sous-programme
paramètre
paramétriser
paramètre effectif
paramètre formel
paramètre réel
prototype
© Aflo Informatique , 2003-2004