Académique Documents
Professionnel Documents
Culture Documents
Cette série d'exercices est destinée à vous faire travailler sur des algorithmes simples (avec
boucles, tests, etc) et sur la définition de fonctions.
Comme depuis le TP4, tous vos modules devront contenir obligatoirement, dans l'en-tête, un
commentaire indiquant ce que fait le programme, en précisant le numéro de l'exercice correspon
dant. (ce commentaire est appelé “ documentation ” du module.)
Exercices et programmes à rendre dans le compte-rendu de TP : ex 1 (TP51_1), ex 2 (TP51_2), ex
3 (TP51_3), ex 4 (TP51_4), ex 5 (TP52_5), ex 6 (TP53_6), ex 7 (TP53_7)
Exercice 1 : Calcul d'une valeur approchée du nombre comme somme “infinie” des
termes d'une suite
Le nombre est déjà connu dans python, sous forme d'une constante pi du module math.
Donner la valeur exacte de cette constante du module math (l'afficher dans un interpréteur python) :
................................
Nous voulons maintenant écrire notre propre fonction de calcul de , comme somme infinie des
termes d'une suite :
1
Soit (un) n ∈ ℕ* la suite définie pour tout entier strictement positif n par un = 2 .
n
Nous admettons que la somme (infinie) de tous les termes de cette suite est un nombre FINI
qui est égal à :
+∞ +∞
1 π2
S=u1+ u2+ ...+ u 100+ .....+ u 1000+ u1001+ .........= ∑ u k =∑ 2
=
k=1 k=1 k 6
D'après cette égalité, exprimer en fonction de S : ................................................... (1)
Soit Sn la somme (appelée somme partielle) des termes de la suite entre u 1 et un :
n n
1
S n = ∑ uk = ∑ 2
. On a S= nlim ( Sn )
k=1 k
→+ ∞
k=1
Nous ne sommes pas capables de calculer la valeur précise de S à l'aide d'un ordinateur, mais nous
pouvons calculer des valeurs de la somme partielle S n , pour différentes valeurs de n. Nous en
déduirons ensuite des valeurs approchées de , d'après l'expression de que nous avons écrite ci-
dessus (1).
Créez un script TP51_1.py (à rendre) avec l'en-tête standard, contenant :
a) Une fonction sommePartielle(p_n) qui prendra en argument un entier p_n, et qui retournera
la valeur de Sn .
b) Une fonction approxPi(p_n) qui prendra en argument un entier p_n.
Cette fonction calculera :
- dans une variable monPi, la valeur approchée de calculée à partir du résultat résultant d'un
appel à la fonction sommePartielle().
{
un
si un est pair
un1= 2
3 un1 si un est impair
Par exemple, la suite de Syracuse partant de u0=11 est :
11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1, 4, 2, 1, 4, 2, 1
En se bornant à 1, on appelle cette suite finie d’entiers le vol10 de 11. On appelle étape un nombre
quelconque de cette suite finie. Par exemple 17 est une étape du vol de 11. On remarque que la suite
atteint une étape maximale, appelée altitude maximale du vol. Par exemple 52 est l’altitude maxi
male du vol de 11.
Créez un script TP52_5.py (à rendre) avec l'en-tête standard, qui contiendra :
a) Une fonction etapeSuivante(p_terme). Elle reçoit un entier strictement positif, calcule
l’entier suivant dans la suite de Syracuse et le retourne. Par exemple etapeSuivante(5) doit
produire 16 et etapeSuivante(16) doit faire 8, etc.
b) Une fonction vol(p_debut). Elle reçoit un entier initial strictement positif, crée une liste vide
et, en utilisant la fonction etapeSuivante(), calcule et stocke dans cette liste les termes de la
suite de Syracuse de l’entier initial jusqu’à 1 inclus. Cette fonction retourne la nouvelle liste ainsi
créée.
c) Un programme principal qui demande un entier initial à l’utilisateur (pour les tests, utilisez des
valeurs entre 2 et 100) puis qui, en utilisant les fonctions déjà définies, affiche proprement les
termes de la suite de Syracuse correspondante.
Une fois que cela fonctionne, ajoutez une fonction altMaxi(p_debut). Elle reçoit un entier et
retourne la valeur de l’altitude maximale de la suite de Syracuse commençant par u0 = p_debut.
Par exemple, en partant de u0 = 7, la suite de Syracuse est : 7, 22, 11, 34, 17, 52, 26, 13, 40, 20,
10, 5, 16, 8, 4, 2, 1 et par conséquent altMaxi(7) vaut 52.
Enrichissez le programme principal de façon à calculer et afficher l’altitude maximale du vol
correspondant à l'entier initial saisi par l'utilisateur.
Exercice 6 : palindrome
Créez un script TP53_6.py (à rendre) avec l'en-tête standard, définissant une fonction
palyndrome(p_mot) qui affiche la chaîne inverse à celle donnée en paramètre et qui retourne
une indication si cette chaîne est un palindrome ou non (elle retourne un booléen).
Dans le programme principal, mettre en place une boucle dans laquelle on saisit une chaîne, et on
appelle la fonction définie ci-dessus afin d'avoir la chaîne inversée et de savoir s'il s'agit d'un palin
drome. La boucle s'arrêtera lorsqu'on saisit une chaîne vide.
10 On a constaté depuis longtemps que pour tous les entiers de départ testés, la suite atteint après un
nombre de termes plus ou moins grand, la période 4, 2, 1, 4, 2, 1… Hélas ! pour l’instant tous ceux
qui ont essayé de le prouver ont échoué : c’est un « problème ouvert » (une conjecture).
e) Ecrivez une fonction etoile6() capable de dessiner une étoile à 6 branches, elle-même consti
tuée de deux triangles équilatéraux imbriqués. Cette nouvelle fonction devra faire appel à la fonc
tion triangle() définie précédemment.
Votre programme principal dessinera la série suivante d'étoiles :