Vous êtes sur la page 1sur 10

Chapitre 5 ® Les sous programmes (A & N) Classe: 4èmeSc.

I- INTRODUCTION :
Un problème posé est souvent très complexe. Afin de simplifier sa résolution, nous devons le décomposer en sous
problèmes indépendants et de taille réduite.
II-L'ANALYSE MODULAIRE:
1. Définition : L’analyse modulaire consiste à diviser un problème en sous problèmes de difficultés moindres. Ces
derniers sont aussi soumis à cette division jusqu'à ce qu’on arrive à un niveau abordable de difficulté.
2. Intérêts de l'analyse modulaire :
 Plus d’organisation en séparant les difficultés et les taches.
 S’occuper d’un seul problème à la fois.
 En cas d’erreur la division en module permet de savoir quel module à corriger.
 Plus facile à faire évoluer.
 Permet d’éviter la répétition d’un même traitement dans un programme.
3. Notion de sous-programme:
Un sous-programme peut se présenter sous forme d’une procédure ou d’une fonction. Il est semblable à un
programme, déclaré dans un programme principal ou dans un sous-programme et dont la partie traitement peut
être exécuté plusieurs fois au cours de l’exécution d’un autre sous-programme grâce à des appels. On distinguera
alors les sous-programmes "appelant" et "appelé". (Exemple de construction d’une maison).
III- LES PROCEDURES :
1. Définition : Les procédures sont des sous-programmes qui peuvent avoir zéro, un ou plusieurs résultats.
2. Vocabulaire et syntaxe:
 Au niveau algorithme :
Algorithme (A) Algorithme (N)
0) DEF PROC nom_procedure (pf1: type1, …, pfn: typen) procedure nom_procedure (pf1: type1, …, pfn: typen)
1) Traitement début
2) Fin nom_procedure instruction1

instructionn
Fin
 Au niveau T.Pascal :
Program nom_program ;
Uses Wincrt ;
{partie déclaration des objets globaux}
………. ; En python

Procedure nom (paramètres formels: type); def nom_procedure (pf1, pf2, …, pfn) :
partie déclaration des objets locaux ; instruction1
Begin …
Traitement; instructionn
End;
………… ;
Begin
……….. ;
{appel de la procédure}
……….. ;
End.
3. Appel à une procédure : L’appel d’une procédure se fait dan un programme principal ou dans un autre sous-programme.
 La syntaxe : Au niveau Algorithme Au niveau T. Pascal
PROC nom_procédure (pef1, pef2, …., pefn) Nom_procédure (pef1, pef2, …., pefn);
{pefi : paramètre effectif}
Au niveau Algorithme Au niveau Python
nom_procédure (pef1, pef2, …., pefn) nom_procédure (pef1, pef2, …., pefn);
{pefi : paramètre effectif}
Exercice1: Ecrire un programme qui permet de saisir deux entiers a et b >0 puis permuter leurs valeurs enfin les afficher.
Algorithme (A) Algorithme (N)
 Algorithme du programme principal:  Algorithme du programme principal:
0) Début permutation Algorithme permutation
1) PROC saisir (a,b) Début
2) PROC permuter (a,b) saisir (a,b)
3) PROC afficher (a,b) permuter (a,b)
4) Fin permutation afficher (a,b)
Fin
Lycée Jendouba 1/6 A.S :2021/2022
Chapitre 5 ® Les sous programmes (A & N) Classe: 4èmeSc.
T.D.O (Globaux)
Objet Type/Nature
a entier
b entier
saisir, permuter, afficher procédures
Algorithme (A) Algorithme (N)
 Algorithme de la procédure saisir:  Algorithme de la procédure saisir:
0) DEF PROC saisir(Var a :entier , Var b :entier) procedure saisir(@ a :entier , @ b :entier)
1) [ ] Répéter Début
Ecrire("a= ") , Lire(a) [ ] Répéter
Ecrire("b= ") , Lire(b) Ecrire("a= ") , Lire(a)
Jusqu’à (a > 0) ET (b > 0) Ecrire("b= ") , Lire(b)
2) Fin saisir Jusqu’à (a > 0) ET (b > 0)
Fin
 Algorithme de la procédure permuter:  Algorithme de la procédure permuter:
