Année Scolaire : 2010-2011 - 1 - LPS- 4 Maths 3 -
Chapitre V : Les sous-programmes
I- Introduction : 1- Principe:
- Tout problème peut être décomposé en un ensemble de sous-problèmes plus simples, distincts et dont certains sont répétitifs et utilisés à différents endroits d'un programme avec des données différentes.
- La solution de chaque sous-problème est un sous-programme ou module.
- On distingue les sous-programmes appelant et appelé.
La solution du problème est un programme principal qui fait appel aux différents modules en leur fournissant des objets appelés paramètres qui peuvent être:
o Des données (exemple : Tab, N du module Traitement) o Des données/ Résultats (exemple : Tab, N du module saisie)
o Des résultats (exemple : TabNeg, TabPos, NNeg, NPos du module Traitement) - Un module peut être une fonction ou une procédure.
- L’appel d’un module se fait via son nom suivi des paramètres effectifs qui vont se substituer aux paramètres formels du module.
2- Intérêts:
Facilité de résolution et meilleure lisibilité du programme
Réutilisation d’un module en cas de besoin
Localisation des erreurs rapide
Mise au point aisée et rapide et facilité de maintenance
Centralisation de la résolution du problème autour d'un programme principal
II-Déclaration et accès aux objets:
- Tout objet déclaré au niveau d’un module (constante, variable, types, autres fonctions) est dit objet local.
- Tous les objets utilisés dans un module où ils ne sont pas déclarés, sont dits des objets globaux déclarés au niveau du programme principal.
- Un objet déclaré dans un sous-programme SP à un niveau i n’est accessible que par ce sous-programme ainsi que les sous-programmes englobés par ce SP.
- Si on utilise le même nom d’objet dans un sous-programme et dans le programme principal (homonyme), alors tout au long du sous-programme, l’objet local va cacher l’objet global.
Programme Principal
X variable de type Entier Y variable de type réelObjets locaux du programmeprincipal Et objets globaux du
Sous-programme 1 et Sous-programme 1.1
Sous-programme 1
Y variable de type booléen V variable de type caractère W variable de type réelSous-programme 1.1
W constante=12Z variable de type entier
Z Entier W
=12
Objets locaux du Sous-programme 1.1 Y
Booléen
V Caractère
W Réel
W Réel W Réel Objets locaux du Sous-programme 1 Et Objets globaux du
Sous-programme 1.1 Y
Réel
Y Réel
Y Réel X
Entier
Objets locaux du programmeprincipal Et objets globaux du
Sous-programme 1 et Sous-programme 1.1
Année Scolaire : 2010-2011 - 2 - LPS- 4 Maths 3 - III-Les paramètres et leurs modes de transmission:
1-
Les paramètres: il
existe deux types de paramètres:a- Les paramètres formels :
Ce sont les paramètres qui figurent dans l’en-tête du sous-programme. Ces paramètres correspondent aux variables locales utilisées dans le corps du sous-programme.
b- Les paramètres effectifs :
Ce sont les paramètres utilisés dans l’instruction d’appel du sous-programme. Ils seront substitués aux paramètres formels lors de l’appel.
2- Les modes de transmission des paramètres:
C’est la substitution des paramètres effectifs aux paramètres formels. Il existe deux modes de passage.
a- Passage par valeur :
Les paramètres transmis par valeur font communiquer l’information dans un seul sens (de l’appelant à l’appelé).
Toute modification du contenu du paramètre dans le programme appelé est sans conséquence sur la valeur du paramètre effectif dans le programme appelant.
b- Passage par variable :
La communication de l’information se fait dans les deux sens. En effet, toute modification du contenu du paramètre formel entraîne automatiquement la modification du paramètre effectif.
NB : Dans l’entête du module appelé, il faut précéder les paramètres formels transmis par variable par le mot clé VAR.
Pour mieux comprendre le mode de passage, on peut se poser une question :
Est-ce que le paramètre formel va-t-il être modifié par le programme appelé?
Structure d’un programme Pascal :
Program Nom_programme;
Uses Wincrt;
Const Déclaration des constantes ; Type Déclaration des nouveaux types ;
Var Déclaration des variables globales et locales du programme principal ; Procedure Nom_procedure (Mode de passage + Liste des paramètres formels : Type) ; Déclaration des objets locaux
Déclaration des sous-programmes englobés par cette procédure ; Begin
Instructions de la procédure;
End ;
Function nom_fonction (Liste des paramètres formels : Type) : Type du résultat retourné Déclaration des objets locaux
Déclaration des sous-programmes englobés par cette fonction ; Begin
Instructions de la fonction;
End ; Begin
Instructions du programme principal ; End.
Passage par valeur.
Ce paramètre, après sa modification, serait-il utilisé par un autre sous programme ou par le programme principal?
Passage par variable.
Oui
Passage par valeur.
Non
Oui Non
Année Scolaire : 2010-2011 - 3 - LPS- 4 Maths 3 - IV-Les fonctions:
Une fonction est un sous-programme qui renvoie une seule valeur de type simple (entier, réel, caractère, chaîne de caractères, booléen). Ce type sera celui de la fonction.
Remarques:
Dans les fonctions, les paramètres formels ont un mode de passage par valeur.
Les paramètres effectifs et les paramètres formels doivent se correspondre de point de vue nombre, ordre et type.
Le résultat calculé doit être affecté au nom de la fonction obligatoirement avant la fin de la fonction.
Syntaxe de la fonction :
Analyse Algorithme
DEF FN nom_fonction (Liste des paramètres formels :Type) : Type du résultat retourné Résultat= nom_fonction résultat
…
… Traitement
…
Fin nom_fonction
Tableau de déclaration des objets locaux de la fonction :
Objet Type/Nature Rôle
0) DEF FN nom_fonction (Liste des paramètres formels :Type) : Type du résultat retourné 1) …
… Traitement
…
n-1) nom_fonction résultat calculé n) Fin nom_fonction
Pascal
FUNCTION nom_fonction (Liste des paramètres formels :Type) : Type du résultat retourné VAR
Déclaration des objets locaux ; Begin
…
… Traitement ;
…
nom_fonction := résultat calculé ; End ;
Au niveau de l’appel En algorithme : var FN nom_fonction (Liste des paramètres effectifs) En Pascal : var := nom_fonction (Liste des paramètres effectifs);
Année Scolaire : 2010-2011 - 4 - LPS- 4 Maths 3 - V-Les procédures:
Une procédure est un sous-programme qui renvoie 0 ou plusieurs résultats de type simple ou composé.
Remarques:
Dans les procédures, les paramètres formels doivent être précédés par leur mode de passage.
Le mode de transmission des paramètres par variable ne concerne que les procédures.
Les paramètres effectifs et les paramètres formels doivent se correspondre de point de vue nombre, ordre et type.
La saisie et l’affichage sont toujours des procédures.
Syntaxe de la procédure :
Analyse Algorithme
DEF PROC nom_procédure (Liste des paramètres formels :Type)
Résultat= Traitement Traitement= … … …
Fin nom_ procédure
Tableau de déclaration des objets locaux de la procédure :
Objet Type/Nature Rôle
0) DEF PROC nom_ procédure (Mode de passage + Liste des paramètres formels :Type) 1) …
… Traitement
…
n) Fin nom_ procédure
Pascal
PROCEDURE nom_ procédure (Mode de passage + Liste des paramètres formels :Type) VAR
Déclaration des objets locaux ; Begin
…
… Traitement ;
… End ;
Au niveau de l’appel En algorithme : PROC nom_procédure (Liste des paramètres effectifs)
En Pascal : nom_procédure (Liste des paramètres effectifs);