Chapitre6

 

L'Analyse Modulaire

 

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é

« Diviser les difficultés en autant de parcelles qu’il se peut afin de mieux les résoudre. » Descartes

Intérêt de l’analyse modulaire :

Notion de sous programmes :

 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 à des appels.

 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-Les fonctions

1/ Définitions:

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 :

    On appelle fonction un module (sous programme) généralement paramètré   et retournant un résultat unique et de type simple ( un entier, un réel, un caractère, un booléen ) ou de type chaîne.

Une fonction ne peut pas retourner un tableau ou deux entiers par exemples

2/Appel d’une fonction :

 Une fonction peut être appelée à partir :

 

…………..  FN nom_de_fonction(pe1, pe2, pen ) 

Pei : Paramètre effectif n°i

      

3/ Définition et déclaration d’une fonction :

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          Expression d’évaluation

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

0.DEFFN Nom_de_fonction(PF1 :type1 ;PF2 :type2…) : type résultat ;

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    .

2-Les procédures

 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 

2/Appel d’une procédure :

 Une procédure peut être appelée à partir :

………..  PROC Nom_de_Procédure(pe1, pe2, pen ) 

Pei : Paramètre effectif n°i

 

3/ Définition et déclaration d’une procédure :

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 :

0.DEFFN Nom_de_procédure(PF1 :type1 ;PF2 :type2…)  ;

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 :

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.

Ajouter VAR avant les paramètres formels qui feront un mode de passage par variable