0) DEF PROC permuter (Var a : entier, Var b : entier) procedure permuter (@ a : entier, @ b : entier)
1) x a Début
2) a b x a
3) b c a b
b c
4) Fin permuter
Fin
T.D.O (Locaux)
Objet Type/Nature
T.D.O (Locaux)
Objet Type/Nature
x entier
x entier
 Algorithme de la procédure afficher:  Algorithme de la procédure afficher:
0) DEF PROC afficher (Var a : entier, Var b : entier) procedure afficher (@ a : entier, @ b : entier)
1) Ecrire ("a = ", a , "b = ",b) Début
2) Fin afficher Ecrire ("a = ", a , "b = ",b)
Fin
Exercice2: Traduire l'algorithme de l’Exercice1 en T. Pascal.
Traduction en T.Pacsal Implémentation en Python

Lycée Jendouba 2/6 A.S :2021/2022


Chapitre 5 ® Les sous programmes (A & N) Classe: 4èmeSc.
IV- Accès aux objets et les paramètres et leur mode de transmission :
1. Accès aux objets : Les fonctions et les procédures utilisent les objets globaux et les objets locaux :
a) Les objets locaux: tous les objets (constantes, types, variables et sous-programme) déclarés dans un sous-
programme sont dits locaux à celui-ci.
b) Les objets globaux: les objets utilisés dans un sous-programme et non déclarés dans celui-ci sont des objets
globaux déclarés ailleurs.(pp.)
c) Accès aux objets: tous les objets locaux d'un sous-programme sont inaccessibles: par le programme
principal, par les sous programmes déclarés au même niveau que le sous programme considéré, par le sous
programme qui englobent les sous-programmes considéré.
2. Les paramètres et leur mode de transmission:
On distingue deux types de paramètres:
a) Les paramètres formels: qui figurent dans la définition de la procédure.
Exemple :
Définition de la procédure : appel de la procédure :
Affichage(T :Tab, n :entier) Affichage(T1, taille)

Paramètres formels paramètres effectifs


b) Les paramètres effectifs: qui figures dans l'appel de la procédure et qui sont manipulés par celle-ci.
Remarque: Les paramètres formels et les paramètres effectifs doivent s'accorder de point de vue nombre et
ordre et leurs types doivent être identique ou compatible, selon le mode de passage des paramètres.
c) Mode de passage des paramètres: il existe 2 modes de passage des paramètres: le mode par valeur et le
mode par variable(adresse/référence). Pour le cas de fonction, nous définissions seulement le mode par valeur.
➔ Mode de passage par variable/adresse:
 Le passage de paramètres par variables permet au programme appelant de transmettre une valeur au
sous-programme appelé et inversement.
 Dans l'entête de la procédure, on doit précéder les paramètres formels transmis par variable (adresse)
par le mot clé VAR / (le symbole @ ).
Appelant Appelé
Remarques :
 Toute modification du paramètre formel entraîne automatiquement la modification de la valeur du
paramètre effectif.
 Si nous avons plusieurs paramètres formels de même type et qui ont un passage par adresse, ils doivent
être précédés par « @ ». Exemple : procedure nom_procedure (@ A, B : Entier, X, Y : Réel)
 En Python: Ne pas mettre les paramètres formels passés par adresse dans l’entête de la procédure on doit
mettre les paramètres formels passés par adresse dans le corps de la procédure précédés du mot «global».
➔ Mode de passage par valeur:
 Permet au programme appelant de transmettre une valeur au sous-programme appelé.
 Le transfert d'information est effectué dans un seul sens : du programme appelant vers le sous-
programme appelé.
 Au moment de l'appel, la valeur du paramètre effectif est copiée dans la variable locale désignée par les
paramètres formels correspondants.
Appelant Appelé
Remarques :
 Toute modification du paramètre formel est sans conséquence sur le paramètre effectif.
 L’appel d’une procédure est une instruction.

V-LES FONCTIONS :
1. Définition : Une fonction est un sous-programme qui renvoie (retourne) une valeur d’un seul type. Ce type sera
celui de la fonction. Lors de l'utilisation d'une fonction, il faut:
 Spécifier le type de la fonction
 Déclarer, si nécessaire, une variable locale de même type que la fonction (pour faire les traitements intermédiaires)
 Affecter le résultat de calcul de la fonction au nom de la fonction, obligatoirement, avant la fin du bloc.(A)

