Vous êtes sur la page 1sur 8

LesSousProgrammes ChapitreIII

me Classe:3 SI

LESSOUSPROGRAMMES
Introduction
Unprogrammedevienttrscompliqudsquelenombredetraitementsaugmente.Deplusonpeut rpter un mme traitement plusieurs foisdans un mme programme dans des diffrents endroits. Alors pour viter des problmes et mener bien llaboration dun programme, nous dsirons le dcomposerenactionssimplesetdenfairedesmodulesdistincts. UtiliserLanalyseModulaire

IntrtdelapprocheModulaire Amliorer lcriture de lalgorithme: Si une suite dinstructions figure plusieurs endroitsdunprogramme,ellepourraconstituerunsousprogramme Faciliterlarsolution duproblme en ne sintressant qularsolution algorithmique dunsousprogrammelafois Rutiliserdessousprogrammes. UnSousprogrammeestappelaussiunefonctionouuneprocdure

I. Lesfonctions
1. Activit1 EcrireunprogrammeMINIMUMquilitdeuxentiersN1etN2puisdtermineetafficheleurminimum 0)DbutalgorithmeMINIMUM 1)Ecrire(''DonnerN1'')Lire(N1) 2)Ecrire(''DonnerN2'')Lire(N2) 3)SiN1<N2alors MinN1 Sinon MinN2 FinSi 4)Ecrire(''LeMinimum='',Min) 5)Fin 2Dfinition Onappellefonctionunmodule(Sousprogramme)gnralementparamtre,retournantunrsultat Uniquedetypesimple (entier,rel,caractre,boolen)oudetypechanedecaractres. Unefonctionnepeutpasretourneruntableauoudeuxentiersparexemples

LaSquenceN3RenvoieUnseulrsultatde typesimple.Nouspouvonsremplacerparune fonctionMin

MouradBahri&NaimaBayoudh&LeilaBenNjima&IkramNasrallah&MedAliFarhat

Page1

LesSousProgrammes

me Classe:3 SI

3 Activit2 EcrirelafonctionMinquipermetdedterminerleMinimumdedeuxentiers. AnalysedelafonctionMin Rsultat=Min Traitement: MinR SiX<YAlors RX Sinon RY FinMIN AlgorithmedelafonctionMin FonctionMin(X,Y:entier):entier SiX<YAlors R X Sinon RY MinR Fin

ProgramMinimum UsesWincrt Var N1,N2:Integer FunctionMin(X,Y:integer):integer Var R:integer Begin IfX<Ythen R:=X Else R:=Y Min:=R End

LesvariablesGlobales: N1,N2 Lesvariableslocales R Lesparamtreseffectifs: N1,N2 LesparamtresFormels: X,Y

Begin Writeln(DonnerN1)Readln(N1) Writeln(DonnerN2)Readln(N2) Writeln(LeMinimum=,Min(N1,N2)) End.

4.Syntaxe Auniveaudeladfinitiondunefonction 0)FonctionNom_Fonction(Listedesparamtresformels):Typedersultatdelafonction 1)Instruction1 2)Instruction2 3) n1)Nom_Fonction Rsultat n)FinNom_Fonction

MouradBahri&NaimaBayoudh&LeilaBenNjima&IkramNasrallah&MedAliFarhat

Page2

LesSousProgrammes

me Classe:3 SI

Auniveaudelappel Unefonctionpeuttreappelepartir: duprogrammePrincipaldunautresousprogramme(module) dunautresousprogramme(Module) MNom_de_fonction(Paramtreseffectifs)

Retenons Les paramtres formels: sont les paramtres qui se trouvent dans lentte du sous programme. Lesparamtreseffectifs:sontlesparamtresquifigurent(dansleprogrammeoulesous programmeappelant)auniveaudelappeldusousprogramme. Les paramtres effectifs et les paramtres formels doivent saccorderdu point de vue nombre,ordreettypescompatibles. Unevariablelocale:estunevariabledclaredansunsousprogrammeetnestutilisable qulintrieurdeceluici Une variable globale: est une variable dclare dansla partie dclaration des variables du programme principal et est utilisable par le programme principal et par les sous programme.

Application1 EcrireunprogrammequipermetdedterminerleMinimumdeTroisentiers

IILesProcdures
1Activit1 EcrireunprogrammeEchangequilitdeuxentiersN1etN2puispermuteetafficheleurscontenus 0)DbutalgorithmeMINIMUM 1)Ecrire(''DonnerN1'')Lire(N1) 2)Ecrire(''DonnerN2'')Lire(N2) 3)ProcPermute(N1,N2) 4)Ecrire(''LaValeurDeN1='',N1,''LaValeurdeN2=,N2) 5)Fin 2Dfinition Comme pour les fonctions, les procdures sont aussi des sous programmes, mais loppos des fonctions,les procdures retournent des rsultats complexes o effectue des tches diverses (une actiondesortie,dentre,depermutationouautre).

MouradBahri&NaimaBayoudh&LeilaBenNjima&IkramNasrallah&MedAliFarhat

Page3

LesSousProgrammes

me Classe:3 SI

AnalysedelaProcdurePermute Rsultat=X,Y Traitement: ZX Xy YX

AlgorithmedelaprocdurePermute Procdurepermute(VarX,Y:entier) ZX XY YX FinPermute

3Syntaxe Auniveaudeladfinitionduneprocdure 0)procdureNom_procdure(Listedesparamtresformels) <traitement> n)FinNom_procdure

