You are on page 1of 8

Les Sous Programmes  Chapitre III 

ème  Classe : 3  SI 

LES SOUS PROGRAMMES 
Introduction 
Un programme devient très compliqué dès que le nombre de traitements augmente. De plus on peut  répéter  un  même  traitement  plusieurs  fois dans  un  même  programme  dans  des  différents  endroits.  Alors  pour  éviter  des  problèmes  et  mener  à  bien  l’élaboration  d’un  programme,  nous  désirons  le  décomposer en actions simples et d’en faire des modules distincts. Utiliser L’analyse Modulaire 

·

Intérêt de l’approche Modulaire  ü  Améliorer  l’écriture  de  l’algorithme :  Si  une  suite  d’instructions  figure  à  plusieurs  endroits d’un programme, elle pourra constituer un sous programme  ü  Faciliter la résolution  du problème  en  ne  s’intéressant  qu’à la résolution  algorithmique  d’un sous programme à la fois  ü  Réutiliser des sous programmes.  Un Sous programme est appelé aussi une fonction ou une procédure 

I.  Les fonctions 
1.  Activité 1  Ecrire un programme MINIMUM qui lit deux entiers N1 et N2 puis détermine et affiche leur minimum  0) Début algorithme MINIMUM  1) Ecrire ('' Donner N1'')  Lire (N1)  2) Ecrire ('' Donner N2'')  Lire (N2)  3) Si N1 < N2 alors  Min ß N1  Sinon  Min ßN2  Fin Si  4) Ecrire ('' Le Minimum='', Min)  5) Fin  2­ Définition  On appelle fonction un module (Sous programme) généralement paramétrée, retournant un résultat  Unique de type simple  (entier, réel, caractère, booléen) ou de type chaîne de caractères.  Une fonction ne peut pas retourner un tableau ou deux entiers par exemples 

La Séquence N° 3 Renvoie Un seul résultat de  type simple. Nous pouvons remplacer par une  fonction Min

Mourad Bahri & Naima Bayoudh & Leila Ben Njima & Ikram Nasrallah & Med Ali Farhat 

