TP 4. Boucle itérative WHILE
Exercice I.
1. Sans utiliser l'ordinateur, faire un tableau donnant les10 premières valeurs que prendrait la variablex au cours d'une exécution du programme suivant :
x=1 ;
while x<2000 ; x=x*2 ; disp(x) ; end ;
2. Exécuter le programme pour vérier.
3. Exécuter le programme suivant : x=1 ;
while x<200 ; x=x*(1-x) ; disp(x) ; end ;
Exercice II.
On considère le jeu suivant : l'ordinateur choisit un nombre compris entre 1 et 6, et l'utilisateur doit le deviner. Compléter le programme pour qu'il fonctionne comme souhaité.
r=grand(1,1,'uin',1,6) ; //commande pour simuler au hasard un nombre entier entre 1 et 6
n=1 ; //nombre de tentatives
...('proposez un nombre entre 1 et 6 :') ; while ...
...
...
end ;
disp(...,'nombre de coups :') ;
Le tester et le modier pour qu'il ache "coup" au singulier si on trouve tout de suite le nombre.
Exercice III.
Sans utiliser de boucle for, créer un programme calculant et achant les termes de la suiteu, dénie par
u0 = 6
un+1 = 2un−5 , jusqu'à l'indicen= 15. Exercice IV.
Soita >0, et, ∀n∈N∗, Sn=
n
X
k=1
1 k.
Créer un programme qui renvoit la plus petite valeur dentelle que l'on ait Sn> a. 1
Exercice V.
S'inspirer de l'Exercice II. pour écrire un programme qui : choisit au hasard un nombrex compris entre 1 et 127 ; demande à l'utilisateur d'entrer un nombrey;
renvoie comme message à l'utilisateur "trop grand" (resp. "trop petit") six < y (resp. x > y), et redemande un nombrey, tant quex6=y;
en cas de succès, annonce le nombre de tentatives de l'utilisateur.
Quel est le nombre minimal de tentatives nécessaires pour qu'un utilisateur soit certain de trouver le nombrex? Justier.
Exercice VI.
Reprendre le programme permettant de résoudre une équation du second degré, et le modier de manière à ce qu'il renvoie un message d'erreur tant que l'utilisateur rentre la valeura= 0. Exercice VII.*
Nous avons vu en exercice (feuille 6. ex XVI) que les suites(un)n∈N et(vn)n∈N, dénies par :
u0 =a,v0 =b et
un+1 = 2unvn un+vn
vn+1 = un+vn 2
sont adjacentes, avecaetb deux nombres réels strictement positifs. On note lleur limite commune.
1. Rappeler la dénition de suites adjacentes.
2. Calculer u1,v1,u2 etv2 lorsque u0 = 1 etv0= 3. On donnera une valeur approchée pour u2. 3. Les représenter graphiquement.
4. On désire obtenir une valeur approchée au millième de la limite commune des deux suites.
Comment s'y prendre et jusqu'à quel rang ndoit-on calculer un etvn? 5. Construire un programme qui :
demande les termes initiaux aetb;
calcule les termes des deux suites jusqu'à ce que l'on ait une valeur approchée de la limite l au millième près ;
renvoie le rang ncorrespondant ; renvoie la valeur approchée de l.
6. Même question que la précédente, avec cette fois une précision >0 entrée par l'utilisateur.
Exercice VIII.*
Nous avons vu en exercice (feuille 13. ex IX) que si : -u est une suite positive décroissante, convergeant vers 0 -S est la série alternéeX
(−1)nun de sommes partielles Sn=
n
X
k=0
(−1)kuk
!
alors la sérieS converge, de somme une limite l, vériant ∀n∈N, |Sn−l| ≤un+1.
En utilisant ce résultat, créer des programmes calculant, avec une précision donnée par l'utilisateur, les sommes de séries :
1.
+∞
X
n=1
(−1)n
n2 2.
+∞
X
n=2
(−1)n
ln(n) 3.
+∞
X
n=1
(−1)n
n2+n+ ln(n) 4.
+∞
X
n=1
(−1)n nα
2