Auniveaudelappel Uneprocdurepeuttreappelepartir: duprogrammePrincipal dunautresousprogramme(module) Nom_procdure(Paramtreseffectifs) 4TraductionPascal ProgramPermutation UsesWincrt Var N1,N2:Integer ProcdurePermute(VarX,Y:Integer) Var Z:Integer Begin Z:=X X:=Y Y:=Z End LesvariablesGlobales: N1,N2 Lesvariableslocales Z Lesparamtreseffectifs: N1,N2 LesparamtresFormels: X,Y Begin Writeln(DonnerN1)Readln(N1) Writeln(DonnerN2)Readln(N2) Permute(N1,N2) Writeln(LaValeurDeN1=',N1,'LaValeur DeN2=,N2) End.
MouradBahri&NaimaBayoudh&LeilaBenNjima&IkramNasrallah&MedAliFarhat Page4

LesSousProgrammes

me Classe:3 SI

IIIApplication Deuxentiersmetnsontditsamissietseulementsilasommedesdiviseursdemsaufluimmeest galenetlasommedesdiviseursdensaufluimmeestgalem. Proposez une dcomposition modulaire de ce problme en justifiant le choix du type du module (procdureoufonction). Spcifiezleprogrammeprincipaletdressezl'algorithmecorrespondant. Spcificationduproblme Rsultat=Affichersinetmsontamisounom. Traitement: Pourvrifiersinetmsontamis,ilsuffitdecomparerlasommedediviseursdem(qu'onvaappeler sdm)netlasommedediviseursden(qu'onvaappeleraussisdn)m. Deuxcasseprsentent: Sisdm=netsdn=malorsmetnsontamis. Sinonilsnesontpasamis. Pourlecalculdelasommedediviseursdenetm,onferaappellafonctionDiviseurs. metndoiventtredeuxentiersstrictementpositifs,ils'agitdoncd'unesaisiecontrle. CettetcheataccordelaprocdureSaisie. AlgorithmeduprogrammePrincipal 0)DbutalgorithmeAmi 1)Saisie(n) 2)Saisie(m) 3)sdm<diviseurs(m) 4)sdn<diviseurs(n) 5)si((sdm=n)et(sdn=m)) AlorsEcrire(n,''et",m,"sontamis") SinonEcrire(n,''et",m,"nesontpasamis") Finsi 6)FinAmi Tableaudedclarationdesobjets Objet N M Sdm sdn Type/Nature entier entier entier entier Rle Variablestrictementpositive. Variablestrictementpositive. Variablequifaitlecumuldesdiviseursde m. Variablequifaitlecumuldesdiviseursden.

MouradBahri&NaimaBayoudh&LeilaBenNjima&IkramNasrallah&MedAliFarhat

Page5

LesSousProgrammes

me Classe:3 SI

SpcificationdelafonctionDiviseurs Rsultat=diviseurs Traitement: Diviseurssdx sdx1 Pouride1(XDIV2)faire Si(XMODi=0)alors sdxsdx+1 FinSI FinPour

AlgorithmedelafonctionDiviseurs 0)FonctionDiviseurs(X:entier): entier 1)sdx<1 Pouride1(XDIV2)faire Si(XMODi=0)alors sdx<sdx+1 FinSI FinPour 2)Diviseurs<sdx 3)FinDiviseurs

Spcificationdelaprocduresaisie Rsultat=x Traitement: Rpter X=donne (''Donnerunentierstrictement positif.") Jusqu'(x>0)

Algorithmedelaprocduresaisie 0)procdureSaisie(Varx:entier) 1)Rpter Ecrire(''Donnerunentier strictementpositif.") Lire(x) Jusqu'(x>0) 2)FinSaisie

MouradBahri&NaimaBayoudh&LeilaBenNjima&IkramNasrallah&MedAliFarhat

Page6

LesSousProgrammes

me Classe:3 SI

TraductionPascal Programactivite UsesWincrt Var M,n,sdm,sdn:Integer Functiondiviseurs(X:integer):integer Var Sdx,i:integer Begin Fori:=1to(xdiv2)do Ifxmodi=0then Sdx:=sdx+1 Diviseurs:=sdx End Proceduresaisie(VarX:integer) Begin Repeat Writeln(donnerunentier) 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,et,m,sontamis) Else Writeln(n,et,m,nesontpasamis) End.

LesvariablesGlobales: m,n,sdm,sdn Lesvariableslocales sdx,i Lesparamtreseffectifs: n,m LesparamtresFormels: X

MouradBahri&NaimaBayoudh&LeilaBenNjima&IkramNasrallah&MedAliFarhat

Page7

LesSousProgrammes

me Classe:3 SI

IIIPassagedeparamtresparvaleuretparvariable
Lesparamtreseffectifspeuventtretransmislaprocdurededeuxfaons: PassageparValeur Passageparvariable 1PassageparValeur A lappel de la procdure, la valeur du paramtre effectif est affecte au paramtre formel. Cette affectation est sans consquence sur le paramtre effectif ( c d ne modifie pas sa valeur initiale aprslexcutiondelaprocdure) 2PassageparVariable Pendant lexcution des instructions des la procdure, le paramtre formel et le paramtre effectif font rfrence la mme case mmoire. Donc toute modification dela valeur duparamtre formel entraneautomatiquementlamodificationdelavaleurduparamtreeffectif. AjouterVARavantlesparamtresformelsquiferontunmodedepassageparvariable

MouradBahri&NaimaBayoudh&LeilaBenNjima&IkramNasrallah&MedAliFarhat

Page8