Lycée Jendouba 3/6 A.S :2021/2022


Chapitre 5 ® Les sous programmes (A & N) Classe: 4èmeSc.
 Retourner le résultat de la fonction stocké dans la variable déjà utilisée (variable locale).(N)
2. Vocabulaire et syntaxe:
 Au niveau Algorithme :
Algorithme (A) Algorithme (N)
0) DEF FN nom_fonction (pf1:type1,.,pfns: typen) :TypeRés fonction nom_fonction (pf1: type1, …, pfn: typen):TypeRés
1) Traitement début
instruction1
2) nom_fonction  Res
instructionn
3) Fin nom_fonction
retourner résultat
Fin
 Au niveau T. Pascal :
Program nom_program ;
Uses Wincrt ;
{partie déclaration des objets globaux}
………. ; En python
FUNCTION nom_fonction (paramètres formels : type) : type résultat ; def nom_fonction(pf1, pf2, …, pfn) :
Partie déclaration des objets locaux ;
instruction1
Begin
Traitement ; …
Nom_fonction := Res; instructionn
{Res est une variable contenant le résultat return résultat
que doit retourner la fonction après traitement effectué}
End ;

………… ;
Begin
……….. ;
{appel de la fonction}
……….. ;
End.
3. Appel d’une fonction : Une fonction peut être appelée à partir du programme principal ou d’un autre sous-programme.
 La syntaxe : Au niveau Algorithme Au niveau T. Pascal
V  FN nom_fonction (pef1, pef2, …., pefn) V := nom_fonction (pef1, pef2, …. , pefn);
{pefi : paramètre effectif}
Au niveau Algorithme Au niveau Python
Objet  nom_fonction (pef1, pef2, …., pefn) Objet = nom_fonction (pef1, pef2, …., pefn)
{pefi : paramètre effectif}
4. Caractéristiques :
 Les paramètres effectifs et les paramètres formels doivent se correspondre de point de vue nombre et ordre et type.
 Tous les paramètres formels d’une fonction ont un mode de passage par valeur.
 Une fonction possède un type, c'est celui du résultat quelle calcule.
 On appelle une fonction en utilisant simplement son nom suivi de la liste des paramètres effectifs séparé par des virgule (,)
 L'ordre des sous programmes est important, lorsqu’ un sous programme fait appel à un autre, alors ce dernier doit être définit avant.
 L’appel d’une fonction est une expression.
 La fonction retourne un seul résultat (Entier, Réel, Booléen, Caractère ou Chaîne de caractères).
Exercice3:Écrire un programme qui permet de saisir deux entiers x et y<=9 puis calculer la puissance xy enfin afficher le résultat.
 Algorithme du programme principal: T.D.O (Globaux)
Algorithme calcul Objet Type/Nature
Debut x,y Entier
saisir (x,y) p Entier long
p puissance(x,y) saisir Procédure
Ecrire("x à la puissance y= ",p) puissance Fonction
Fin
 Algorithme de la procédure saisir:  Algorithme de la fonction puissance:
procedure saisir(Var x,y :entier) fonction puissance (x,y : entier) : Entier
Debut Debut
[ ] Répéter [res1] Pour i de 1 à y faire
Ecrire("x= ") , Lire(x) res  res * x
Ecrire("y= ") , Lire(y) Finpour
Jusqu’à (x ≤ 9) ET (x ≤ 9) Retourner res
Fin Fin
T.D.O (Locaux)

Lycée Jendouba 4/6 A.S :2021/2022


Chapitre 5 ® Les sous programmes (A & N) Classe: 4èmeSc.
Objet Type/Nature
res Entier
i Entier
Exercice4: Traduire l'algorithme de l’Exercice3 en T. Pascal.
Traduction en T.Pacsal Implémentation en Python

 Application1:Ecrire l’algorithme du programme nommé Tableau qui permet de remplir un tableau T de n entiers (5≤ n ≤ 10), puis
