Vous êtes sur la page 1sur 22

Chapitre 4 :

Décomposition modulaire et sous-


programmes

1
Décomposition modulaire d’un programme

- La modularité est l’un des critères de qualité de l’écriture de logiciels.


- Elle repose sur la notion de modules (ou sous-programmes).

 Le programme qui en sera tiré, est écrit sous forme de modules.

- Un module est une partie de l’algorithme (ou du programme) qui :


- permet de regrouper des instructions possédant un lien logique,
- exécute une tâche bien définie,
- peut être appelée plusieurs fois à partir de l’algorithme principal.

2
Décomposition modulaire d’un programme

3
Décomposition modulaire d’un programme

- Un module est caractérisé par son interface :


- son nom,
- sa liste de paramètres,
- et éventuellement le type du résultat calculé par le module.

- Le module est exécuté à chaque fois que son nom est invoqué. Lors de l’appel d’un
module, le programme est interrompu, le module est exécuté, ensuite le programme
reprend.

- La notion de composant introduit de nouvelles possibilités, qui sont l’utilisation de


modules à partir de n’importe quel programme, écrit dans n’importe quel langage; le
langage de communication entre composants étant le langage binaire.
4
La portée des variables !!

- Les identificateurs (variables, constantes, types, sous-programmes) déclarés dans


un algorithme ou programme, ont un domaine de validité, appelé aussi portée.

- On distingue la portée globale et la portée locale.


- La portée globale : Un identificateur de portée globale est déclaré dans
l’algorithme principal. Il est valide dans tout l’algorithme, y compris dans
les sous-programmes.
- La portée locale : Un identificateur de portée locale à un module est
déclaré à l’intérieur de ce module. Il n’est pas reconnu par les autres
modules ou par l’algorithme principal. Les arguments d’un sous-programme
sont locaux à ce sous-programme.

5
Exemple : La portée des variables !!

L’algorithme est composé de :


- un algorithme dans lequel une variable X de type entier est déclarée,
- un module principal P, dans lequel une variable de type caractère appelée
C est déclarée,
- un module appelé A, dans lequel une variable Y de type entier est déclarée,
- un module B, dans lequel il y a la déclaration d’une variable réelle Z.

Portée des identificateurs : Définir les modules dans lesquels chacune des
variables de l’algorithme est reconnue.
Identificateur Portée
X
C
Y
Z
6
Exemple : La portée des variables !!
Portée des identificateurs: les modules dans lesquels chacune des variables de
l’algorithme est reconnue :

Identificateur Portée
X A , B, P
C P
Y A
Z B

La structure de l’algorithme correspond à la structure d’un programme en


langage C.
- Le module principal P correspond à la fonction main(),
- La variable X est déclaré comme étant une variable globale.
7
Décomposition modulaire d’un programme

Dans les langages structurés, on trouve deux sortes de module :


– les fonctions : ce sont des modules qui retournent des résultats,
– les procédures : ce sont des modules qui ne retournent pas de résultats,
ou au contraire, retournent plusieurs résultats.

8
Les procédures

• Une procédure est un sous programme qui peut effectuer un certain nombre de traitements
afin de réaliser un ou plusieurs résultats.

• La procédure peut être appelée à partir :


• de l’algorithme principal,
• d’un autre module (procédure ou
fonction).

9
Les procédures

• La procédure peut figurer avant ou après la fonction principale ‘main’.


• Si placée après la fonction principale, cela nécessite sa déclaration précédemment.
10
Déclaration d’une procédure
Avant la fonction main Après la fonction main
#include <stdio.h> #include <stdio.h>
void Salutation () void Salutation ();
{
void main ()
printf {
("Bonjour\n"); Salutation ();
} }
void main () void Salutation ()
{ {
printf
Salutation (); ("Bonjour\n");
} }
11
Les procédures

• La définition de la procédure, contient la liste des paramètres selon la syntaxe suivante :


• Remarque: Les paramètres sont optionnels, les parenthèses sont obligatoires.

• L’appel de la procédure se fait par son nom, en en lui passant les paramètres nécessaires
selon la syntaxe suivante:

12
Les procédures : Paramètre formel Vs. effectif

• Les paramètres effectifs remplacent les


paramètres formels utilisés dans la
définition de la procédure.
 Passage de paramètres

• NB: Lors de l’appel il faut respecter


l’ordre, le nombre et le type des paramètres.

13
Passage de paramètres

• Les paramètres donnée sont des variables utilisées pour effectuer des traitements
sans modifier leurs valeurs.
• Les paramètres résultat se sont des variables dans lesquelles on enregistre les
résultats des traitements. Ils seront modifiées après l’exécution de la procédure.
• Les paramètres donnée-résultat jouent les deux rôles précédents.

14
Passage de paramètres

15
Passage de paramètres

16
Les fonctions

• Une fonction est une procédure particulière qui retourne un seul résultat.
• L’ entête de la fonction contient :
• la liste de ses paramètres formels
• le type de retour (résultat)

L’instruction Return permet de communiquer


avec l’appelant, et lui transmet le résultat de la
fonction.
17
Les fonctions

• L’appel d’une fonction se fait


généralement à l’aide :
• D’une expression
• Une condition
• Une instruction d’affichage

• Traduire cet algorithme en un programme C.

18
19
Les fonctions

• Traduire cet algorithme en un programme C.

20
Exercice : Les procédures

Ecrire une procédure en C qui permet de permuter deux entiers a et b.

21
Les fonctions : Application

Ecrire la fonction carrée qui permet de calculer le carrée d’un entier.

Fonction Carré (X : entier)  entier int Carré ( int X )


Début {
Carrée  X * X ; Return (X * X) ;
Fin Fonction }

22

Vous aimerez peut-être aussi