Feuille#4 - repetiti..

publicité
ESGI 2010/2011
Travaux dirigés
I1
La répétition
Fonctionnement des structures de répétition ou instructions répétitives
Exercice 1
Soit l'algorithme :
x : Entier
ECRIRE("Donner l'entier de départ")
LIRE(x)
(x < 100)
ECRIRE(x)
x ← x + 20
Que produit cet algorithme lorsque x vaut 47, 198 ou -18 ?
L'écrire à l'aide des instructions ...
... et
...
Exercice 2
Soit l'algorithme :
x : Entier
ECRIRE("Donner l'entier de départ")
LIRE(x)
ECRIRE(x)
x←x*2
(x > 100)
Que produit cet algorithme lorsque x vaut 28, 195 ou −2 ?
L'écrire à l'aide de l'instruction répétitive
...
...
1
...
ESGI 2010/2011
Travaux dirigés
I1
Exercice 3
Exprimer l'instruction répétitive suivante :
i ← min
ECRIRE(i)
à l'aide de : ...
max
... et
...
...
...
...
Que produit cet algorithme si : ∗ min = 5 et max = 20 ?
∗ min = 13 et max = 13 ?
∗ min = 20 et max = 5 ?
Ecriture d'algorithmes
Exercice 4
On désire emballer N oeufs dans NB boîtes de 12. Déterminer, sans eectuer de divisions, le nombre NB
ainsi que le nombre NR des oeufs restants.
N.B : on simulera la division en eectuant des soustractions successives.
Exercice 5
Eectuer la division euclidienne de A par B 6= 0 (saisis préalablement par l'utilisateur) en achant le
reste R et le quotient Q.
N.B : on a alors A = B×Q + R avec 0 ≤ R < B
Exercice 6
Calculer la racine carrée entière par excès d'un nombre donné.
Exercice 7
Lire un à un les caractères d'une suite de caractères terminée par un point (".") et acher le nombre des
"A" qu'elle contient.
2
ESGI 2010/2011
Travaux dirigés
I1
Exercice 8
Demander à l'utilisateur s'il est un homme ou une femme, puis le saluer ("Bonjour Monsieur" ou "Bonjour
Madame") en tenant compte de sa réponse. On exigera la réponse "H" ou la réponse "F".
Améliorer cet algorithme en acceptant "h" pour "H" et "f" pour "F".
(On pourra trouver une solution avec 2 variables booléennes : Homme et Femme, le but étant que l'une
ait pour valeur Faux et l'autre Vrai )
Exercice 9
Ecrire un algorithme du jeu "trop petit, trop grand" qui consiste à faire deviner un nombre compris entre
1 et 1000, en répondant seulement "trop petit" ou "trop grand", à chaque nombre proposé par le joueur.
Exercice 10
Ecrire un algorithme qui devine le nombre choisi entre 1 et 1000 par l'utilisateur qui aura à répondre à
chacun des essais de l'algorithme l'un des trois caractères P (si l'essai est trop petit), T (si l'algorithme
à trouvé) ou G (si l'essai est trop grand).
Méthode à suivre : le nombre x (saisi par l'utilisateur) se trouve dans l'intervalle [a, b] que l'on initialise à [1, 1000]. Traitement : le nombre à essayer est le milieu de l'intervalle [a, b] (que l'on apelle M), on
garde ensuite la moitié de l'intervalle ([a, M ] ou [M, b]) où le nombre x gure et on recommence le même
traitement sur ce nouvel intervalle, jusqu'à ce que le nombre soit trouvé par l'agorithme.
Cette méthode, à connaître, est appelée : raisonnement par dichotomie
Faire la trace de cet algorithme lorsque le nombre à deviner est 237 et que l'utilisateur ne triche pas.
Exercice 11
Gérer un stock de QP ramettes de papier et QC cahiers. Cette gestion consiste à recommencer à volonté
le dialogue :
Quel article (R ou C) ?
Quelle quantité en + ou en − ?
Encore un article à traiter ?
Remarque : les stocks des deux articles seront initialisés, au début de l'algorithme par des instructions
LIRE. Bien évidemment, on refusera une sortie (quantité négative) si le stock correspondant est insusant.
Exercice 12
Demander un nombre N, entier positif, puis calculer :
3
ESGI 2010/2011
Travaux dirigés
I1
La somme S1 = 1 + 2 + 3 + ... + N
La somme S2 = 12 + 22 + 32 + ... + N 2
Le produit F = 1 × 2 × 3 × ... × N
On écrira une solution sans boucle
, puis une autre l'utilisant.
Remarque : F = N !, se lit "N factoriel"
Exercice 13
Cet exercice propose de réécrire le calcul de fonctions mathématiques à partir du développement en séries
entières d'après la méthode de Taylor-Mac-Laurin. Ces mathématiciens ont montré que toute fonction
peut s'écrire comme suite d'additions (ou de soustractions) de facteurs de x. Ainsi, sinus(x) correspond
au calcul :
sin(x) = x −
x3
x5
x7
x2n+1
+
−
+ ... + (−1)n
+ ...
3!
5!
7!
(2n + 1)!
Ecrivez l'algorithme qui calcule sinus(x). La boucle de traitement devra s'arrèter quand la précision obtenue sera susament petite, ce qui se traduit par une valeur très faible du nouveau facteur de x. La
précision sera dénie à la 15me décimale.
N.B : pour les calculs des factoriels, on utilisera l'appel de la fonction factorielle, dont l'algorithme de
traitement a été écrit dans l'exercice précédent.
Exercice 14
Calculer la somme des notes d'une suite de notes comprises entre 0 et 20. Il faut exiger que chaque note
soit bien dans l'intervalle [0, 20]. On envisagera deux méthodes pour déterminer si la suite est terminée :
soit poser une question ("encore (O ou N) ?"), soit accepter un codage (par exemple 99) après la dernière
note.
Exercice 15
Lire une série de notes comprises entre 0 et 20, puis acher la plus petite, la plus grande, le nombre des
notes strictement inférieures, égales et strictement supérieures à 10.
Exercice 16
Compter le nombre de séquences "LE" deans une suite de caractères, lus un à un, et terminée pau un
"point nal". On envisagera trois méthodes :
1. examiner, lorsqu'on trouve un E, si le caractère précédent était un L ;
4
ESGI 2010/2011
Travaux dirigés
I1
2. avancer jusqu'à la lettre L, regarder si elle est suivi d'un E, ainsi de suite jusqu'à la n de la liste ;
3. considérer des couples d'éléments consécutifs. Pour cela, on peut imaginer utiliser une paire de
lunettes, dont chaque verre montrerait un caractère et qui se déplace dans la liste, caractère par
caractère, de la gauche vers la droite.
Exercice 17
Lire la suite des prix (en e et terminée par 0) des achats d'un client. Calculer la somme qu'il doit, lire la
somme qu'il paye et simuler la remise de la monnaie en achant les textes : 20 e, 10 e, 5 e, 2 e et 1 e,
autant de fois qu'il y a de billets ou de pièces de chaque sorte à rendre
5
Téléchargement