Académique Documents
Professionnel Documents
Culture Documents
11/12/2006
Gilles.Gesquiere@up.univ-mrs.fr
1 - Introduction
Objectifs :
Dcomposer un problme en sous problmes Gnraliser lutilisation de certaines parties de programmes Eviter de rpter plusieurs fois les mmes lignes de code
Exemple : Nous voulons crer un programme qui permet de tester les connaissances dun lve. Ce programme pose des questions auxquelles il faut rpondre par O ou N.
11/12/2006
Gilles.Gesquiere@up.univ-mrs.fr
1 - Introduction
Variables Score : numrique Rptition de cette Variable Rep : caractre partie de programme Variable Question : Chane de caractre Score 0 Question Avez vous le droit de passer au rouge Ecrire Question Rpter Lire Rep Tant que (Rep <> O et Rep <> N ) Si Rep = N alors Score Score + 1 Fsi Question Devez vous vous engager dans une rue en sens interdit Ecrire Question Rpter Lire Rep Tant que (Rep <> O et Rep <> N ) Si Rep = N alors Score Score + 1 Fsi Ecrire Votre score est de ,Score
11/12/2006
Gilles.Gesquiere@up.univ-mrs.fr
1 - Introduction
Ecrire Question Rpter Lire Rep Tant que (Rep <> O et Rep <> N )
11/12/2006
Gilles.Gesquiere@up.univ-mrs.fr
2- Un premier exemple
Procedure LectureOuiNon () // Ligne de dclaration de la procdure Dbut // Dbut du corps de la procdure Ecrire Question Rpter Lire Rep Tant que (Rep <> O et Rep <> N ) Fin
11/12/2006
Gilles.Gesquiere@up.univ-mrs.fr
2- Un premier exemple
Appel de la procdure
Question Avez vous le droit de passer au rouge LectureOuiNon() // appel la procdure LectureOuiNon Si Rep = N alors Score Score + 1 Fsi Question Devez vous vous engager dans une rue en sens interdit LectureOuiNon() Si Rep = N alors Score Score + 1 Fsi Ecrire Votre score est de ,Score
11/12/2006
Gilles.Gesquiere@up.univ-mrs.fr
2- Un premier exemple
LectureOuiNon() est une procdure La dclaration de la procdure permet dattacher un nom une partie de programme Les appels la procdure permettent de dclencher son excution, en interrompant, le temps dexcuter le corps de la procdure, le droulement squentiel des instructions du programme
11/12/2006
Gilles.Gesquiere@up.univ-mrs.fr
2- Un premier exemple
Le droulement des instructions du programme reprend, ds que la procdure est termine, linstruction qui suit lappel Pour excuter lalgorithme, il faut commencer au dbut de la partie du programme que lon nomme programme principal
11/12/2006
Gilles.Gesquiere@up.univ-mrs.fr
3- Deuxime exemple
Lors dune alternative, possibilit dexcuter deux traitements diffrents comportant de nombreuses lignes
11/12/2006
Gilles.Gesquiere@up.univ-mrs.fr
3- Deuxime exemple
1.5 - Synthse sur lexemple 2 Utilisation de procdures :
Pour sparer diverses parties dun algorithme afin de mieux le structurer pour le rendre plus lisible Pour constituer des bibliothques de procdures permettant de rutiliser le code (bibliothque graphique, )
11/12/2006
Gilles.Gesquiere@up.univ-mrs.fr
10
Dans lexemple 1, les variables Question et Rep ont permis les communications de valeurs entre la procdure LectureOuiNon() et le programme principal. Ces deux variables sont dans le programme principal. Elles peuvent tre utilises dans la procdure.
Variables globales
11/12/2006
Gilles.Gesquiere@up.univ-mrs.fr
11
Ne pas utiliser trop de variables globales (problmes si grand nombre de variables) Prfrer lutilisation de paramtres Procdure ayant ses propres variables Correspondance entre ces variables et les valeurs utilises lors de lappel de la procdure Exemple : passage de la question avec un paramtre
11/12/2006
Gilles.Gesquiere@up.univ-mrs.fr
12
11/12/2006
Gilles.Gesquiere@up.univ-mrs.fr
13
Le programme principal :
Variable Score : numrique Variable Rep : caractre Score 0 LectureOuiNon( Peut on passer au feu rouge ? ) Si Rep = N alors Score Score + 1 Fsi LectureOuiNon( Doit on marquer un arrt au stop ? ) Si Rep = O alors Score Score + 1 Fsi Etc
Gilles.Gesquiere@up.univ-mrs.fr
11/12/2006
14
Synthse :
Le ou les paramtres sont crits entre parenthses Dans la dclaration de la procdure utilisation dun paramtre formel Lors de lappel de la procdure, utilisation dun paramtre effectif Dans le programme, LectureOuiNon( Peut on passer au feu rouge? ) est automatiquement affect au paramtre Quest => Disparition de la variable globale Question dfinie tout lheure
11/12/2006
Gilles.Gesquiere@up.univ-mrs.fr
15
11/12/2006
Gilles.Gesquiere@up.univ-mrs.fr
16
Paramtre en entre : La valeur du paramtre effectif est affecte avant lexcution de la procdure au paramtre formel (qui est une variable appartenant la procdure) Paramtre en sortie : Le paramtre formel est une autre dsignation du paramtre effectif, valable pendant la dure de la procdure.
11/12/2006
Gilles.Gesquiere@up.univ-mrs.fr
17
lappel de la procdure fait affecter une valeur la variable qui est dsigne par le paramtre formel Lordinateur utilise le paramtre formel comme une variable stocke en mmoire ladresse du paramtre effectif. Cette adresse est transmise la procdure au moment de son appel
Le passage par adresse permet de faire entrer et sortir des valeurs dune procdure
11/12/2006
Gilles.Gesquiere@up.univ-mrs.fr
18
11/12/2006
Gilles.Gesquiere@up.univ-mrs.fr
19
Procdure permettant de remplacer un nombre entier par le premier nombre premier qui est lui est suprieur ou gal :
Dfinition de la procdure : Procedure NombrePremierSuivant ( Val : numrique) Programme principal : Variables Nb : numrique Ecrire Entrez un nombre Lire Nb NombrePremierSuivant(Nb) Ecrire Le rsultat est : , Nb
11/12/2006
Gilles.Gesquiere@up.univ-mrs.fr
20
Procdure particulire qui peut renvoyer un rsultat Leur appel ne constitue pas lui seul une instruction, mais figure dans une expression Leur excution produit un rsultat qui prend la place de la fonction lors de lvaluation de lexpression Exemple : la fonction racine qui permet de calculer la racine carre dun nombre
Rac Racine_Carre (A)
11/12/2006
Gilles.Gesquiere@up.univ-mrs.fr
21
De la dclarer comme une procdure, en la faisant prcder du mot fonction et suivre du type rsultat De faire figurer dans le corps de la fonction le mot rsultat Le mot rsultat est suivi de la valeur ou de lexpression qui donne le rsultat fournir au programme
11/12/2006
Gilles.Gesquiere@up.univ-mrs.fr
22
Exemple : Algorithme o lon calcule la somme des entiers de 1 N en utilisant la fonction Somme.
Fonction Somme (Max : Numrique) : Numrique Dbut Acc 0 Rpter pour i = 1 Max Acc Acc + i FinPour Rsultat Acc Fin
11/12/2006
Gilles.Gesquiere@up.univ-mrs.fr
23
Lannonce du type lors de la cration de la fonction permet de vrifier que celui-ci est correct lors de lappel Remarque :
Ne dclarer les paramtres des fonction quen entre seulement Prfrer les procdures avec plusieurs paramtres en entre / sortie sil est ncessaire de renvoyer plusieurs rsultats
11/12/2006
Gilles.Gesquiere@up.univ-mrs.fr
24
Les variables i et Acc sont dclares lintrieur de la fonction => Variables LOCALES
Gilles.Gesquiere@up.univ-mrs.fr
25
11/12/2006
Dans une procdure, il est possible dutiliser des variables du programme principal
variables GLOBALES aucune variable locale ne doit porter le mme nom dans la procdure Ne pas utiliser de variables globales lintrieur de procdures => problmes deffets de bord
Attention :
11/12/2006
Gilles.Gesquiere@up.univ-mrs.fr
26
Possibilit dappeler une fonction ou une procdure lintrieur dune autre fonction ou dune autre procdure Permet de crer des algorithmes clairs et agrables lire Utilisation pour dcomposer un problme en sous problmes Question : mais o sarrter dans la dcomposition ? Exemple : Procdure Proc1 ()
Dbut Proc2 ()
Fin
11/12/2006
Gilles.Gesquiere@up.univ-mrs.fr
27