Vous êtes sur la page 1sur 10

Enseignant : Mohamed SAYARI

4 SI

Algorithmique & Programmation

LES ALGORITHMES RECURRENTS


I. Introduction
Un algorithme ou un traitement est dit rcurrent sil utilise un procd itratif ou rcursif pour engendrer un rsultat qui peut dpendre de p rsultats prcdents, nous parlons dun algorithme ou dun traitement rcurrent dordre p. (voir livre page 124).

II. Calcule de somme


ACTIVITE1 : crire un programme modulaire en Pascal qui permet de remplir une matrice carr dordre N (4N20) par des entiers alatoires appartenant lintervalle [-30,30], calcule puis affiche la somme des lments de M. a) Analyse du programme principal 2) Rsultat = Ecrire ("la somme des lments de la matrice =", FN SOMME (M, N)) 1) (M, N) = Proc remplir (M, N)
TDNT TYPE Matrice = Tableau [1..50, 1..50] dentiers TDOG Objet Type/Nature Rle
M N remplir somme matrice Entier Procdure Fonction Contient des entiers Taille de matrice Remplit la matrice Calcule la somme

Algorithme du programme principal 0) Dbut SOMME_MATRICE 1) Proc remplir (M, N) 2) Ecrire ("la somme des lments de la matrice =",

FN SOMME (M, N)) 3) Fin SOMME_MATRICE

b) Analyse de la procdure remplir

DEF PROC REMPLIR (var M : matrice ; var N : entier) Rsultat= 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 procdure Remplir Fin Pour 0) DEF PROC REMPLIR (var M : matrice ; var n : entier) 1) N = [ ] Rpter 1) Rpter N= Donne ("N=") Ecrire ("N="), lire (N) Jusqu (N dans [4..20])
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 I j Type/Nature Entier Entier Rle Compteur compteur

LES ALGORITHMES RECURRENTS

Enseignant : Mohamed SAYARI c) Analyse de la fonction somme

4 SI

Algorithmique & Programmation

DEF FN SOMME (M : matrice ; N : entier) : entier 2) Rsultat = 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
TDOL objet I j Type/Nature Entier Entier Rle Compteur compteur

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

LES ALGORITHMES RECURRENTS

Enseignant : Mohamed SAYARI

4 SI

Algorithmique & Programmation

III. Algorithmes rcurrents sur les chanes


ACTIVITE2 : crire un programme modulaire en Pascal qui permet de calculer et dafficher le N ime terme de la suite de Thue-Morse partir du premier terme U0 ("1" ou "0") avec 2N 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 rcurrent dordre 1.

a) Analyse du programme principal


2) Rsultat= Ecrire ("la suite Thue Morse partir de ", U0, "dordre ", N "=", FN Thue_Morse (U0, n)) 1) (U0, N)= proc saisir (U0, N)
Algorithme du programme principal TDOL objet
N U0 Thue_Morse
0) Dbut suite_thue_Morse 1) Proc saisir (U0, N) 2) ("la suite Thue Morse partir de ", U0, "dordre ", N "=", FN Thue_Morse(U0, n)) 3) Fin suite_thue_Morse

Type/Nature
entier caractre Fonction

Rle
Nombre de terme Premier terme suite

b) Analyse de la procdure saisir


DEF PROC SAISIR (var U0 : caractre ; var N : entier) Rsultat= U0, N 2) N= [ ] rpter N= Donne ("N= ") Jusqu N dans [2..100] 1) U0= [ ] Rpter U0= Donne ("premier terme= ") Jusqu U0 dans ["1", "0"]

Algorithme de la procdure saisir


0) DEF PROC SAISIR (var U0 : caractre ; var N : entier) 1) Rpter Ecrire ("premier terme= "), lire (U0) Jusqu (U0 dans ["1", "0"]) 2) Rpter Ecrire ("N= "), lire (N) Jusqu N dans [2..100] 3) Fin SAISIR

Algorithme de la fonction Thue_Morse


