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 Remplir


LES 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      compteur




LES 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_Morse


LES 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 matrice


LES 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       compteur




LES 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 Terme


LES 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           compteur




LES 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 FIB3




LES 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 d'or= ", 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 d'or= ", v[n], " obtenu après ", n, " itérations")
                         2) Fin AFFICHE




 VII. Applications (livre 144-147)




LES ALGORITHMES RECURRENTS                                                                                10

Les algorithmes recurrents

  • 1.
    Enseignant : MohamedSAYARI 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 Remplir LES ALGORITHMES RECURRENTS 1
  • 2.
    Enseignant : MohamedSAYARI 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 compteur LES ALGORITHMES RECURRENTS 2
  • 3.
    Enseignant : MohamedSAYARI 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_Morse LES ALGORITHMES RECURRENTS 3
  • 4.
    Enseignant : MohamedSAYARI 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 matrice LES ALGORITHMES RECURRENTS 4
  • 5.
    Enseignant : MohamedSAYARI 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 compteur LES ALGORITHMES RECURRENTS 5
  • 6.
    Enseignant : MohamedSAYARI 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 Terme LES ALGORITHMES RECURRENTS 6
  • 7.
    Enseignant : MohamedSAYARI 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 compteur LES ALGORITHMES RECURRENTS 7
  • 8.
    Enseignant : MohamedSAYARI 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 FIB3 LES ALGORITHMES RECURRENTS 8
  • 9.
    Enseignant : MohamedSAYARI 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 : MohamedSAYARI 4 SI Algorithmique & Programmation c) Analyse de la fonction Affiche DEF PROC AFFICHE (v : tab1 ; n : entier) 0) Résultat= Ecrire ("le nombre d'or= ", 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 d'or= ", v[n], " obtenu après ", n, " itérations") 2) Fin AFFICHE VII. Applications (livre 144-147) LES ALGORITHMES RECURRENTS 10