8/13/2019 solution TD2 procdures et fonctions
1/13
SERIE DEXERCICES:
LES SOUS-PROGRAMMES
Exercice n1 :
Enonc :
1) Factorielle
Faire une fonction facto(n)qui renvoie n!.
2) Puissance
Faire une fonction puiss(x,n)qui renvoie xn.
3) Exponentielle
Solution :
1) Factorielle
FONCTION facto(n: entier):entier
VAR
f, i : entier
DEBUT
f
8/13/2019 solution TD2 procdures et fonctions
2/13
2) Puissance
FONCTIONpuiss (x, n : entier):entier
VAR
i, p: entier
DEBUT
p
8/13/2019 solution TD2 procdures et fonctions
3/13
Exercice n2 :Enonc :
1-Ecrire une procdure trois paramtres entiers qui fait la somme des deux premiers et range cette valeur
dans le troisime.
2-Transformer la procdure prcdente en fonction.
Solution :1)
PROCEDURE sommeRange(n1, n2 : entier, VAR n3 : entier)
DEBUT
n3
8/13/2019 solution TD2 procdures et fonctions
4/13
1)
FONCTION calcPi(epsilon : rel):rel
VAR
valeur : rel
signe : entier
DEBUT
valeur
8/13/2019 solution TD2 procdures et fonctions
5/13
Exercice n4 :Enonc :Soit la suite rcurrente U suivante dfinie par
1
2
3
3 1 2
4
2
1
2n n n n
U
U
U
U U U U
Ecrire une procdure algorithmique nomme PSuitequi calcule le n-imeterme de U.
Solution :PROCEDURE PSuite(n : entier)
VAR
u, u1, u2, u3 : rel
DEBUT
u1
8/13/2019 solution TD2 procdures et fonctions
6/13
Sinon
crire ("argument invalide")
Fin si
FIN
Exercice n5 :Enonc :A partir dun entier n strictement positif, on cherche se ramener 1, pour cela on applique la mthode
suivante : Suite de SYRACUS
Si n est pair on le remplace par2
n
Si n est impair on le remplace par 3 1n Et ainsi de suite jusqu ce que lon arrive 1.
Ecrire une procdure algorithmique SYRACUS, permettant de compter et dafficher le nombre ditrations
ncessaires pour le ramener un entiern strictement positif 1.
Solution :PROCEDURE SYRACUS(n : entier)
VAR
nb_it : entierDEBUT
nb_it
8/13/2019 solution TD2 procdures et fonctions
7/13
Exercice n6 : Algorithmes des babyloniens Enonc :Supposons que lon cherche calculer une valeur approche de la racine carre a du nombre a . On
considre la suite rcurrente suivante :
0
1
1
1
2n n
n
u
a
u u
u
Le calcul des termes sarrte lorsque la diffrence entre deux termes conscutifs soit infrieure 8
10
.
Ecrire une procdure algorithmique BABYLONEqui permet de calculer puis dafficher la racine carre
dun rel positif a donn.
Solution:PROCEDURE BABYLONE(a: rel)CONST
VALEUR = 10 ^ (-8)
VARIABLES
u, up : rel
DEBUT
u
8/13/2019 solution TD2 procdures et fonctions
8/13
Exercice n7 : Suite de Feigenbaum
Enonc:On considre la suite rcurrente (suite de Feigenbaum) dfinie par :
0
1 1
n n n
u
u au u
Ecrire une procdure algorithmique FEIGNBAUM, qui partir dun rel a, un rel u0 et un entier n
calcule et affiche la valeur denu .
Solution:PROCEDURE FEIGNBAUM(n : entier, a, u : rel)
VAR
I : entier
DEBUT
Pour I de 1 n faire
u
8/13/2019 solution TD2 procdures et fonctions
9/13
Dans ce cas, l'autre nombre est le PGCD.Ecrire une procdure permettant calculer et afficher le PGCD de deux nombres a et b en utilisant
lalgorithme lEuclide.
Solution :
PROCEDUREAlgorithme_Euclide(a, b: entier)VARIABLES
pgcd : entier
DEBUT
Si (a = 0) alors
pgcd
8/13/2019 solution TD2 procdures et fonctions
10/13
Exercice n9 : Polynmes de TChebychev Enonc :Soit XIRT
nn dfini par :
10 T , XT
1et ,2n
212
nnn TXTT .
Ecrire une procdure permettant de calculer le men polynme de Tchebychev avec n donn tel que 2n .
Solution :REMARQUE:
Cest une procdure qui manipule des expressions formelles, donc ne peut pas tre implmenteque sur des logiciels de calcul formel tel que MAPLE.
Le type de T(i) dpend de types des valeurs de x. On va choisir dans notre solution le type rel pour toutes les variables.
PROCEDURE Tchebychev(n : Entier)
VAR
T, Tn_1, Tn_2, X : rel
DEBUT
Tn_2 1 // Tn_2 = T0
Tn_1 X // Tn_1 = T1
Pour I de 2 n faire
T 2 * X * Tn_1 Tn_2
Tn_2 Tn_1
Tn_1 T
Fin pour
Ecrire ("le ", n," me polynme de Tchebychev =", T)
FIN
8/13/2019 solution TD2 procdures et fonctions
11/13
Traduction en langage formelle (MAPLE):> t2 := 1:
t1 := x:n := 12:for i from 2 to n do
t := 2 * x * t1 - t2:t2 := t1:t1 := t:
od:print('t'=t):
Exercice n1 :Enonc:- On appelle diviseur propre de n, un diviseur quelconque de n, n exclu; Exemple : 6 = 1 + 2 + 3- Un entier est dit parfaitsil est gal la somme de tous ses diviseurs propres- On appelle nombre premiertout entier naturel suprieur a 1 qui possde exactement deux diviseurs, lui-
mme et 1 ;
- Les nombres premiers a tel que : (a+n+n2) est premier pour tout n tel que 0 n (a-1) sont appelesnombres chanceux.
1. Ecrire une procdure nomme, SOMDIV qui calcule et renvoie dans sdla somme des diviseurs propresdun entier n donne.
PROCEDURE SOMDIV(n : entier, VAR sd : entier)
VAR
i : entier
DEBUT
sd
8/13/2019 solution TD2 procdures et fonctions
12/13
2. Ecrire les instructions algorithmiques (on ne demande pas dcrire un algorithme principal) permettantdafficher les nombres parfaits de lintervalle [2,1000].
Pour I de 2 1000 faire
SOMDIV (I, sd)
Si (I = sd) alors
crire (I, "est un nombre parfait")
Fin si
Fin pour
3. Ecrire une fonction nomme, estpremier, rsultat boolen permettant de vrifier si un entier edonnest premier ou non.
FONCTION estPremier(n : entier) : boolen
VAR sd : entier
DEBUT
SOMDIV (n, sd)
Si (sd 1) alors
Retourner FAUX
Fin siRetourner VRAI
FIN
4. Ecrire une fonction nomme, estchanceux, rsultat boolen permettant de vrifier si un entier adonn est chanceux ou non.
8/13/2019 solution TD2 procdures et fonctions
13/13
FONCTION estChanceux(a : entier) : boolen
VAR
n : entier
DEBUT
Si estPremier(a) alors
Pour n de 0 (a - 1) faire
Si (non estPremier (a + n + n^2)) alors
estChanceux
Top Related