0) DEF FN Thue_Morse (u0 : caractre ; n : entier) : chane 1) CH U0 Pour i de 1 n faire J 1 Tant que jlong(ch) faire Si ch[j]="0" alors insre ("1", ch, j+1) Sinon insre ("0", ch, j+1) J j+2 Fin tant que Fin pour 2) Thue_Morse ch 3) Fin Thue_Morse

c) Analyse de la fonction thue_morse


DEF FN Thue_Morse (U0 : caractre ; n : entier) : chane 2) Rsultat= Thue_Morse ch 1) Ch= [ch U0] pour i de 1 n faire J 1 Tant que jlong (ch) faire Si ch[j]="0" alors insre ("1", ch, j+1) Sinon insre ("0", ch, j+1) J j+2 Fin tant que Fin pour TDOL
Objet I J ch Type/Nature entier Entier Chane

Rle Compteur Compteur Chaine finale Thue_Morse 3

LES ALGORITHMES RECURRENTS

Enseignant : Mohamed SAYARI

4 SI

Algorithmique & Programmation

IV. Triangle de Pascal


ACTIVITE3 : crire un programme modulaire en Pascal qui permet dafficher les n premiers lignes du triangle de Pascal (2N30).

a) Analyse du programme principal


2) Rsultat= proc affiche (M, N) 1) (M, N)= proc remplir (M, N)

TDNT TYPE Matrice = Tableau [1..50, 1..50] dentiers TDOG Type/Nature


matrice Entier Procdure procdure

Algorithme du programme principal 0) 1) 2) 3) Dbut TRIANGLE_PASCAL Proc remplir (M, N) Proc Affiche (M, N) Fin TRIANGLE_PASCAL

Objet
M N remplir affiche

Rle
Contient des entiers Taille de matrice Remplit la matrice Affiche la matrice

LES ALGORITHMES RECURRENTS

Enseignant : Mohamed SAYARI

4 SI

Algorithmique & Programmation Algorithme de la procdure Remplir


0) DEF PROC Remplir (var M : matrice ; var n : entier)

b) Analyse de la procdure remplir


DEF PROC Remplir (var M : matrice ; var n : entier) Rsultat= 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= [ ] rpter N= Donne ("N=") Jusqu N dans [2..50]

1) rpter 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

TDOL objet Type/Nature Rle I Entier Compteur j Entier compteur

c) Analyse de la procdure Affiche


DEF PROC Affiche (M : matrice ; n : entier) Rsultat= Affichage 1) Affichage= [ ] pour i de 1 n faire Pour j de 1 i faire Ecrire (M [i,j]) Fin pour Fin pour

Algorithme de la procdure 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

TDOL objet I j Type/Nature Entier Entier Rle Compteur compteur

LES ALGORITHMES RECURRENTS

Enseignant : Mohamed SAYARI

4 SI

Algorithmique & Programmation

V. Suite de Fibonnaci
ACTIVITE4 : crire un programme modulaire en Pascal qui permet de calculer et dafficher le Nime terme de la suite de Fibonnaci dfinie par : U1 = 1 U2=1 Un= Un-1+ Un-2

a) Analyse du programme principal


2) Rsultat = Ecrire ("FIB (", N, ")=", FIB(N)) 1) N= Proc saisir (N)
TDOG objet N FIB saisir Type/Nature Entier Fonction procdure Rle Compteur Calculer la suite Nime Terme Algorithme du programme principal 0) Dbut SUITE_FIB 1) Proc saisir (N) 2) Ecrire ("FIB (", N, ")=", FIB(N)) 3) Fin SUITE_FIB

LES ALGORITHMES RECURRENTS

Enseignant : Mohamed SAYARI

4 SI

Algorithmique & Programmation Algorithme de la procdure saisir

b) Analyse de la procdure saisir


DEF PROC SAISIR (var N : entier) Rsultat= N 1) N= [ ] rpter N= Donne ("N=") Jusqu (N dans [1..100])

0) DEF PROC SAISIR (var N : entier) 1) rpter Ecrire ("N="), lire (N) Jusqu (N dans [1..100])
2) fin SAISIR

c) Analyse de la fonction FIB1 (itrative)