calculer et afficher la somme des éléments du tableau T, le maximum, le minimum des éléments de T puis afficher le tableau T.
 Algorithme du programme principal:  Algorithme de la fonction somme:
0) Début Tableau 0) DEF FN somme (Var T :Tab, n :entier): Entier
1) PROC saisir (n) 1) [ s  0 ]
2) PROC remplir (T,n) Pour i de 1 à n faire
3) sm FN somme(T,n) s  s + T[i]
4) Ecrire("La somme de T= ",sm) Finpour
5) mx FN max(T,n) 2) somme s
6) Ecrire("Le maximum de T = ",mx) 3) Fin somme
T.D.O (Locaux)
7) mn FN min(T,n)
Objet Type/Nature
8) Ecrire("Le minimum de T = ",mn) i Entier
9) PROC afficher (T,n) s Entier
10) Fin Tableau  Algorithme de la fonction max:
T.D.N.O 0) DEF FN max (Var T :Tab , n :entier): Entier
Type 1) [ ma T[1] ]
Pour i de 2 à n faire
Tab = Tableau de n entiers
[ ]Si ma < T[i] Alors
T.D.O (Globaux) ma  T[i]
Objet Type/Nature FinSi
n Entier Finpour
sm , mx , mn Entier 2) max ma
T Tab
saisir , afficher Procédures
3) Fin max
somme , max , min Fonctions T.D.O (Locaux)
Objet Type/Nature
 Algorithme de la procédure saisir: i Entier
0) DEF PROC saisir(Var n :entier) ma Entier
1) [ ] Répéter  Algorithme de la fonction min:
Ecrire("n= ") , Lire(n)
0) DEF FN min (Var T :Tab , n :entier): Entier
Jusqu’à (n ≥ 5) ET (n ≤ 10)
1) [ mi T[1] ]
2) Fin saisir
Pour i de 2 à n faire
 Algorithme de la procédure remplir: [ ]Si mi > T[i] Alors
0) DEF PROC remplir(Var T : Tab , Var n :entier) mi  T[i]
1) [ ] Pour i de 1 à n faire FinSi
écrire("T[",i,"]= "), lire(T[i]) Finpour
Fin pour 2) min mi
2) Fin remplir 3) Fin min
T.D.O (Locaux) T.D.O (Locaux)
Objet Type/Nature Objet Type/Nature
i Entier i Entier
mi Entier
 Algorithme de la procédure afficher:
0) DEF PROC afficher(Var T : Tab , Var n :entier) T.D.O (Locaux)
Lycée Jendouba 5/6 A.S :2021/2022
Chapitre 5 ® Les sous programmes (A & N) Classe: 4èmeSc.
1) [ ] Pour i de 1 à n faire Objet Type/Nature
écrire(T[i]) i Entier
Fin pour
2) Fin afficher

 Algorithme du programme principal:  Algorithme de la fonction somme:


Algorithme Tableau
Fonction somme ( T :Tab, n :entier): Entier
Début
Début
saisir (n)
[ s0 ]
remplir (T,n)
Pour i de 0 à n-1 faire
sm somme(T,n)
s  s + T[i]
Ecrire("La somme de T= ",sm)
Finpour
mxmax(T,n)
Retourner s
Ecrire("Le maximum de T = ",mx)
Fin
mn min(T,n)
T.D.O (Locaux)
Ecrire("Le minimum de T = ",mn)
afficher (T,n) Objet Type/Nature
Fin i Entier
T.D.N.O s Entier
Type  Algorithme de la fonction max:
Tab = Tableau de n entiers Fonction max ( T :Tab , n :entier): Entier
T.D.O (Globaux) Début
Objet Type/Nature [ ma T[0] ]
n Entier Pour i de 1 à n-1 faire
sm , mx , mn Entier [ ]Si ma < T[i] Alors
T Tab ma  T[i]
saisir , afficher Procédures FinSi
somme , max , min Fonctions Finpour
Retourner ma
 Algorithme de la procédure saisir:
Fin
procedure saisir ( @ n :entier)
T.D.O (Locaux)
Début
Objet Type/Nature
[ ] Répéter
i Entier
Ecrire("n= ") , Lire(n)
ma Entier
Jusqu’à (n ≥ 5) ET (n ≤ 10)
Fin  Algorithme de la fonction min:
Fonction min (T :Tab , n :entier): Entier
 Algorithme de la procédure remplir: Début
