Série N°4
Exercice 1 : Analyse des boucles Répéter et TantQue
🟢 FacilePour chacune des séquences suivantes, déterminer la valeur finale de chaque variable ainsi que le nombre d'itérations.
x ← 8
Répéter
x ← x + 2
y ← x * 2
Jusqu'à y > 25
x ← 5
Répéter
x ← x + 2
y ← x * 2
Jusqu'à y < 30
p ← 0
Tant Que p > 5 Faire
p ← p + 5
Fin Tant Que
p ← 0
Tant Que p < 5 Faire
p ← p + 2
Fin Tant Que
x ← 16
pas ← 1
Répéter
x ← x + pas
pas ← pas + 1
Jusqu'à x > 25
x ← 15
Répéter
x ← x - 2
Jusqu'à x > 20
x ← 13
p ← 0
Tant Que x ≠ 0 Faire
p ← p + (x mod 2 ≠ 1)
x ← x div 2
Fin Tant Que
ch ← "1100"
i ← 0
p ← 0
Tant Que i < Long(ch) Faire
p ← p * 2 + valeur(ch[i])
i ← i + 1
Fin Tant Que
Indice :
Suivre pas à pas les instructions. Attention aux boucles
TantQue
dont
la condition est fausse dès le départ (0 itération) et aux boucles
Répéter
qui exécutent
toujours leur corps au moins une fois !
Exercice 2 : Traduction et affichage de la boucle Pour
🟢 FacileTraduire les algorithmes du tableau ci-dessous en Python tout en indiquant leurs affichages.
Pour i de 1 à 5 faire
Ecrire_nl(i)
Fin Pour
Pour i de 1 à 5 faire
Ecrire(i*i,' ')
Fin Pour
Pour i de 1 à 7 (pas=2) faire
Ecrire_nl(i)
Fin Pour
Pour i de 5 à 1 (pas=-1) faire
Ecrire_nl(i)
Fin pour
Indice :
Rappel : En Python, prêter une attention particulière aux bornes
(incluse/excluse)
manipulées dans la fonction
range()
.
Exercice 3 : Tournage à la main & Détermination du rôle
🟡 MoyenPour chacune des séquences algorithmiques ci-après, effectuer une exécution manuelle en fonction des valeurs données. Puis, en déduire le rôle.
N.B : a et b deux entiers non nuls
p ← 1
Pour i de 1 à b Faire
p ← p * a
Fin pour
Ecrire(p)
p ← 1
Pour i de 1 à a Faire
p ← p * i
Fin Pour
Ecrire(p)
Tant Que a ≠ b Faire
Si a > b alors
a ← a - b
Sinon
b ← b - a
Fin Si
Fin Tant Que
Ecrire(a)
x ← a
y ← b
Tant Que a ≠ b Faire
Si a < b Alors
a ← a + x
Sinon
b ← b + y
Fin Si
Fin Tant Que
Ecrire(a)
C ← ""
Pour i de 0 à long(ch)-1 faire
C ← ch[i] + C
Fin Pour
Ecrire(C)
test ← Vrai
Pour i de 0 à (long(ch) div 2) - 1 faire
Si ch[i] ≠ ch[long(ch)-1-i] Alors
test ← Faux
Fin Si
Fin Pour
Ecrire(test)
Indice : Effectuer un tracé manuel pas à pas avec les valeurs d'entrée proposées pour observer l'évolution des variables et identifier l'opération mathématique ou le traitement de chaîne réalisé.
Exercice 4 : Complétion d'algorithmes (Glisser-Déposer les étiquettes)
🟡 MoyenGlisser-déposer (ou cliquer pour sélectionner puis cliquer sur l'emplacement) les étiquettes ci-dessous dans les emplacements correspondants des algorithmes.
Algorithme Somme_Chiffres
Début
Ecrire("Donner une chaîne numérique ? ") ; Lire(ch)
S ← (1)
Pour i de (2) Faire
Si (3) Alors
S ← (4)
Fin Si
Fin Pour
Ecrire(S)
Fin
Algorithme Produit_Div
Début
Ecrire("Donner n > 0 ? ") ; Lire(n)
P ← (5)
Pour i de (6) Faire
Si (7) Alors
P ← (8)
Fin Si
Fin Pour
Ecrire(P)
Fin
Indice :
Pour l'algorithme 1, penser à convertir chaque caractère numérique afin de pouvoir
tester sa parité. Pour l'algorithme 2, tester les diviseurs de
n
et accumuler leur produit.
Exercice 5 : Jeu de la devinette par recherche dichotomique
🔴 DifficileEcrire un programme en Python qui devine le nombre choisi par l'utilisateur.
- L'utilisateur choisit un nombre secret entre 0 et 127.
-
L'ordinateur propose un nombre
propdans cet intervalle. -
L'utilisateur répond par le signe :
-
+: si prop < secret -
-: si prop > secret -
=: Si prop = secret
-
L'ordinateur doit faire 7 essais au plus pour deviner exactement le nombre.
🎮 Simulation Interactive : Recherche Dichotomique
Intervalle [0 .. 127]L'ordinateur propose {{ prop }} . Votre nombre secret est-il :
🎉 Bravo ! Votre nombre secret {{ prop }} a été deviné !
L'ordinateur a réussi la recherche en seulement {{ attempts }} essai(s) sur 7 !
❌ Limite d'essais atteinte
L'ordinateur est arrivé au bout des 7 essais.
📜 Historique détaillé des étapes de dichotomie
| Essai # | Intervalle [min .. max] | Proposition (prop) | Votre réponse | Éléments éliminés |
|---|---|---|---|---|
| #{{ h.essai }} | [{{ h.min }} .. {{ h.max }}] | {{ h.prop }} | {{ h.sign }} | -{{ h.eliminated }} nombre(s) |
Indice :
Appliquer l'algorithme de recherche dichotomique : initialiser
min ← 0
et
max ← 127
. À chaque étape, calculer la proposition au milieu
prop ← (min + max) div 2
et ajuster l'une des bornes selon le signe donné par
l'utilisateur.