Nous allons illustrer les notions de procédure appelante et de procédure appelée sur un exemple tiré du domaine des mathématiques.
Il s'agit d'implémenter la multiplication de deux entiers positifs A et B (A, B Î IN) par des additions successives. On a:
A*B = A + A + A + . . . + A, B termes égaux à A.
L'addition de deux entiers positifs non nuls A et B, à leur tour, peut être réalisée en construisant B fois le successeur (addition d'un entier A et de 1) de A:
A+B = Successor( Successor( . . . Successor( A )) . . . )
On obtient le programme Turbo-Pascal suivant:
PROGRAM Multiplication;
Uses Crt;
VAR A, B, P: Integer;
PROCEDURE Mult ( A, B: Integer; VAR M: Integer );
VAR I: Integer;
PROCEDURE Add ( A, B: Integer; VAR S: Integer );
VAR J: Integer;
PROCEDURE Successor ( VAR N: Integer );
BEGIN
N := N+1
END; {-- Successor}
BEGIN {Add}
J := 1;
S := A;
WHILE J<=B DO
BEGIN
Successor( S );
Successor( J )
END
END; {-- Add}
BEGIN {Mult}
I := 1;
M := 0;
WHILE I<=B DO
BEGIN
Add( M, A, M );
Add( I, 1, I )
END
END; {-- Mult}
BEGIN {main}
ClrScr;
Write( 'Entrer A: ' ); Readln( A );
Write( 'Entrer B: ' ); Readln( B );
Mult( A, B, P );
Writeln( A, ' * ', B, ' = ', P)
END. {-- Multiplication}
|
Py/Px |
main |
Mult |
Add |
Successor |
|
Mult |
( |
6 | ||
|
Add |
( |
6 | ||
|
Successor |
( |
6 |
(: Px appelle Py
6: Px peut appeler Py
Figure 11.1 Hiérarchie des procédures et possibilités d'appels
La figure 11.1 montre la hiérarchie des procédures ainsi que les possibilités d'appels. Les procédures Mult, Add sont des procédures appelantes. Les procédures Mult, Add et Successor sont des procédures appelées. Le programme principal est seulement appelant.
Evidemment chaque procédure peut faire appel à elle-même. Dans ce cas on parle de récursivité (voir chapitre 13).
© Aflo Informatique , 2003-2004