Enseignant : Mohamed SAYARI 4 SI Algorithmique & Programmation
LES ALGORITHMES RECURRENTS 1
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)
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
Fin Pour
1) N = [ ] Répéter
N= Donnée ("N=")
Jusqu’à (N dans [4..20])
Algorithme du programme principal
0) Début SOMME_MATRICE
1) Proc remplir (M, N)
2) Ecrire ("la somme des éléments de la matrice =",
FN SOMME (M, N))
3) Fin SOMME_MATRICE
TDNT
TYPE
Matrice = Tableau [1..50, 1..50] d’entiers
TDOG
Objet Type/Nature Rôle M matrice Contient des entiers
N Entier Taille de matrice
remplir Procédure Remplit la matrice
somme Fonction Calcule la somme
Algorithme de la procédure Remplir
0) DEF PROC REMPLIR (var M : matrice ; var n : entier)
1) Répéter
Ecrire ("N="), lire (N)
Jusqu’à (N dans [4..20])
2) pour i de 1 à n faire
Pour j de 1 à n faire
M [i,j] Hasard(30) – Hasard(30)
Fin Pour
Fin Pour
3) Fin Remplir
TDOL
objet Type/Nature Rôle
I Entier Compteur
j Entier compteur
Enseignant : Mohamed SAYARI 4 SI Algorithmique & Programmation
LES ALGORITHMES RECURRENTS 2
c) Analyse de la fonction somme
DEF FN SOMME (M : matrice ; N : entier) : entier
2) Résultat = somme S
1) S= [S0] pour i de 1 à n faire
Pour j de 1 à n faire
S S + M [i,j]
Fin pour
Fin pour
Algorithme de la fonction SOMME
0) DEF FN SOMME (M : matrice ; N : entier) : entier
1) S0
Pour i de 1 à n faire
Pour j de 1 à n faire
S S + M [i,j]
Fin pour
Fin pour
2) Somme s
3) Fin SOMME
TDOL
objet Type/Nature Rôle
I Entier Compteur
j Entier compteur
Enseignant : Mohamed SAYARI 4 SI Algorithmique & Programmation
LES ALGORITHMES RECURRENTS 3
III. Algorithmes récurrents sur les chaînes ACTIVITE2 : écrire un programme modulaire en Pascal qui permet de calculer et d’afficher le Nième terme
de la suite de Thue-Morse à partir du premier terme U0 ("1" ou "0") avec 2≤N ≤100.
Exemples :
U0= "0" U1= "01" U2= "0110" U3= "01101001" U4= "0110100110010110"
U0= "1" U1= "10" U2= "1001" U3= "10010110" 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)
b) Analyse de la procédure saisir
DEF PROC SAISIR (var U0 : caractère ; var N : entier) Résultat= U0, N
2) N= [ ] répéter N= Donnée ("N= ")
Jusqu’à N dans [2..100] 1) U0= [ ] Répéter
U0= Donnée ("premier terme= ") Jusqu’à U0 dans ["1", "0"]
c) Analyse de la fonction thue_morse
DEF FN Thue_Morse (U0 : caractère ; n : entier) : chaîne 2) Résultat= Thue_Morse ch 1) Ch= [ch U0] pour i de 1 à n faire
J 1 Tant que j≤long (ch) faire Si ch[j]="0" alors insère ("1", ch, j+1)
Sinon insère ("0", ch, j+1) J j+2 Fin tant que
Fin pour
Algorithme du programme principal
0) Début suite_thue_Morse
1) Proc saisir (U0, N)
2) ("la suite Thue Morse à partir de ", U0, "d’ordre ", N "=", FN
Thue_Morse(U0, n))
3) Fin suite_thue_Morse
TDOL
objet Type/Nature Rôle N entier Nombre de terme
U0 caractère Premier terme
Thue_Morse Fonction suite
Algorithme de la procédure saisir
0) DEF PROC SAISIR (var U0 : caractère ; var N : entier)
1) Répéter
Ecrire ("premier terme= "), lire (U0)
Jusqu’à (U0 dans ["1", "0"])
2) Répéter
Ecrire ("N= "), lire (N)
Jusquà N dans [2..100]
3) Fin SAISIR
Algorithme de la fonction Thue_Morse
0) DEF FN Thue_Morse (u0 : caractère ; n : entier) : chaîne
1) CH U0
Pour i de 1 à n faire J 1 Tant que j≤long(ch) faire Si ch[j]="0" alors insère ("1", ch, j+1) Sinon insère ("0", ch, j+1) J j+2 Fin tant que
Fin pour
2) Thue_Morse ch
3) Fin Thue_Morse
TDOL
Objet Type/Nature Rôle
I entier Compteur
J Entier Compteur
ch Chaîne Chaine finale Thue_Morse
Enseignant : Mohamed SAYARI 4 SI Algorithmique & Programmation
LES ALGORITHMES RECURRENTS 4
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
0) Début TRIANGLE_PASCAL
1) Proc remplir (M, N)
2) Proc Affiche (M, N)
3) Fin TRIANGLE_PASCAL
TDNT
TYPE
Matrice = Tableau [1..50, 1..50] d’entiers
TDOG
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
Enseignant : Mohamed SAYARI 4 SI Algorithmique & Programmation
LES ALGORITHMES RECURRENTS 5
b) Analyse de la procédure remplir
DEF PROC Remplir (var M : matrice ; var n : entier)
Résultat= M, N
2) M= [M[1,1] 1
M[2,1] 1
M[2,2] 1] pour i de 3 à n faire
M[1,i] 1
M[i, 1] 1
Pour j de 2 à n faire
M[i,j] M[i-1,j]+M[i-1,j-1]
Fin Pour
Fin Pour
1) N= [ ] répéter
N= Donnée ("N=")
Jusqu’à N dans [2..50]
c) Analyse de la procédure Affiche
DEF PROC Affiche (M : matrice ; n : entier)
Résultat= Affichage
1) Affichage= [ ] pour i de 1 à n faire
Pour j de 1 à i faire
Ecrire (M [i,j])
Fin pour
Fin pour
TDOL
objet Type/Nature Rôle
I Entier Compteur
j Entier compteur
TDOL
objet Type/Nature Rôle
I Entier Compteur
j Entier compteur
Algorithme de la procédure Remplir
0) DEF PROC Remplir (var M : matrice ; var n : entier)
1) répéter
Ecrire ("N="), lire(N)
Jusqu’à N dans [2..50]
2) M[1,1] 1
M[2,1] 1
M[2,2] 1
pour i de 3 à n faire
M[1,i] 1
M[i, 1] 1
Pour j de 2 à n faire
M[i,j] M[i-1,j]+M[i-1,j-1]
Fin Pour
Fin Pour
3) Fin Remplir
Algorithme de la procédure Affiche
0) DEF PROC Affiche (M : matrice ; n : entier)
1) pour i de 1 à n faire
Pour j de 1 à i faire
Ecrire (M [i,j])
Fin pour
Fin pour
2) fin Affiche
Enseignant : Mohamed SAYARI 4 SI Algorithmique & Programmation
LES ALGORITHMES RECURRENTS 6
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
1) Proc saisir (N)
2) Ecrire ("FIB (", N, ")=", FIB(N))
3) Fin SUITE_FIB
TDOG
objet Type/Nature Rôle
N Entier Compteur
FIB Fonction Calculer la suite
saisir procédure Nième Terme
Enseignant : Mohamed SAYARI 4 SI Algorithmique & Programmation
LES ALGORITHMES RECURRENTS 7
b) Analyse de la procédure saisir
DEF PROC SAISIR (var N : entier)
Résultat= N
1) N= [ ] répéter
N= Donnée ("N=")
Jusqu’à (N dans [1..100])
c) Analyse de la fonction FIB1 (itérative)
DEF FN FIB1 (N : entier) : entier
2) Résultat = FIB1 F
1) F= [U11, U21] Si N≤2 alors F 1
Sinon
Pour i de 3 à N faire
F U1 + U2
U2 U1
U1 F
Fin pour
Fin si
Algorithme de la procédure saisir
0) DEF PROC SAISIR (var N : entier)
1) répéter
Ecrire ("N="), lire (N)
Jusqu’à (N dans [1..100])
2) fin SAISIR
Algorithme de la fonction FIB1
0) DEF FN FIB1 (N : entier) : entier
1) U11
U21
Si n≤2 alors F 1
Sinon
Pour i de 3 à N faire
F U1 + U2
U2 U1
U1 F
Fin pour
Fin si
2) FIB1 F
3) Fin FIB1
TDOL
objet Type/Nature Rôle
U1 Entier Premier terme
U2 Entier Second terme
F Entier Valeur final de suite
i Entier compteur
Enseignant : Mohamed SAYARI 4 SI Algorithmique & Programmation
LES ALGORITHMES RECURRENTS 8
d) Analyse de la fonction FIB2 (itérative)
DEF FN FIB2 (N : entier) : entier
2) Résultat= FIB2 U[n]
1) U[n]= [U [1]1
U [2] 1] pour i de 3 à n faire
U[i] U [i-1] + U [i-2]
Fin pour
e) Analyse de la fonction FIB3 (récursive)
DEF FN FIB2 (N : entier) : entier
Résultat= FIB3
1) FIB3= [ ] si N≤2 alors FIB3 1
Sinon FIB3 FIB3 (n-1) + FIB3 (n-2)
Fin si
Algorithme de la fonction FIB2
0) DEF FN FIB2 (N : entier) : entier
1) U [1]1
U [2] 1
Pour i de 3 à n faire
U[i] U [i-1] + U [i-2]
Fin pour
1) FIB2 U[n]
2) Fin FIB2
TDNT
TYPE
TAB= tableau [1..100] d’entiers
TDOL
objet Type/Nature Rôle i entier Compteur
U TAB Tableau contenant les termes
Algorithme de la fonction FIB3
0) DEF FN FIB2 (N : entier) : entier
1) si N≤2 alors FIB3 1
Sinon FIB3 FIB3 (n-1) +
FIB3 (n-2)
Fin si
2) fin FIB3
Enseignant : Mohamed SAYARI 4 SI Algorithmique & Programmation
LES ALGORITHMES RECURRENTS 9
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
2) Résultat= proc Affiche (v,n)
1) (V,n,u) = proc remplir (u, v, n)
b) Analyse de la procédure REMPLIR
DEF PROC REMPLIR (var u : tab2 ; var v : tab1 ; var n : entier)
Résultat= u, v, n
1) (u, v, n)= [U [1]1
U [2] 2] répéter
N n+1
U[n] u [n-1] + u [n-2]
V[n] u[n]/u [n-1]
Jusqu’à (abs (v[n]-v [n-1] <0.0001)
Algorithme du programme principal
0) Début Calcul
1) proc remplir (u, v, n)
2) proc Affiche (v,n)
3) fin
TDNT
TYPE
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
0) DEF PROC REMPLIR (var u : tab2 ; var v : tab1 ; var n : entier)
1) U [1]1
U [2] 2
Répéter
n n+1
U[n] u [n-1] + u [n-2]
V[n] u[n]/u [n-1]
Jusqu’à (abs (v[n]-v [n-1] <0.0001)
2) Fin REMPLIR
Enseignant : Mohamed SAYARI 4 SI Algorithmique & Programmation
LES ALGORITHMES RECURRENTS 10
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")
VII. Applications (livre 144-147)
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
Top Related