Page 1 

 Syntaxe  Au niveau de la définition d’une fonction  0) Fonction « Nom_Fonction » (Liste des paramètres formels) :«Type de résultat de la fonction »  1) Instruction1  2)  Instruction2  3) …………………………  n­1) Nom_Fonction ß  Résultat  n) Fin « Nom_Fonction »  Mourad Bahri & Naima Bayoudh & Leila Ben Njima & Ikram Nasrallah & Med Ali Farhat  Page 2  . Y : integer ) : integer ;  Var  R: integer  Begin  If X < Y then  R:= X  Else  R:= Y;  Min := R ;  End;  Les variables Globales :  N1.  4. Y : entier) : entier  Si X < Y Alors  R ß  X  Sinon  R ß Y  Min ß R  Fin  Program Minimum ;  Uses Wincrt;  Var  N1. N2)) ;  End. N2  Les variables locales  R  Les paramètres effectifs :  N1. Min (N1. Y Begin  Writeln ( ‘ Donner N1’) ; Readln ( N1);  Writeln (‘ Donner N2’ ) ; Readln ( N2) ;  Writeln (‘Le Minimum=‘.Les Sous Programmes  ème  Classe : 3  SI  3­  Activité 2  Ecrire la fonction Min qui permet de déterminer le Minimum de deux entiers. N2  Les paramètres Formels :  X. N2 : Integer;  Function  Min  ( X.  Analyse de la fonction Min  Résultat = Min  Traitement :  Min ß R  Si X< Y Alors  R ß X  Sinon  R ß Y  Fin MIN  Algorithme de la fonction Min  Fonction Min (X.

  les  procédures  sont  aussi  des  sous  programmes. d’entrée. N2)  5) Fin  2­ Définition  Comme  pour  les  fonctions. de permutation ou autre). les  procédures  retournent  des  résultats  complexes  où  effectue  des  tâches  diverses  (une  action de sortie.  Une variable locale : est une variable déclarée dans un sous programme et n’est utilisable  qu’à l’intérieur de celui­ci  Une  variable  globale :  est  une  variable  déclarée  dans la  partie  déclaration  des  variables  du  programme  principal  et  est  utilisable  par  le  programme  principal  et  par  les  sous  programme.  mais  à  l’opposé  des  fonctions. ordre et types compatibles. '' La Valeur de N2=‘‘. N2)  4) Ecrire ('' La Valeur De N1=''.Les Sous Programmes  ème  Classe : 3  SI  Au niveau de l’appel  Une fonction peut être appelée à partir : · du programme Principal d’un autre sous programme (module) · d’un autre sous programme (Module)  M ß Nom_de_fonction (Paramètres effectifs) Retenons  Les  paramètres  formels :  sont  les  paramètres  qui  se  trouvent  dans  l’entête  du  sous  programme.  Les  paramètres  effectifs  et  les  paramètres  formels  doivent  s’accorder du  point  de  vue  nombre.  Application1  Ecrire un programme qui permet de déterminer le Minimum de Trois entiers  II ­ Les Procédures  1 ­ Activité 1  Ecrire un programme Echange qui lit deux entiers N1 et N2 puis permute et affiche leurs contenus  0) Début algorithme MINIMUM  1) Ecrire ('' Donner N1'')  Lire (N1)  2) Ecrire ('' Donner N2'')  Lire (N2)  3) Proc Permute (N1.  Mourad Bahri & Naima Bayoudh & Leila Ben Njima & Ikram Nasrallah & Med Ali Farhat  Page 3  .  Les paramètres effectifs : sont les paramètres qui figurent (dans le programme ou le sous  programme appelant) au niveau de l’appel du sous programme. N1.

  Mourad Bahri & Naima Bayoudh & Leila Ben Njima & Ikram Nasrallah & Med Ali Farhat  Page 4  . Y : Integer)  Var  Z: Integer ;  Begin  Z := X ;  X := Y ;  Y :=Z ;  End;  Les variables Globales :  N1. N2  Les paramètres Formels :  X. Y Begin  Writeln ( ‘ Donner N1’) ; Readln ( N1);  Writeln (‘ Donner N2’) ; Readln (N2) ;  Permute (N1. N2  Les variables locales  Z  Les paramètres effectifs :  N1. N2);  Writeln  (‘La Valeur De N1='. Y  Traitement :  Z ß X  X ß y  Y ß X  Algorithme de la procédure Permute  Procédure permute (Var X. Y : entier)  Z ß X  X ß Y  Y ß X  Fin Permute  3­ Syntaxe  Au niveau de la définition d’une procédure  0) procédure « Nom_procédure » (Liste des paramètres formels)  < traitement >  ………………  n) Fin « Nom_procédure »  Au niveau de l’appel  Une procédure peut être appelée à partir : · du programme Principal · d’un autre sous programme (module)  Nom_procédure (Paramètres effectifs)  4­ Traduction Pascal  Program Permutation ;  Uses Wincrt;  Var  N1. ' La Valeur  De N2=‘.Les Sous Programmes  ème  Classe : 3  SI  Analyse de la Procédure Permute  Résultat = X. N2) ;  End. N1. N2  : Integer;  Procédure Permute  (Var X.

  Traitement :  Pour vérifier si n et m sont amis. ''et". m.  Cette tâche a été accordée à la procédure Saisie.  Variable strictement positive. m."sont amis")  Sinon Ecrire (n.  Variable qui fait le cumul des diviseurs de  m.  Proposez  une  décomposition  modulaire  de  ce  problème  en  justifiant  le  choix  du  type  du  module  (procédure ou fonction).  Spécification du problème  Résultat = Afficher si n et m sont amis ou nom.  m et n doivent être deux entiers strictement positifs. on fera appel à la fonction Diviseurs.  Variable qui fait le cumul des diviseurs de n.  Sinon ils ne sont pas amis." ne sont pas amis")  Fin si  6) Fin Ami  Tableau de déclaration des objets  Objet  N  M  Sdm  sdn  Type / Nature  entier  entier  entier  entier  Rôle  Variable strictement positive.  Deux cas se présentent:  Si sdm = n et sdn = m alors m et n sont amis. ''et".  Spécifiez le programme principal et dressez l'algorithme correspondant.  Algorithme du programme Principal  0) Début algorithme Ami  1) Saisie (n)  2) Saisie (m)  3) sdm<­­­­ diviseurs (m)  4) sdn<­­­­ diviseurs (n)  5) si ((sdm = n) et (sdn = m))  Alors Ecrire (n. Mourad Bahri & Naima Bayoudh & Leila Ben Njima & Ikram Nasrallah & Med Ali Farhat  Page 5  .  Pour le calcul de la somme de diviseurs de n et m.Les Sous Programmes  ème  Classe : 3  SI  III­ Application  Deux entiers m et n sont dits amis si et seulement si la somme des diviseurs de m sauf lui même est  égale à n et la somme des diviseurs de n sauf lui même est égale à m. il suffit de comparer la somme de diviseurs de m (qu'on va appeler  sdm) à n et la somme de diviseurs de n ( qu'on va appeler aussi sdn) à m. il s'agit donc d'une saisie contrôlée.

")  Jusqu'à (x>0)  Algorithme de la procédure saisie  0) procédure Saisie (Var x: entier)  1) Répéter  Ecrire (''Donner un entier  strictement positif.")  Lire (x)  Jusqu'à (x>0)  2) Fin Saisie Mourad Bahri & Naima Bayoudh & Leila Ben Njima & Ikram Nasrallah & Med Ali Farhat  Page 6  .Les Sous Programmes  ème  Classe : 3  SI  Spécification de la fonction Diviseurs  Résultat = diviseurs  Traitement :  Diviseurs ß sdx  sdx ß 1  Pour i de 1 à (X DIV 2) faire  Si (X MOD i = 0) alors  sdx ß sdx + 1  Fin SI  Fin Pour  Algorithme de la fonction Diviseurs  0) Fonction Diviseurs (X : entier) :  entier  1) sdx <­­­­­ 1  Pour i de 1 à (X  DIV 2) faire  Si (X MOD i = 0) alors  sdx <­­­­­­­ sdx + 1  Fin SI  Fin Pour  2) Diviseurs <­­­­­­­ sdx  3) Fin Diviseurs  Spécification de la procédure saisie  Résultat = x  Traitement :  Répéter  X = donnée  (''Donner un entier strictement  positif.

