1/4
Correction du TD5
Exercice 1
Ecrire une fonction puissance(x,p), ayant pour arguments deux entiers x et p et qui calcule le nombre xp.
Corrigé :
Fonction puissance( x : entier, p :entier) : entier ; Variables puis : entier ;
debut
puis1 ;
Tant que (p>0) faire puis puis*x ; p p-1 ; fintantque
retourne(puis) ; fin
Exercice 2
Ecrire une fonction qui prend pour argument un entier n et retourne le nombre de chiffres qui compose n. Exemple : si n=1452635 la fonction retourne la valeur 7.
Corrigé :
fonction nombreDeChiffres(n :entier) :entier ;
variables nb : entier ; // nb pour compter le nb de chiffres de n début
nb0 ;
tant que (n !=0) faire nn div 10 ; nbnb+1 ; fintantque
retourne(nb) ; fin
Exercice 3
Ecrire une fonction qui prend pour argument deux entiers a et b et retourne leur plus grand commun diviseur (pgcd).
2/4 Corrigé :
Soit a et b deux entiers : il existe un couple unique (q, r) tels que a=qb+r avec 0<=r<b pgcd(a,b)=pgcd(b,r) avec r a mod b ; et a prendra la valeur de b et b celle de r pgcd(a,0)=a
pgcd(45,18)=pgcd(18,9) //car 45=2*18+9 pgcd(18,9)=pgcd(9,0) // car 18=2*9+0
=9 car b==0
fonction pgcd(a :entier, b :entier) : entier ; variables r : entier ;
début
TantQue(b>0) faire ra mod b ; ab ; b r ; finTanQue retourne(a) ; fin
Exercice 4
Ecrire une fonction qui prend pour argument un tableau Note[] (qui contient les notes d’une classe) et n la taille du tableau (le nombre des notes) et elle retourne la moyenne de la classe.
Corrigé :
// on suppose que le tableau Note contient n notes.
fonction moyenneClasse(tableau Note[ ]:réel, n:entier) :réel ; variables i : entier ;
som, moy : réel ; début
som0 ;
pour i 0 à n-1 faire
som som + Note[i] ; finPour
moysom / n ; retourne(moy) ; fin
Exercice 5
Ecrire une fonction récursive qui calcule la somme de N premiers nombres entiers naturels : S=1+2+3+……+N
Corrigé :
Pour écrire la forme récursive de la fonction somme, il faut chercher tout d’abord la récurrence mathématique.
3/4
S(1) = 1 ;
S(N)=N+S (N-1) ;
Fonction somme (n : entier) : entier;
Variable res :entier ; Debut
Si (n==1) alors res1 ; Sinon res n+somme(n-1);
finsi
retourne(res) ; fin
Exercice 6
Ecrire une fonction récursive qui calcule le Nième terme da la suite numérique définie comme suit :
U0 = 2 U1= 2 U2= 2
Un =6*Un-1 + 4*Un-2 - 5*Un-3 pour tout n >2
Corrigé :
Fonction suite (n : entier) : entier;
Variable res :entier ; Debut
Si (n<= 2) alors res2 ;
Sinon res 6*suite(n-1) + 4*suite(n-2) – 5*suite(n-3) ; Finsi
Retourne(res) ; fin
Exercice 7 :
Ecrire une fonction récursive qui calcule les valeurs de polynôme d’Hermite Hn(x) définie comme suit :
H0(x) = 1 H1(x) = 2*x
Hn (x)=2*x*Hn-1 (x)– 2*(n-1)*Hn-2 (x) pour tout n >1
Corrigé :
Fonction Hermite (n : entier, x : réel) : entier;
Variable res : réel ;
4/4 Debut
Si (n== 0) alors res1 ; Sinon
Si (n==1) alors res2*x;
Sinon res2*x*Hermite(n-1, x) - 2*(n-1)*Hermite(n-2, x) ; Finsi
Finsi
retourne (res) ; fin