procedure remplir ( @ T : Tab , @ n :entier) [ mi T[0] ]
Début Pour i de 1 à n-1 faire
[ ] Pour i de 0 à n-1 faire [ ]Si mi > T[i] Alors
écrire("T[",i,"]= "), Lire(T[i]) mi  T[i]
Fin pour FinSi
Fin Finpour
T.D.O (Locaux) Retourner mi
Objet Type/Nature Fin
i Entier T.D.O (Locaux)
Objet Type/Nature
i Entier
mi Entier

 Algorithme de la procédure afficher:


T.D.O (Locaux)
procedure afficher(@ T : Tab , @ n :entier)
Objet Type/Nature
Début
i Entier
[ ] Pour i de 0 à n-1 faire
écrire(T[i])
Fin pour
Lycée Jendouba 6/6 A.S :2021/2022
Chapitre 5 ® Les sous programmes (A & N) Classe: 4èmeSc.
Fin

Lycée Jendouba 7/6 A.S :2021/2022


Chapitre 5 ® Les sous programmes (A & N) Classe: 4èmeSc.
program tableau;
Entête du programme principal
uses wincrt;
Type Tab = array[1..20] of integer ;
Partie de déclaration d’un nouveau type
Var n,sm,mx,mn : integer;
Partie de déclaration des objets globaux
T : Tab ;
procedure saisir (var n : integer ); Entête de la procédure
begin
repeat
write('Donner n = ');
readln(n);
Paramètre(s) formel(s) de la procédure
until (n>=5) and (n<=10);
end;
procedure remplir (var T : Tab, n : integer); Entête de la procédure.
var i : integer ; Partie déclaration des objets locaux de la procédure.
begin
for i := 1 to n o
begin Corps ou partie instructions qui sera exécuté lors de l’a
write( ' T[ ', i , ' ] = ');
readln(T[i]);
end ;
end;
function somme (T : Tab , n: integer): integer ; Entête de la fonction.
var i,s : integer; Partie déclaration des objets locaux de la fonction.
begin
s:= 0 ;
for i:=1 to n do
Corps ou partie instructions qui sera exécuté lors de l’a
s:= s + T[i] ;

somme:= s ;
end; Nom de la fonction prend le résultat de calcul.
function max (T : Tab , n: integer): integer ; Entête de la fonction.
var i,ma : integer; Partie déclaration des objets locaux de la fonction.
begin
ma:= T[1] ;
for i:=2 to n do
if ma < T[i] Then
ma := T[i] ;
Nom de la fonction prend le résultat de calcul.
max:= ma ;
end;
function min (T : Tab , n: integer): integer ; Entête de la fonction.
var i,mi : integer; Partie déclaration des objets locaux de la fonction.
begin
mi:= T[1] ;
for i:=2 to n do
if mi > T[i] Then
mo := T[i] ;

min:= mi ; Nom de la fonction prend le résultat de calcul.


end;
begin
saisie(n);
remplir(T,n);
sm :=somme(T,n) ;
writeln('La somme de T = ',sm) ;
Corps du programme principal (pg. appelant).
mx :=max(T,n) ;
writeln('Le maximum de T = ',mx) ;
Lycée Jendouba 8/6 A.S :2021/2022
Chapitre 5 ® Les sous programmes (A & N) Classe: 4èmeSc.
mn :=min(T,n) ;
writeln('Le minimum de T = 'snm) ; Liste des paramètres effectifs des sous programmes
afficher(T,n); appelés.
end.

Lycée Jendouba 9/6 A.S :2021/2022


Chapitre 5 ® Les sous programmes (A & N) Classe: 4èmeSc.

Entête de la procédure

n est un objet global

Entête de la procédure.
t est un objet global

Entête de la procédure afficher.

Entête de la fonction som.

La fonction retourne le résultat de calcul s

Entête de la fonction max.

La fonction retourne le résultat de calcul mx

Entête de la fonction min.

La fonction retourne le résultat de calcul mn

Corps du programme
principal (pg. appelant).

Lycée Jendouba 10/6 A.S :2021/2022

Vous aimerez peut-être aussi