La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

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

Présentations similaires


Présentation au sujet: "1 Fonctions & procédures DEUG 2 Sciences économiques 2004/2005."— Transcription de la présentation:

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

2 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 3 Plan Quelques algorithmes sur les fonctions et les procédures Récursivité –Fonctions récursives –Procédures récursives

4 4 Exo1 Que va afficher la procédure d ? Procédure a(i: entier) Début i i+3 Fin Procédure Procédure b(val i: entier) Début i i+5 Ecrire(i) Fin Procédure Procédure c(i: entier) Début a(i) b(i) Fin Procédure Procédure d() Variable i:entier Début i 2 c(i) b(i) ecrire(i) Fin Procédure

5 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 6 Algorithme 1 1.On déclare dans la procédure AfficherC une variable T1 de type Tableau 2.On affecte à T1 les éléments du tableau T 3.On trie T1 en faisant appel à la procédure Trier(T1) 4.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 7 Algorithme 1 On écrit la procédure Affecter(T,T1) qui affecte les éléments de T à T1 Procédure Affecter(T, T1 : Tableau[10] dentiers) Variable i: entier Début Pour i = 1 à 10 T1(i) T(i) FinPour FinProcédure

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

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

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

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

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

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

14 14 Algorithme 2 Fonction ValMax(t : tablea[10] dentiers) Début Trier(t) ValMax T(10) Fin Fonction

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

16 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 17 Factorielle On sait que –n! = 1 si n=0 ou n=1 –n! = n * (n-1) ! Si n > 1 On a défini n! en fonction de (n-1)! Cette définition peut être utilisée dans la fonction fact(n)

18 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 19 Exemple : les suites récursives Soit la suite (U n ) n >0 avec –U 1 = 2 –U n = 3 * U n Ecrire une fonction U(n) qui prend un entier n puis retourne la valeur de U n

20 20 Les suites Fonction U(n : entier) : entier Variable i : entier Début Si n = 1 Alors i 2 FinSi Sinon i * U(n-1) FinSinon U i Fin Fonction

21 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 (U n )

22 22 La somme des n premiers termes Il nous faut donc trouver une définition récursive de S(n) S(n) = U 1 si n = 1 S(n) = U n + S(n-1) si n > 1

23 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 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 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) < 0 Le théorème des valeurs intermédiaires nous dit que f(x)=0 admet une solution unique dans lintervalle [a, b] a ba b cc

26 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 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) < 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) > 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 < 0,0001) –La valeur approchée de c sera alors (a+b)/2

28 28 Forme non récursive Fonction S(a, b : réel): réel Variable m : entier Début Tant que (b-a) > 0,00001 Faire m (a+b)/2 Si f(a) * f(m) < 0 Alors b m finsi Sinon a m FinSinon FinTantQue S (a+b) / 2 FinFonction

29 29 Forme récursive Comme toujours, il faut trouver une définition récursive de S Si (b-a) < 0,0001 alors –S(a,b) = (a+b)/2 Sinon –Si f(a) * f(m) <0 alors Calculer S(a,m) –Sinon Calculer S(m,b)

30 30 Forme récursive (suite) Fonction S(a,b : réel) : réel Variable c : réel Début Si (b-a) < 0,0001 Alors c (a+b)/2 FinSi Sinon Si f(a) * f( (a+b)/2) < 0 Alors c S(a, (a+b)/2) FinSi Sinon c S( (a+b)/2, b) FinSinon S c Fin fonction

31 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 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 < 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 33 Fonction Ind(T, V) Fonction Ind(T: Tableau[10] dentiers, V: entier) Variable a, b : entier Début a 1 b 11 Tant que T((a+b) Div 2) <> V Faire Si T((a+b) Div 2) > V Alors b (a+b) Div 2 FinSi Sinon a (a+b) Div 2 FinSinon FinTantque Ind (a+b) Div 2 Fin fonction

34 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 35 Procédure Afficher Procédure Afficher(i: entier, T:Tableau[10] dentiers) Début Ecrire( T(i) ) Si i < 10 Alors Afficher( i+1, 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 36 Que fait la procédure suivante ? Procédure a(i: entier, T: Tableau[10] dentiers) Début Ecrire( T(i) ) Si i > 1 Alors a(i-1, T) FinSi Fin Procédure


Télécharger ppt "1 Fonctions & procédures DEUG 2 Sciences économiques 2004/2005."

Présentations similaires


Annonces Google