Your SlideShare is downloading. ×
  • Like
Les algorithmes recurrents
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Les algorithmes recurrents

  • 10,482 views
Published

 

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
  • merci
    Are you sure you want to
    Your message goes here
  • mercyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
    Are you sure you want to
    Your message goes here
  • Bravo c'est trop claire merci Bcp :)
    Are you sure you want to
    Your message goes here
  • merci
    Are you sure you want to
    Your message goes here
  • merci
    Are you sure you want to
    Your message goes here
No Downloads

Views

Total Views
10,482
On SlideShare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
657
Comments
9
Likes
8

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. 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
  • 2. 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
  • 3. 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
  • 4. 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
  • 5. 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
  • 6. 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
  • 7. 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
  • 8. 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
  • 9. 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
  • 10. 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