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