Chapitre6
L’analyse modulaire consiste à diviser un problèmes en sous problèmes de difficultés moindres. Ces derniers sont aussi assujetti à cette division, jusqu’à ce qu’on arrive à un niveau abordable de difficulté
Organisation et efficacité ( Séparation de difficultés et tâches )
Facilité de résolution ( Subdivision de problèmes en sous problèmes)
Facilité de maintenance du programme ( Localisation et correction d’erreurs)
Facilité de l’évolution de l’application ( Passage à une autre version)
Un
sous programme ( procédure ou fonction ) est tout simplement un programme déclaré
dans un autre programme.
Les
instructions relative au sous programme peuvent être exécutées plusieurs fois
au cours du traitement du programme grâce à
On
appelle un sous programme par son nom suivi d’une liste de paramètres
effectifs placées entre parenthèses et séparés par des virgules.
Au
moment de l’appel d’un sous programme chaque paramètre effectif
est substitué au paramètre formel correspondants déclarés lors de la définition
du sous programme.
Les paramètres formels (sous programme) et les paramètres effectifs (appel) doivent s’accorder de point de vue nombre, ordre et type compatible.

1-1
- Définition mathématique d’une fonction :
C’est une relation qui associe à un ou plusieurs éléments de l’ensemble de départ une image et une seule dans l’ensemble d’arrivé.
Exemple : f
:
IR X IR
IR
(x , y)
f ( x , y ) = 3x + 5y
f ( 6 , 2 ) = 3 x 6 + 5 x 2 = 28
1-2
- Définition algorithmique d’une fonction :

Une
fonction peut être appelée à partir :
d’un
programme principal
d’un autre sous programme
|
………….. FN nom_de_fonction(pe1, pe2, pen ) Pei : Paramètre effectif n°i |
Les
paramètres effectifs et les paramètres formels doivent s’accorder du
point de vue nombre, ordre et type compatible.
Il
existe 2 classes de fonctions : les fonctions prédéfinis et les
fonctions utilisateur à définir.
Au niveau analyse :
|
DEFFN nom_de_fonction (pf1: type1 ; … ; pfn: typen ) : type résultat |
||
| S | L.D.E | S |
|
|
Résultat = Nom_de_fonction Nom_de_fonction <Suite des définitions des objets apparus dans l’expression d’évaluation> Fin Nom_de_fonction |
Tableau de déclaration des objets locaux :
| OU | Code | Nature/Type | Rôle |
Au niveau algorithme :
1.----------------------
2.----------------------
3.----------------------
n-1..nom_de_fonction
Expression d’évaluation
n.FinNom_de_fonction
Au niveau programme PASCAL :
FUNCTION nom_de_fonction (pf1: type1 ; … ; pfn: typen ) : type résultat ;
CONST
VAR
BEGIN
< traitement >
nom_de_fonction :=
…………….. ;
END ;
Les sous programmes internes sont déclarés juste après la déclaration
des
variables globales du programme principal
ou appelant
.
1 / Définitions d’une procédure :
Une procédure est une structure de programme autonome qui permet d’effectuer une tâche spécifique et qui peut transmettre plusieurs résultats au programme appelant dans ses paramètres formels.
Quand il n’y a pas moyen de définir un module comme une fonction parce que son résultat est complexe ou multiple, on le définira comme une procédure
Une procédure peut être appelée à partir :
d’un programme principal
d’un autre sous programme
|
……….. PROC Nom_de_Procédure(pe1, pe2, pen ) Pei : Paramètre effectif n°i |
l’appel de la procédure se comporte comme une instruction
Les paramètres effectifs et les paramètres formels doivent s’accorder du point de vue nombre, ordre et type compatible.
Il existe 2 classes de procédures : les procédures prédéfinis ( Exemple : Lire, Ecrire, … ) et les procédures utilisateur à définir
Au niveau analyse :
|
DEFPROC nom_de_fonction (pf1: type1 ; … ; pfn: typen ) : type résultat |
||
| S | L.D.E | S |
|
|
Résultat = <Suite des définitions des objets apparus dans l’expression d’évaluation> Fin Nom_de_procédure |
Tableau de déclaration des objets locaux :
| OU | Code | Nature/Type | Rôle |
Au niveau algorithme :
1.------------------
2.------------------
3.------------------
n.Fin Nom_de_procédure
Au niveau programme PASCAL :
PROCEDURE (pf1: type1 ; … ; pfn: typen ) .
CONST
VAR
BEGIN
< traitement >
END ;
4/
Passage
de paramètre par valeur et par variable :
Les paramètres effectifs peuvent être transmis à la procédure de deux façons :
Passage par valeur .
Passage par variable.
5-1 Passage par valeur :
Avant
l’appel de la procédure, la valeur du paramètre effectif est affectée au
paramètre formel. Cette affectation est sans conséquence sur le paramètre
effectif c’est à dire, ne modifie pas sa valeur initiale après exécution
de la procédure.
5-2
Passage par variable :
Pendant l’exécution des instructions de la procédure, le paramètre formel et le paramètre effectif font référence à la même case. Donc toute modification du paramètre formel entraîne automatiquement une modification de la valeur du paramètre effectif.