Vous êtes sur la page 1sur 27

Algorithmique

Chapitre XI Procdures et fonctions

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 )

Objectif : isoler cette partie de programme qui va tre rpte

Utiliser les procdures ou les fonctions

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

Synthse sur lexemple 1


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

Synthse sur lexemple 1

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

Utilisation de deux procdures, appeles TraitementOui () et TraitementNon ()


Si condition alors TraitementOui() Sinon TraitementNon() Fsi

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

4- Paramtres des procdures


4.1 - Paramtres en entre : Transmission par valeur

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

4- Paramtres des procdures


4.1 - Paramtres en entre : Transmission par valeur

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

4- Paramtres des procdures


4.1 - Paramtres en entre : Transmission par valeur
Procdure LectureOuiNon(Quest : Chaine de caractre) Debut // Le paramtre est indiqu entre parenthses // son type est soigneusement indiqu Ecrire Quest Rpter Lire Rep Tant que Rep <> O et Rep <> N Fin

11/12/2006

Gilles.Gesquiere@up.univ-mrs.fr

13

4- Paramtres des procdures


4.1 - Paramtres en entre : Transmission par valeur

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

4- Paramtres des procdures


4.1 - Paramtres en entre : Transmission par valeur

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

4- Paramtres des procdures


4.2 - Paramtres en sortie : transmission par adresse Exemple : Passage en paramtre de la rponse Rep
On peut crire : Procdure LectureOuiNon (Quest : Chaine de caractre, Rep : caractre) PB : La valeur de Rep nest pas connue lors de lappel

Deux types de communication de valeurs par paramtre apparaissent :


Les paramtres en entre Les paramtres en sortie

11/12/2006

Gilles.Gesquiere@up.univ-mrs.fr

16

4- Paramtres des procdures


4.2 - Paramtres en sortie : transmission par adresse

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

4- Paramtres des procdures


4.3 - Remarques

Dans les langages de programmation on parle de :

Passage de paramtre par valeur

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

Passage de paramtre par adresse

Le passage par adresse permet de faire entrer et sortir des valeurs dune procdure

11/12/2006

Gilles.Gesquiere@up.univ-mrs.fr

18

4- Paramtres des procdures


4.4 - Notations

Exemple : entre et / ou sortie dun paramtre numrique :


Entre de la valeur : P : numrique Entre et sortie de la valeur : P : numrique

11/12/2006

Gilles.Gesquiere@up.univ-mrs.fr

19

4- Paramtres des procdures


4.5 - Exemple

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

5 - Une procdure particulire : la fonction


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

5 - Une procdure particulire : la fonction

Pour dfinir une fonction, il suffit :

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

5 - Une procdure particulire : la fonction

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

5 - Une procdure particulire : la fonction

Programme principal de lexemple


Variable N : numrique Ecrire Somme des entiers de 1 jusqu ? Lire N Ecrire Somme (N)

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

6 - Variables locales et variables globales

Exemple : Somme des entiers de 1 N


Fonction Somme (Max : Numrique) : Numrique Dbut Variable i , Acc: numriques Acc 0 Pour i de 1 Max Faire Acc Acc + i finPour Rsultat Acc Fin

Les variables i et Acc sont dclares lintrieur de la fonction => Variables LOCALES
Gilles.Gesquiere@up.univ-mrs.fr
25

11/12/2006

6 - Variables locales et variables globales

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

7 - Dcomposition dun algorithme

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

Vous aimerez peut-être aussi