Vous êtes sur la page 1sur 43

Fonctions et procdures

DEUG Sciences conomiques 2004/2005

Ce qui a t vu
Tableaux deux dimensions Quelques algorithmes

Problme
Ds quon commence crire des programmes sophistiqus, il devient difficile davoir une vision globale sur son fonctionnement Difficult de trouver des erreurs Solution : dcomposer le problme en sous problmes
Trouver une solution chacun La solution partielle donne lieu un sous-programme

Programmation procdurale
Principe:
Il sagit dcrire des programmes en utilisant des sous-programmes

Forme gnrale dun programme Programme P Sous-programme SP1 Sous-programme SPn FinP
4

Exemple
Algorithme qui teste si M est la matrice inverse de N Algorithme A A1: Lecture de M A2: Lecture de N A3: Affecter O le rsultat de M*N A4: Tester si O est lidentit A5: Affichage du message adquat Fin A
5

Procdures & Fonctions


En algorithmique, on distingue deux types de sous-programmes
Les procdures Les fonctions

Plan
Fonctions
Paramtres Type retourn

Procdures
Paramtres Appel par variable Appel par valeur

Fonctions : structure
Une fonction est un sous-programme qui :
A un nom Peut avoir des paramtres Qui retourne une valeur dun certain type Qui peut avoir besoin de variables Qui est compos dinstructions

Fonctions : dclaration

Fonction nomf (<paramtres>): type Dclaration des variables Dbut instructions nomf expression Fin fonction
9

Fonctions : Exemple
Fonction qui retourne le carr dun entier : Fonction carr(n : entier): entier Dbut carr n * n fin fonction

10

Fonction: utilisation dans un algorithme


Algorithme ex1 Variable i, j: entier Fonction carr(n : entier): entier Dbut carr n * n fin fonction Dbut Lire (i) Ecrire(carr(i)) j carr(i) Ecrire(j) Fin

11

Fonctions: A retenir
Une fonction retourne toujours une valeur

Une fonction NomF contient toujours une instruction de la forme NomF Expression
Il ne faut jamais utiliser dinstructions de la forme f(paramtres) expression

En gnral, lutilisation dune fonction se fait Soit par une affectation: v f(paramtres) Soit dans lcriture: Ecrire ( f(paramtres) )
12

Fonctions : quelques exercices


Ecrire une fonction qui
Prend un tableau de 5 entiers, puis Retourne la valeur Vraie ou Faux selon que le tableau est tri par ordre croissant ou non

13

Fonctions : Principe du test


On suppose dabord que le tableau est tri Ensuite on compare chaque case sa suivante:
Si lordre nest pas respect alors on conclut que le tableau nest pas tri

14

Fonction : test du tri


Fonction tri( T: Tableau[5] dentiers): Boolen Variable i : entier Variable b : boolen Dbut b Vrai Pour i = 1 4 Si T(i) > T(i+1) alors b Faux FinSi FinPour tri b Fin Fonction 15

Fonction : exemple
Ecrire un algorithme qui
lit un tableau de 5 entiers puis teste sil est tri ou pas

16

Fonction : exemple
Algorithme ex1 Variable T1 : tableau[5] dentier Variable i : entier Fonction Tri() Fin fonction Dbut Pour i = 1 5 Lire( T1(i)) Fin Pour Si Tri(T1) = Vrai Alors Ecrire( cest tri ) FinSi Sinon Ecrire( Non tri ) FinSinon Fin

17

Fonctions : en VBA
Function tri(t() As Integer) As Boolean Dim b As Boolean Dim i as Integer b = True For i = 1 To 4 If t(i) > t(i + 1) Then b = False End If Next tri = b End Function
18

Fonctions : utilisation dans un programme VBA


Sub ex1() Dim T1(5) As Integer Dim i As Integer For i = 1 To 5 T1(i) = InputBox("donner un entier") Next If tri(T1) = True Then MsgBox ("tri") Else MsgBox ("non tri") End If End Sub
19

Fonctions : VBA
VBA propose plusieurs fonctions qui sont dj dfinies et quon peut utiliser dans nos programmes Exemples :
Sqr : retourne la racine carre
Sqr(4) retourne 2

exp : retourne lexponentielle dun nombre


Exp(0) retourne 1

20

Procdures : dfinition
Une procdure est un sous-programme qui ne retourne pas de valeur Cest donc un type particulier de fonction En gnral, une procdure modifie la valeur de ses paramtres
Je dis bien en gnral , ce nest pas toujours le cas

21

