Fonctions - PowerPoint PPT Presentation

1 / 36
About This Presentation
Title:

Fonctions

Description:

On affecte T1 les l ments du tableau T. On trie T1 en faisant appel la proc dure ... On crit la proc dure Affecter(T,T1) qui affecte les l ments de T T1 ... – PowerPoint PPT presentation

Number of Views:37
Avg rating:3.0/5.0
Slides: 37
Provided by: maab
Category:

less

Transcript and Presenter's Notes

Title: Fonctions


1
Fonctions procédures
  • DEUG 2
  • Sciences économiques
  • 2004/2005

2
Ce qui a été vu
  • Fonctions
  • Définition et déclaration
  • Retourne une valeur
  • Utilisation dans un algorithme
  • Définition et utilisation en VBA
  • Procédures
  • Définition déclaration
  • Ne retourne pas de valeur
  • Utilisation dans un algorithme
  • Définition et utilisation en VBA

3
Plan
  • Quelques algorithmes sur les fonctions et les
    procédures
  • Récursivité
  • Fonctions récursives
  • Procédures récursives

4
Exo1
  • Que va afficher la procédure d ?

5
Algorithme 1
  • Soit T un tableau de 10 entiers
  • Supposons que lon dispose dune procédure
    Trier(T) qui
  • Trie par ordre croissant le tableau T qui lui est
    donné comme paramètre
  • Ecrire une procédure AfficherC(T) qui
  • affiche les éléments de T dans lordre croissant
  • Sans trier le tableau T

6
Algorithme 1
  • On déclare dans la procédure AfficherC une
    variable T1 de type Tableau
  • On affecte à T1 les éléments du tableau T
  • On trie T1 en faisant appel à la procédure
    Trier(T1)
  • On affiche les éléments de T1 à partir du premier
    élément
  • Noter que les étapes 2 et 4 peuvent être définies
    par des procédures

7
Algorithme 1
  • On écrit la procédure Affecter(T,T1) qui affecte
    les éléments de T à T1
  • Procédure Affecter(T, T1 Tableau10 dentiers)
  • Variable i entier
  • Début
  • Pour i 1 à 10
  • T1(i) ? T(i)
  • FinPour
  • FinProcédure

8
Algorithme 1
  • On écrit la procédure Afficher(T) qui affiche les
    éléments dun tableau
  • Procédure Afficher(T Tableau10 dentiers)
  • Variable i entier
  • Début
  • Pour i 1 à 10
  • Ecrire(T(i))
  • FinPour
  • FinProcédure

9
Algorithme 1
  • Maintenant, on peut définir AfficherC(T) plus
    facilement en utilisant les procédures dont on
    dispose
  • Procédure AfficherC(T Tableau10 dentiers)
  • Variable T1 Tableau10 dentiers
  • Début
  • Affecter(T, T1)
  • Trier(T1)
  • Afficher(T1)
  • FinProcédure

10
Algorithme 1
  • Que pensez-vous de la formulation suivante ?
  • Procédure AfficherC(Val T Tableau10 dentiers)
  • Début
  • Trier(T)
  • Afficher(T)
  • FinProcédure

11
Algorithme 1
  • Malheureusement en VBA, quand le paramètre est
    un tableau, on ne peut pas lappeler par valeur ?

12
Algorithme 2
  • En utilisant la procédure Trier(T), écrire une
    fonction ValMax(T) qui
  • Retourne la valeur maximale de T

13
Algorithme 2
  • Idée
  • Il suffit de trier T, ensuite
  • Afficher la valeur se trouvant dans la dernière
    case

14
Algorithme 2
  • Fonction ValMax(t tablea10 dentiers)
  • Début
  • Trier(t)
  • ValMax ? T(10)
  • Fin Fonction

15
Récursivité
  • On dit quune fonction est récursive quand dans
    sa définition on fait appel à cette même fonction

16
Exemple de fonction récursive
  • Ecrire une fonction fact(n) qui prend un enteir n
    puis retourne n!
  • Fonction fact(n entier) entier
  • Variable i, j entier
  • Début
  • j ? 1
  • pour i 1 à n
  • j ? j i
  • FinPour
  • fact ? j
  • FinFonction

17
Factorielle
  • On sait que
  • n! 1 si n0 ou n1
  • n! n (n-1) ! Si n gt 1
  • On a défini n! en fonction de (n-1)!
  • Cette définition peut être utilisée dans la
    fonction fact(n)

18
Factorielle
  • Fonction fact(n entier) entier
  • Variable i entier
  • Début
  • Si n 0 ou n 1 Alors
  • i ? 1
  • FinSi
  • Sinon
  • i ? n fact(n-1)
  • FinSinon
  • fact ? i
  • Finfonction

19
Exemple les suites récursives
  • Soit la suite (Un) n gt0 avec
  • U1 2
  • Un 3 Un-1 2
  • Ecrire une fonction U(n) qui prend un entier n
    puis retourne la valeur de Un

20
Les suites
  • Fonction U(n entier) entier
  • Variable i entier
  • Début
  • Si n 1 Alors
  • i ? 2
  • FinSi
  • Sinon
  • i ? 2 3 U(n-1)
  • FinSinon
  • U ? i
  • Fin Fonction

21
Toujours les suites
  • En utilisant la suite précédente, écrire une
    fonction récursive S(n) qui
  • Prend un entier n puis
  • Retourne la somme des n premiers termes de la
    suite (Un)