’ ne sont pas amis’) ;  End. sdm. n. sdm. i : integer  Begin  For i:= 1 to ( x div 2 ) do  If  x mod i = 0 then  Sdx := sdx + 1 ;  Diviseurs := sdx;  End;  Procedure saisie ( Var X : integer) ;  Begin  Repeat  Writeln( ‘donner un entier ) ;  Readln ( X);  Until ( X >0);  End;  Begin  Saisie (n) ;  Saisie (m) ;  Sdm := diviseurs (m)  sdn := diviseurs (n)  If  ((sdm = n) And  (sdn = m)) then  Writeln  (n.  Les variables Globales :  m. sdn : Integer;  Function  diviseurs (X : integer) : integer ;  Var  Sdx . ‘et’.Les Sous Programmes  ème  Classe : 3  SI  Traduction Pascal  Program activite ;  Uses Wincrt;  Var  M. m  Les paramètres Formels :  X Mourad Bahri & Naima Bayoudh & Leila Ben Njima & Ikram Nasrallah & Med Ali Farhat  Page 7  .m. n.m. i  Les paramètres effectifs :  n.’sont amis’)  Else  Writeln (n. ‘et’. sdn  Les variables locales  sdx.

  Cette  affectation  est  sans  conséquence  sur  le  paramètre  effectif  (  c  à  d  ne  modifie  pas  sa  valeur  initiale  après l’exécution de la procédure)  2­ Passage par Variable  Pendant  l’exécution  des  instructions  des  la  procédure.  la  valeur  du  paramètre  effectif  est  affectée  au  paramètre  formel.  Donc  toute  modification  de la  valeur  du paramètre  formel  entraîne automatiquement la modification de la valeur du paramètre effectif.  Ajouter VAR avant les paramètres formels qui feront un mode de passage par variable Mourad Bahri & Naima Bayoudh & Leila Ben Njima & Ikram Nasrallah & Med Ali Farhat  Page 8  .  le  paramètre  formel  et  le  paramètre  effectif  font  référence  à la  même  case  mémoire.Les Sous Programmes  ème  Classe : 3  SI  III ­ Passage de paramètres 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  1­ Passage par Valeur  A  l’appel  de  la  procédure.