Procdures : structure
Tout comme les fonctions, une procdure est un sous-programme qui :
A un nom Peut avoir des paramtres Qui retourne une valeur dun certain type Qui peut avoir besoin de variables Qui est compos dinstructions
22

Procdures : dclaration

Procdure nomf (<paramtres>) Dclaration des variables Dbut instructions Fin procdure
23

Procdures : exemple
Une procdure qui ajoute 2 un entier procdure aug2(n : entier) Dbut n n+2 Fin Procdure

24

Procdures : dans les algorithmes


Ecrire un algorithme qui
Lit un entier positif n puis Affiche tous les nombres impaires infrieurs n

25

Procdure : dans les algorithmes


Algorithme ex1 Variable i,n: entier Procdure Aug2(..) Fin Procdure Dbut Lire(n) i1 Tant que i n Ecrire(i) aug2(i) Fin TantQue Fin
26

Procdures : A retenir
Une procdure ne retourne pas de valeur
Il est donc faux de laffecter une variable
Ne pas crire : j aug2(i)

27

Procdures : en VBA
Sub aug2(n as integer) n = n +2 End sub Tous les programmes quon a crits jusqu prsent taient en fait
Des procdures sans paramtres

28

Procdures : appel en VBA


Sub aug2(n as integer) n = n +2 End sub Sub ex() Dim i, n as integer n=InputBox( donner n ) i=1 While i <= n MsgBox(i) call aug2(i) Wend End Sub
29

Procdures & fonctions : appels imbriqus


Dans la dfinition dune procdure, on peut faire appel une autre procdure ou fonction dj dfinie Mme remarque pour les fonctions

30

Procdures & fonctions : appels imbriqus


Procdure aug4(n : entier) Dbut aug2(n) aug2(n) Fin Procdure

31

Procdures & fonctions : appels imbriqus


Fonction Puiss4(n : entier) : entier Dbut Puiss4 Carr(Carr(n)) Fin Fonction

32

Procdure : Appel par variable versus appel par valeur


En gnral, les procdures modifient leurs paramtres. Ceci cause du fait que par dfaut, elles travaillent sur les variables elles mme Dans certains cas, on ne veut pas que la procdure modifie ses paramtres
on lui prcise quelle doit travailler sur leurs valeurs Dans ce cas, la procdure travaille sur une copie des paramtres
33

Procdure: mode dappel


Exemple : on veut crire un algorithme qui
saisit un tableau dentiers puis affiche ses lments dans lordre croissant

34

Procdure : mode dappel


Ide :
On lit le tableau T On fait appel une procdure qui trie T On parcourt ensuite les lments du premier jusquau dernier

Il ne faut par contre pas que le tableau soit tri dfinitivement La procdure doit donc travailler sur une copie non pas sur le tableau lui mme
35

Procdure : Appel par valeur


Si on veut quun des paramtres ne soit pas modifi par la procdure, il faut le faire prcder par le terme Val Exemple: Procdure TrierEtAfficher(val t:tableau[5] dentiers) Fin procdure

36

Procdures : appel par valeur en VBA


Il faut faire prcder les paramtres par le mot rserv
ByVal

Sub ab(ByVal i as integer) i=Sqr(i) MsgBox(i) End Sub


37

Procdures & fonctions: exemple complet


Reprendre lalgorithme de tri et le dvelopper cette fois-ci en utilisant des fonctions et des procdures Procdure de saisie du tableau Fonction qui retourne lindice de la valeur max dans une partie du tableau Procdure qui change les valeurs de deux cases

Procdure qui fait le tri en utilisant la fonction et les 2 procdures ci-dessus


38

Procdure de saisie
Procdure saisir(t:tableau[5] dentiers) variable i: entier Dbut Pour i = 1 5 Lire(t(i)) Fin Pour Fin Procdure

39

Fonction qui retourne lindice de la valeur max dans une partie du tableau
Fonction IndMax (t: tabelau[5] dentiers, i: entier) variable j, Max: entier Dbut Max i Pour j = i 5 Si t(Max) < t(j) Alors Max j FinSi Fin Pour IndMax Max Fin Fonction
40

Procdure qui change les cases i et j


Procdure changer(i, j : entier, t: tableau[5] dentiers) Variable Z : entier Dbut Z t(i) t(i) t(j) t(j) Z Fin Procdure

41

Procdure de Tri
Procdure Trier(T: Tableau[5] dentiers) Variable i: entier Pour i = 1 4 Echanger(i, IndMax(i,T), T) FinPour FinProcdure
42

Algorithme de saisie et de tri


Algorithme ex Variable T: Tableau[5] dentiers Dbut Saisir(T) Trier(T) Fin
43

Vous aimerez peut-être aussi