22
La somme des n premiers termes
  • Il nous faut donc trouver une définition
    récursive de S(n)
  • S(n) U1 si n 1
  • S(n) Un S(n-1) si n gt 1

23
La fonction S(n)
  • Fonction S(n entier) entier
  • variable i entier
  • Début
  • Si n 1 alors
  • i ? U(1)
  • FinSi
  • Sinon
  • i ? U(n) S(n-1)
  • FinSinon
  • S ? i
  • Fin Fonction

24
Version non récursive
  • Fonction S(n entier) entier
  • Variable i, j entier
  • Début
  • i ? U(1)
  • Pour j 2 à n
  • i ? i U(j)
  • FinPour
  • S ? j
  • Fin Fonction

25
Un dernier exemple pour la route
  • Soit la fonction numérique f telle que
  • f est définie, continue sur a, b,
  • f est strictement monotone sur a, b
  • f(a) f(b) lt 0
  • Le théorème des valeurs intermédiaires nous dit
    que f(x)0 admet une solution unique dans
    lintervalle a, b

a
b
b
a
c
c
26
Exemple (suite)
  • Il nous est demandé décrire une fonction qui
    retourne une valeur approchée de c telle que f(c)
    0

27
Principe de la méthode de dichotomie
  • Soit m le milieu de lintervalle a, b,
  • m (a b)/2
  • On teste le signe de f(a) f(m)
  • Si f(a) f(m) lt 0 alors ceci veut dire que c se
    trouve entre a et m
  • Nous pouvons donc rapprocher le b et le mettre au
    niveau de m
  • Si f(a) f(m) gt 0 alors ceci veut dire que c se
    trouve entre m et b
  • Nous pouvons donc rapprocher le a et le mettre au
    niveau de m
  • On va répéter ce processus jusquà ce que a et b
    soient très proches ( ex b a lt 0,0001)
  • La valeur approchée de c sera alors (ab)/2

28
Forme non récursive
  • Fonction S(a, b réel) réel
  • Variable m entier
  • Début
  • Tant que (b-a) gt 0,00001 Faire
  • m ? (ab)/2
  • Si f(a) f(m) lt 0 Alors
  • b ? m
  • finsi
  • Sinon
  • a ? m
  • FinSinon
  • FinTantQue
  • S ? (ab) / 2
  • FinFonction

29
Forme récursive
  • Comme toujours, il faut trouver une définition
    récursive de S
  • Si (b-a) lt 0,0001 alors
  • S(a,b) (ab)/2
  • Sinon
  • Si f(a) f(m) lt0 alors
  • Calculer S(a,m)
  • Sinon
  • Calculer S(m,b)

30
Forme récursive (suite)
  • Fonction S(a,b réel) réel
  • Variable c réel
  • Début
  • Si (b-a) lt 0,0001 Alors
  • c ? (ab)/2
  • FinSi
  • Sinon
  • Si f(a) f( (ab)/2) lt 0 Alors
  • c ? S(a, (ab)/2)
  • FinSi
  • Sinon
  • c ? S( (ab)/2, b)
  • FinSinon
  • FinSinon
  • S ? c
  • Fin fonction

31
Dichotomie
  • La méthode précédente sappelle  dichotomie 
    car
  • Elle procède par étapes et
  • À chaque étape, lintervalle de recherche est
    divisé par 2.
  • Ce principe peut être appliqué à plusieurs
    problèmes

32
Application de la dichotomie
  • Écrire une fonction Ind(T, V) qui retourne
    lindice de la valeur V dans le tableau T trié
    par ordre croissant
  • Principe
  • On compare V par rapport à la valeur se trouvant
    dans le milieu du tableau
  • Si V lt T(milieu) alors il faut la chercher dans
    la première moitié du tableau
  • Sinon, il faut la chercher dans la deuxième moitié

33
Fonction Ind(T, V)
  • Fonction Ind(T Tableau10 dentiers, V entier)
  • Variable a, b entier
  • Début
  • a? 1
  • b? 11
  • Tant que T((ab) Div 2) ltgt V Faire
  • Si T((ab) Div 2) gt V Alors
  • b ? (ab) Div 2
  • FinSi
  • Sinon
  • a ? (ab) Div 2
  • FinSinon
  • FinTantque
  • Ind ? (ab) Div 2
  • Fin fonction

34
Procédures récursives
  • Les procédures peuvent elles aussi être définies
    dune manière récursive.
  • Exemple, écrire une procédure récursive qui
    permet dafficher les éléments dun tableau de 10
    entiers.
  • Idée
  • si lélément à afficher est le dernier dans le
    tableau alors lécrire et sarrêter
  • Sinon, écrire lélément courant et afficher à
    partir du suivant

35
Procédure Afficher
  • Procédure Afficher(i entier, TTableau10
    dentiers)
  • Début
  • Ecrire( T(i) )
  • Si i lt 10 Alors
  • Afficher( i1, T)
  • FinSi
  • FinProcédure
  • Quand on fait dans lalgorithme
  • Afficher(3, T)
  • Cela veut dire quon veut afficher à partir de la
    3ème case

36
Que fait la procédure suivante ?
  • Procédure a(i entier, T Tableau10 dentiers)
  • Début
  • Ecrire( T(i) )
  • Si i gt 1 Alors
  • a(i-1, T)
  • FinSi
  • Fin Procédure
Write a Comment
User Comments (0)
About PowerShow.com