Les algorithmes recurrents
Upcoming SlideShare
Loading in...5
×
 

Les algorithmes recurrents

on

  • 9,109 views

 

Statistics

Views

Total Views
9,109
Views on SlideShare
9,108
Embed Views
1

Actions

Likes
6
Downloads
575
Comments
9

1 Embed 1

https://www.facebook.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
  • merci
    Are you sure you want to
    Your message goes here
    Processing…
  • mercyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
    Are you sure you want to
    Your message goes here
    Processing…
  • Bravo c'est trop claire merci Bcp :)
    Are you sure you want to
    Your message goes here
    Processing…
  • merci
    Are you sure you want to
    Your message goes here
    Processing…
  • merci
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Les algorithmes recurrents Les algorithmes recurrents Document Transcript

  • Enseignant : Mohamed SAYARI 4 SI Algorithmique & Programmation LES ALGORITHMES RECURRENTS I. Introduction Un algorithme ou un traitement est dit récurrent s’il utilise un procédé itératif ou récursif pour engendrer un résultat qui peut dépendre de p résultats précédents, nous parlons d’un algorithme ou d’un traitement récurrent d’ordre p. (voir livre page 124). II. Calcule de somme ACTIVITE1 : écrire un programme modulaire en Pascal qui permet de remplir une matrice carré d’ordre N (4≤N≤20) par des entiers aléatoires appartenant à l’intervalle [-30,30], calcule puis affiche la somme des éléments de M. a) Analyse du programme principal 2) Résultat = Ecrire ("la somme des éléments de la matrice =", FN SOMME (M, N)) 1) (M, N) = Proc remplir (M, N) Algorithme du programme principal TDNT 0) Début SOMME_MATRICE TYPE 1) Proc remplir (M, N) Matrice = Tableau [1..50, 1..50] d’entiers TDOG 2) Ecrire ("la somme des éléments de la matrice =", Objet Type/Nature Rôle FN SOMME (M, N)) M matrice Contient des entiers 3) Fin SOMME_MATRICE N Entier Taille de matrice remplir Procédure Remplit la matrice somme Fonction Calcule la somme b) Analyse de la procédure remplir DEF PROC REMPLIR (var M : matrice ; var N : entier) Résultat= M, N 2) M= [ ] pour i de 1 à n faire Pour j de 1 à n faire M [i,j]  Hasard(30) – Hasard(30) Fin Pour Algorithme de la procédure Remplir Fin Pour 1) N = [ ] Répéter 0) DEF PROC REMPLIR (var M : matrice ; var n : entier) 1) Répéter N= Donnée ("N=") Ecrire ("N="), lire (N) Jusqu’à (N dans [4..20]) Jusqu’à (N dans [4..20]) 2) pour i de 1 à n faire TDOL Pour j de 1 à n faire M [i,j]  Hasard(30) – Hasard(30) objet Type/Nature Rôle Fin Pour I Entier Compteur Fin Pour j Entier compteur 3) Fin RemplirLES ALGORITHMES RECURRENTS 1
  • Enseignant : Mohamed SAYARI 4 SI Algorithmique & Programmation c) Analyse de la fonction somme DEF FN SOMME (M : matrice ; N : entier) : entier Algorithme de la fonction SOMME 2) Résultat = somme  S 0) DEF FN SOMME (M : matrice ; N : entier) : entier 1) S= [S0] pour i de 1 à n faire 1) S0 Pour j de 1 à n faire Pour i de 1 à n faire S  S + M [i,j] Pour j de 1 à n faire Fin pour S  S + M [i,j] Fin pour Fin pour TDOL Fin pour 2) Somme s objet Type/Nature Rôle 3) Fin SOMME I Entier Compteur j Entier compteurLES ALGORITHMES RECURRENTS 2
  • Enseignant : Mohamed SAYARI 4 SI Algorithmique & Programmation III. Algorithmes récurrents sur les chaînes ACTIVITE2 : écrire un programme modulaire en Pascal qui permet de calculer et d’afficher le N ième terme de la suite de Thue-Morse à partir du premier terme U0 ("1" ou "0") avec 2≤N ≤100. Exemples : U0= "0" U0= "1" U1= "01" U1= "10" U2= "0110" U2= "1001" U3= "01101001" U3= "10010110" U4= "0110100110010110" U4= "1001011001101001"  On remarque que ce traitement est récurrent d’ordre 1. a) Analyse du programme principal 2) Résultat= Ecrire ("la suite Thue Morse à partir de ", U0, "d’ordre ", N "=", FN Thue_Morse (U0, n)) 1) (U0, N)= proc saisir (U0, N) Algorithme du programme principal TDOL 0) Début suite_thue_Morse 1) Proc saisir (U0, N) objet Type/Nature Rôle 2) ("la suite Thue Morse à partir de ", U0, "d’ordre ", N "=", FN N entier Nombre de terme Thue_Morse(U0, n)) U0 caractère Premier terme 3) Fin suite_thue_Morse Thue_Morse Fonction suite Algorithme de la procédure saisir b) Analyse de la procédure saisir 0) DEF PROC SAISIR (var U0 : caractère ; var N : entier) DEF PROC SAISIR (var U0 : caractère ; var N : entier) 1) Répéter Résultat= U0, N Ecrire ("premier terme= "), lire (U0) 2) N= [ ] répéter Jusqu’à (U0 dans ["1", "0"]) N= Donnée ("N= ") 2) Répéter Jusqu’à N dans [2..100] Ecrire ("N= "), lire (N) 1) U0= [ ] Répéter Jusquà N dans [2..100] 3) Fin SAISIR U0= Donnée ("premier terme= ") Jusqu’à U0 dans ["1", "0"] Algorithme de la fonction Thue_Morse c) Analyse de la fonction thue_morse 0) DEF FN Thue_Morse (u0 : caractère ; n : entier) : chaîne DEF FN Thue_Morse (U0 : caractère ; n : entier) : chaîne 1) CH  U0 2) Résultat= Thue_Morse  ch Pour i de 1 à n faire J 1 1) Ch= [ch  U0] pour i de 1 à n faire Tant que j≤long(ch) faire J 1 Si ch[j]="0" alors insère ("1", ch, j+1) Tant que j≤long (ch) faire Sinon insère ("0", ch, j+1) J  j+2 Si ch[j]="0" alors insère ("1", ch, j+1) Fin tant que Sinon insère ("0", ch, j+1) Fin pour J  j+2 2) Thue_Morse  ch Fin tant que 3) Fin Thue_Morse Fin pour TDOL Objet Type/Nature Rôle I entier Compteur J Entier Compteur ch Chaîne Chaine finale Thue_MorseLES ALGORITHMES RECURRENTS 3
  • Enseignant : Mohamed SAYARI 4 SI Algorithmique & Programmation IV. Triangle de Pascal ACTIVITE3 : écrire un programme modulaire en Pascal qui permet d’afficher les n premiers lignes du triangle de Pascal (2≤N≤30). a) Analyse du programme principal 2) Résultat= proc affiche (M, N) 1) (M, N)= proc remplir (M, N) Algorithme du programme principal TDNT 0) Début TRIANGLE_PASCAL TYPE 1) Proc remplir (M, N) Matrice = Tableau [1..50, 1..50] d’entiers 2) Proc Affiche (M, N) TDOG 3) Fin TRIANGLE_PASCAL Objet Type/Nature Rôle M matrice Contient des entiers N Entier Taille de matrice remplir Procédure Remplit la matrice affiche procédure Affiche la matriceLES ALGORITHMES RECURRENTS 4
  • Enseignant : Mohamed SAYARI 4 SI Algorithmique & Programmation Algorithme de la procédure Remplir b) Analyse de la procédure remplir 0) DEF PROC Remplir (var M : matrice ; var n : entier) DEF PROC Remplir (var M : matrice ; var n : entier) 1) répéter Résultat= M, N Ecrire ("N="), lire(N) 2) M= [M[1,1] 1 Jusqu’à N dans [2..50] M[2,1] 1 2) M[1,1] 1 M[2,2] 1] pour i de 3 à n faire M[2,1] 1 M[1,i] 1 M[2,2] 1 M[i, 1] 1 pour i de 3 à n faire Pour j de 2 à n faire M[1,i] 1 M[i,j]  M[i-1,j]+M[i-1,j-1] M[i, 1] 1 Fin Pour Pour j de 2 à n faire Fin Pour M[i,j]  M[i-1,j]+M[i-1,j-1] Fin Pour 1) N= [ ] répéter Fin Pour N= Donnée ("N=") 3) Fin Remplir Jusqu’à N dans [2..50] TDOL objet Type/Nature Rôle I Entier Compteur j Entier compteur c) Analyse de la procédure Affiche Algorithme de la procédure Affiche DEF PROC Affiche (M : matrice ; n : entier) 0) DEF PROC Affiche (M : matrice ; n : entier) Résultat= Affichage 1) pour i de 1 à n faire 1) Affichage= [ ] pour i de 1 à n faire Pour j de 1 à i faire Pour j de 1 à i faire Ecrire (M [i,j]) Ecrire (M [i,j]) Fin pour Fin pour Fin pour Fin pour 2) fin Affiche TDOL objet Type/Nature Rôle I Entier Compteur j Entier compteurLES ALGORITHMES RECURRENTS 5
  • Enseignant : Mohamed SAYARI 4 SI Algorithmique & Programmation V. Suite de Fibonnaci ACTIVITE4 : écrire un programme modulaire en Pascal qui permet de calculer et d’afficher le Nième terme de la suite de Fibonnaci définie par : U1 = 1 U2=1 Un= Un-1+ Un-2 a) Analyse du programme principal 2) Résultat = Ecrire ("FIB (", N, ")=", FIB(N)) 1) N= Proc saisir (N) Algorithme du programme principal 0) Début SUITE_FIB TDOG 1) Proc saisir (N) 2) Ecrire ("FIB (", N, ")=", FIB(N)) objet Type/Nature Rôle 3) Fin SUITE_FIB N Entier Compteur FIB Fonction Calculer la suite saisir procédure Nième TermeLES ALGORITHMES RECURRENTS 6
  • Enseignant : Mohamed SAYARI 4 SI Algorithmique & Programmation b) Analyse de la procédure saisir Algorithme de la procédure saisir DEF PROC SAISIR (var N : entier) Résultat= N 0) DEF PROC SAISIR (var N : entier) 1) N= [ ] répéter 1) répéter N= Donnée ("N=") Ecrire ("N="), lire (N) Jusqu’à (N dans [1..100]) Jusqu’à (N dans [1..100]) 2) fin SAISIR c) Analyse de la fonction FIB1 (itérative) DEF FN FIB1 (N : entier) : entier Algorithme de la fonction FIB1 2) Résultat = FIB1  F 0) DEF FN FIB1 (N : entier) : entier 1) F= [U11, U21] Si N≤2 alors F  1 1) U11 Sinon U21 Pour i de 3 à N faire Si n≤2 alors F  1 F  U1 + U2 Sinon U2  U1 Pour i de 3 à N faire F  U1 + U2 U1  F U2  U1 Fin pour U1  F Fin si Fin pour Fin si TDOL 2) FIB1  F objet Type/Nature Rôle 3) Fin FIB1 U1 Entier Premier terme U2 Entier Second terme F Entier Valeur final de suite i Entier compteurLES ALGORITHMES RECURRENTS 7
  • Enseignant : Mohamed SAYARI 4 SI Algorithmique & Programmation d) Analyse de la fonction FIB2 (itérative) DEF FN FIB2 (N : entier) : entier Algorithme de la fonction FIB2 2) Résultat= FIB2  U[n] 0) DEF FN FIB2 (N : entier) : entier 1) U[n]= [U [1]1 1) U [1]1 U [2] 1] pour i de 3 à n faire U [2] 1 U[i]  U [i-1] + U [i-2] Pour i de 3 à n faire Fin pour U[i]  U [i-1] + U [i-2] Fin pour TDNT 1) FIB2 U[n] TYPE 2) Fin FIB2 TAB= tableau [1..100] d’entiers TDOL objet Type/Nature Rôle i entier Compteur U TAB Tableau contenant les termes e) Analyse de la fonction FIB3 (récursive) Algorithme de la fonction FIB3 DEF FN FIB2 (N : entier) : entier 0) DEF FN FIB2 (N : entier) : entier Résultat= FIB3 1) si N≤2 alors FIB3  1 1) FIB3= [ ] si N≤2 alors FIB3  1 Sinon FIB3  FIB3 (n-1) + Sinon FIB3  FIB3 (n-1) + FIB3 (n-2) FIB3 (n-2) Fin si Fin si 2) fin FIB3LES ALGORITHMES RECURRENTS 8
  • Enseignant : Mohamed SAYARI 4 SI Algorithmique & Programmation VI. Nombre d’or VI.1 Définition √ Le nombre d’or est la solution positive de l’équation x2 – x – 1 = 0. C’est le nombre VI.2 Activité1 : compléter le tableau du livre page 139. √ La suite Vn définie sur N*par semble convergente vers VI.3 Activité2 : Soient deux suites U et V définies par : U1=1 U2=2 Un = Un-1 + Un-2 pour n≥3 Vn= pour n≥2 On suppose que la suite Vn tend vers nue valeur limite appelé nombre d’or. On suppose que le nième terme de la suite V soit V, donc une valeur approchée du nombre d’or avec une précision e dés que |Vn – Vn-1|<e. Ecrire un programme modulaire en Pascal qui cherche Vn à 10-4 prés et son rang. a) Analyse du programme principal Algorithme du programme principal 2) Résultat= proc Affiche (v,n) 1) (V,n,u) = proc remplir (u, v, n) 0) Début Calcul TDNT 1) proc remplir (u, v, n) 2) proc Affiche (v,n) TYPE 3) fin TAB1= tableau [1..100] de réel TAB2= tableau [1..100] d’entier TDOL objet Type/Nature Rôle n entier Taille maximale des vecteurs U TAB2 Tableau contenant les termes V TAB1 Tableau contenant les termes affiche procédure affichage remplir procédure Remplit V et U Algorithme de la procédure REMPLIR b) Analyse de la procédure REMPLIR 0) DEF PROC REMPLIR (var u : tab2 ; var v : tab1 ; var n : entier)DEF PROC REMPLIR (var u : tab2 ; var v : tab1 ; var n : entier) 1) U [1]1 Résultat= u, v, n U [2] 2 1) (u, v, n)= [U [1]1 Répéter n n+1 U [2] 2] répéter U[n]  u [n-1] + u [n-2] N  n+1 V[n]  u[n]/u [n-1] U[n]  u [n-1] + u [n-2] Jusqu’à (abs (v[n]-v [n-1] <0.0001) 2) Fin REMPLIR V[n]  u[n]/u [n-1] Jusqu’à (abs (v[n]-v [n-1] <0.0001)LES ALGORITHMES RECURRENTS 9
  • Enseignant : Mohamed SAYARI 4 SI Algorithmique & Programmation c) Analyse de la fonction Affiche DEF PROC AFFICHE (v : tab1 ; n : entier) 0) Résultat= Ecrire ("le nombre dor= ", v[n], " obtenu après ", n, " itérations") Algorithme de la procédure Affiche 0) DEF PROC AFFICHE (v : tab1 ; n : entier) 1) Ecrire ("le nombre dor= ", v[n], " obtenu après ", n, " itérations") 2) Fin AFFICHE VII. Applications (livre 144-147)LES ALGORITHMES RECURRENTS 10