DEF FN FIB1 (N : entier) : entier 2) Rsultat = FIB1 F 1) F= [U11, U21] Si N2 alors F 1 Sinon Pour i de 3 N faire F U1 + U2 U2 U1 U1 F Fin pour Fin si
TDOL Type/Nature Rle Entier Premier terme Entier Second terme Entier Valeur final de suite Entier compteur Algorithme de la fonction FIB1
0) DEF FN FIB1 (N : entier) : entier 1) U11 U21 Si n2 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

objet U1 U2 F i

LES ALGORITHMES RECURRENTS

Enseignant : Mohamed SAYARI

4 SI

Algorithmique & Programmation Algorithme de la fonction FIB2

d) Analyse de la fonction FIB2 (itrative)


DEF FN FIB2 (N : entier) : entier 2) Rsultat= 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
TDNT TYPE TAB= tableau [1..100] dentiers TDOL Type/Nature Rle
entier TAB Compteur Tableau contenant les termes

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

objet
i U

e) Analyse de la fonction FIB3 (rcursive)


DEF FN FIB2 (N : entier) : entier Rsultat= FIB3 1) FIB3= [ ] si N2 alors FIB3 1 Sinon FIB3 FIB3 (n-1) + FIB3 (n-2) Fin si

Algorithme de la fonction FIB3

0) DEF FN FIB2 (N : entier) : entier 1) si N2 alors FIB3 1 Sinon FIB3 FIB3 (n-1) + FIB3 (n-2) Fin si
2) fin FIB3

LES ALGORITHMES RECURRENTS

Enseignant : Mohamed SAYARI

4 SI

Algorithmique & Programmation

VI. Nombre dor


VI.1 Dfinition Le nombre dor est la solution positive de lquation x2 x 1 = 0. Cest le nombre VI.2 Activit1 : complter le tableau du livre page 139. La suite Vn dfinie sur N*par VI.3 Activit2 : Soient deux suites U et V dfinies par : U1=1 U2=2 Un = Un-1 + Un-2 pour n3 Vn= pour n2 On suppose que la suite Vn tend vers nue valeur limite appel nombre dor. On suppose que le nime terme de la suite V soit V, donc une valeur approche du nombre dor avec une prcision e ds que |Vn Vn-1|<e. Ecrire un programme modulaire en Pascal qui cherche Vn 10-4 prs et son rang. semble convergente vers

a) Analyse du programme principal


2) Rsultat= proc Affiche (v,n) 1) (V,n,u) = proc remplir (u, v, n)
TDNT TYPE TAB1= tableau [1..100] de rel TAB2= tableau [1..100] dentier TDOL objet
n U V affiche remplir

Algorithme du programme principal

0) 1) 2) 3)

Dbut Calcul proc remplir (u, v, n) proc Affiche (v,n) fin

Type/Nature
entier TAB2 TAB1 procdure procdure

Rle
Taille maximale des vecteurs Tableau contenant les termes Tableau contenant les termes affichage Remplit V et U

b) Analyse de la procdure REMPLIR


DEF PROC REMPLIR (var u : tab2 ; var v : tab1 ; var n : entier)

Algorithme de la procdure REMPLIR


0) DEF PROC REMPLIR (var u : tab2 ; var v : tab1 ; var n : entier) 1) U [1]1 U [2] 2 Rpter 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

Rsultat= u, v, n 1) (u, v, n)= [U [1]1 U [2] 2] rpter 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)

LES ALGORITHMES RECURRENTS

Enseignant : Mohamed SAYARI

4 SI

Algorithmique & Programmation

c) Analyse de la fonction Affiche


DEF PROC AFFICHE (v : tab1 ; n : entier) 0) Rsultat= Ecrire ("le nombre d'or= ", v[n], " obtenu aprs ", n, " itrations")
Algorithme de la procdure Affiche

0) DEF PROC AFFICHE (v : tab1 ; n : entier) 1) Ecrire ("le nombre d'or= ", v[n], " obtenu aprs ", n, " itrations") 2) Fin AFFICHE

VII. Applications (livre 144-147)

LES ALGORITHMES RECURRENTS

10

Vous aimerez peut-être aussi