🔄 Les Structures Itératives (Boucles)
Définition, syntaxe algorithmique et Python, comparaison des 3 boucles, exercice interactif et série d’entraînement complète.
📖 Définition
Une structure itérative (communément appelée boucle) permet de répéter l’exécution d’un bloc d’instructions plusieurs fois. Cette répétition peut être contrôlée par un nombre de fois connu à l’avance (itération déterminée) ou dépendre d’une condition logique évaluée au fur et à mesure (itération indéterminée).
1. La Structure « Pour » (Itération Déterminée)
Principe : Utilisée lorsque le nombre de répétitions est strictement connu à l’avance. On utilise un compteur qui s’incrémente ou se décrémente automatiquement.
Convention Algorithmique
Pour i de vi à vf [Pas = p] Faire
// Traitement
Fin Pour
Équivalent Python
# Pas par défaut (1)
for i in range(vi, vf + 1):
# Traitement
# Avec pas personnalisé p
for i in range(vi, vf + 1, p):
# Traitement
2. La Structure « Tant que » (Itération Indéterminée)
Principe : La condition est évaluée avant l’exécution du bloc d’instructions. Le traitement peut ne jamais être exécuté si la condition est fausse dès le départ.
Convention Algorithmique
Tant que condition Faire
// Traitement
Fin Tant que
Équivalent Python
while condition:
# Traitement
3. La Structure « Répéter … Jusqu’à »
Principe : Le traitement est exécuté au moins une fois avant l’évaluation de la condition d’arrêt. Elle est idéale pour forcer la saisie correcte d’une donnée.
Convention Algorithmique
Répéter
// Traitement
Jusqu'à condition
⚠️ Remarque Pédagogique Python
while not (condition).
# Simulation :
x = int(input("Donner x : "))
while not (condition):
x = int(input("Donner x : "))
💡 Note : Quelle boucle choisir ? (Comparaison)
| Boucle | Nombre d’itérations | Évaluation de la condition | Cas d’utilisation idéal |
|---|---|---|---|
| Pour | Connu à l’avance | Automatique via un compteur | Parcours de chaînes, de tableaux, ou calculs avec des bornes fixes. |
| Tant que | Inconnu | Avant le traitement (Peut s’exécuter 0 fois) | Traitements où l’arrêt dépend d’un calcul, d’un drapeau ou d’un événement. |
| Répéter | Inconnu | Après le traitement (S’exécute au moins 1 fois) | Contrôle de saisie (forcer l’utilisateur à entrer une valeur correcte). |
💻 Exercice Interactif : Compléter les boucles
Énoncé : Complétez l’algorithme (et son T.D.O) qui force l’utilisateur à saisir un nombre compris entre 1 et 9, puis affiche sa table de multiplication. Testez ensuite l’équivalent Python via le simulateur.
1. Compléter l’algorithme :
Début
// 1. Contrôle de saisie
Ecrire(« Entrez un nombre [1..9] : « )
Lire(n)
(n ≥ 1) Et (n ≤ 9)
// 2. Affichage de la table
i de 1 10 Faire
Ecrire(n, » x « , i, » = « , n * i)
Fin
2. Compléter le T.D.O :
| Objets | Type / Nature | Vérif |
|---|---|---|
n, i |
💻 Programme Python & Simulation
Voici l’équivalent de cet algorithme en Python :
# 1. Contrôle de saisie
n = int(input("Entrez un nombre [1..9] : "))
while not (1 <= n <= 9):
n = int(input("Erreur. Entrez un nombre [1..9] : "))
# 2. Affichage de la table
for i in range(1, 11):
print(n, "x", i, "=", n * i)
🎯 Plus d’entraînement : 50 Exercices sur les Boucles
Des exercices progressifs pour maîtriser l’itération en algorithmique.
1. Répéter 10 fois
Afficher 10 fois le mot « Bonjour » à l’écran.
Indice 💡
Pour i de 1 à 10 Faire Ecrire("Bonjour")2. Compter jusqu’à N
Demander un nombre N et afficher tous les nombres de 1 à N.
Indice 💡
Pour i de 1 à N Faire Ecrire(i)3. Somme des entiers
Calculer la somme des N premiers entiers positifs (1+2+3…+N).
Indice 💡
som ← 0 ; Pour i de 1 à n Faire som ← som + i4. Factorielle de N
Calculer N! (1 * 2 * 3 * … * N).
Indice 💡
fact ← 1 ; Pour i de 2 à n Faire fact ← fact * i5. Nombres pairs jusqu’à 20
Afficher tous les nombres pairs entre 2 et 20.
Indice 💡
Pour i de 2 à 20 Pas = 2 Faire Ecrire(i)6. Compte à rebours
Afficher les nombres de 10 à 1, puis « Partez ! ».
Indice 💡
Pour i de 10 à 1 Pas = -1 Faire Ecrire(i)7. Saisie contrôlée d’une note
Demander de saisir une note jusqu’à ce qu’elle soit entre 0 et 20.
Indice 💡
Répéter Lire(n) Jusqu'à (n>=0) Et (n<=20)8. Mot de passe
Demander le mot de passe "1234" jusqu'à ce que l'utilisateur le trouve.
Indice 💡
Répéter Lire(mdp) Jusqu'à mdp="1234"9. Somme jusqu'à zéro
Lire des nombres et calculer leur somme. La saisie s'arrête si on tape 0.
Indice 💡
Répéter Lire(x); som ← som + x Jusqu'à x=010. Maximum d'une série
Demander 10 nombres et afficher le plus grand des 10 à la fin.
Indice 💡
Si x > max Alors max ← x (dans un Pour)11. Puissance de X
Calculer X à la puissance Y en utilisant uniquement des multiplications successives.
Indice 💡
p ← 1; Pour i de 1 à y Faire p ← p * x12. Nombre de voyelles
Compter le nombre de voyelles dans une chaîne saisie par l'utilisateur.
Indice 💡
Pour i de 0 à Long(ch)-1 Faire Si ch[i] in ["A","E"...]13. Inverser une chaîne
Construire une nouvelle chaîne qui est l'inverse de la chaîne saisie.
Indice 💡
Pour i de Long(ch)-1 à 0 Pas -1 Faire inv ← inv + ch[i]14. Est-ce un palindrome ?
Vérifier si un mot se lit de la même façon dans les deux sens (ex: RADAR).
Indice 💡
Inverser et comparer : Si ch = inv Alors ...15. Nombre Premier
Déterminer si un nombre N n'a que 2 diviseurs (1 et lui-même).
Indice 💡
Compter les diviseurs de 1 à N. Si cpt = 2 Alors Premier.16. PGCD (Soustractions)
Calculer le PGCD de A et B par soustractions successives.
Indice 💡
Tant que a ≠ b Faire Si a>b Alors a←a-b Sinon b←b-a17. PGCD (Euclide)
Calculer le PGCD en utilisant les restes des divisions successives.
Indice 💡
Répéter r←a Mod b; a←b; b←r Jusqu'à b=018. Suite de Fibonacci
Afficher les N premiers termes de la suite de Fibonacci.
Indice 💡
c ← a + b; a ← b; b ← c19. Occurrences d'une lettre
Saisir une phrase et une lettre, puis compter combien de fois la lettre apparaît.
Indice 💡
Si ch[i] = lettre Alors cpt ← cpt + 120. Afficher les diviseurs
Saisir un nombre entier N et afficher tous ses diviseurs.
Indice 💡
Pour i de 1 à N Faire Si N Mod i = 0 Alors Ecrire(i)21. Nombre Parfait
Vérifier si un nombre est égal à la somme de ses diviseurs propres (ex: 6 = 1+2+3).
Indice 💡
Somme les diviseurs de 1 à N Div 2.22. Carré d'étoiles
Saisir N. Afficher N lignes contenant N étoiles.
Indice 💡
2 boucles Pour imbriquées (i et j).23. Triangle d'étoiles
Saisir N. Ligne 1 : 1 étoile. Ligne 2 : 2 étoiles... Ligne N : N étoiles.
Indice 💡
Boucle j de 1 à i.24. Le Juste Prix (Boucle)
Faire deviner un prix secret. Afficher "+ grand" ou "+ petit" jusqu'à trouver.
Indice 💡
Répéter ... Jusqu'à essai = secret25. Code PIN de carte bancaire
Saisir un code PIN. Limiter à 3 essais maximum avant blocage.
Indice 💡
Jusqu'à (pin=bon) Ou (essai=3)26. Moyenne d'une classe
Saisir les notes d'élèves. Arrêter la saisie à -1 et calculer la moyenne.
Indice 💡
Tant que note ≠ -1 ... incrémenter cpt et som.27. Conversion Décimal -> Binaire
Convertir un entier en binaire en stockant les restes des divisions par 2.
Indice 💡
Répéter res ← ConvCh(n Mod 2) + res; n ← n Div 2 Jusqu'à n=028. Calcul du PPCM
Trouver le Plus Petit Commun Multiple de deux entiers non nuls A et B.
Indice 💡
ppcm ← (A * B) / PGCD(A, B)29. Les nombres d'Armstrong
Afficher tous les nombres d'Armstrong (ex: 153 = 1³ + 5³ + 3³) entre 100 et 999.
Indice 💡
Pour i de 100 à 999. Isoler c, d, u et vérifier i = c³+d³+u³.30. Somme des chiffres d'un nombre
Saisir un très grand nombre entier positif et calculer la somme de ses chiffres.
Indice 💡
Répéter s ← s + (n Mod 10); n ← n Div 10 Jusqu'à n=031. Multiples de 3 inférieurs à 100
Afficher tous les multiples de 3 strictement inférieurs à 100.
Indice 💡
Pour i de 3 à 99 Pas=3 Faire Ecrire(i)32. Moyenne de nombres positifs
Saisir des nombres, calculer leur moyenne, s'arrêter dès la saisie d'un nombre négatif.
Indice 💡
Tant que x >= 0 Faire som ← som + x ; cpt ← cpt + 133. Dépasser 500
Trouver le premier entier N tel que la somme 1+2+3+...+N dépasse 500.
Indice 💡
Tant que som <= 500 Faire i ← i + 1; som ← som + i34. Rectangle d'étoiles
Dessiner un rectangle composé d'étoiles (*) de largeur L et hauteur H saisies par l'utilisateur.
Indice 💡
Pour i de 1 à H Faire... Pour j de 1 à L Faire...35. Compter les espaces
Saisir une phrase et compter le nombre de caractères "espace" qu'elle contient.
Indice 💡
Si ch[i] = " " Alors cpt ← cpt + 136. Remplacer les espaces
Saisir une phrase, et remplacer tous les espaces par des tirets (-).
Indice 💡
Si ch[i] = " " Alors res ← res + "-" Sinon res ← res + ch[i]37. Afficher l'alphabet
Afficher toutes les lettres de A à Z en utilisant la table ASCII et une boucle.
Indice 💡
Pour i de 65 à 90 Faire Ecrire(Chr(i))38. Binaire vers Décimal
Saisir une chaîne représentant un nombre binaire et la convertir en entier décimal.
Indice 💡
som ← som + (valeur_bit * 2^puissance)39. Diviseurs communs
Saisir deux entiers A et B et afficher tous les diviseurs qu'ils ont en commun.
Indice 💡
Si (A Mod i = 0) Et (B Mod i = 0) Alors Ecrire(i)40. Tous les chiffres pairs ?
Vérifier si un nombre entier saisi est constitué uniquement de chiffres pairs.
Indice 💡
Répéter c ← n Mod 10 ... n ← n Div 10 Jusqu'à (c Mod 2 ≠ 0) Ou (n = 0)41. Lancer de dé aléatoire
Simuler un lancer de dé (aléatoire 1-6) jusqu'à obtenir un 6. Afficher le nombre d'essais.
Indice 💡
Répéter de ← Alea(1,6); cpt ← cpt + 1 Jusqu'à de = 642. Dessiner un losange
Dessiner un losange à l'aide du caractère étoile (*) et des espaces (2 triangles collés).
Indice 💡
Utiliser plusieurs boucles imbriquées pour gérer les espaces et les *.43. Min et Max d'une série
Saisir une série de notes (arrêt à -1). Afficher à la fin la note minimale et la note maximale.
Indice 💡
Si note < min Alors min ← note. (Même logique pour max).44. Chaîne purement alphabétique
Vérifier si une chaîne de caractères est constituée uniquement de lettres de l'alphabet.
Indice 💡
Si (Majus(ch[i]) < "A") Ou (Majus(ch[i]) > "Z") Alors bool ← Faux45. Table de Pythagore complète
Afficher la table de multiplication complète de 1x1 à 10x10 sous forme de tableau.
Indice 💡
Pour i de 1 à 10 Faire Pour j de 1 à 10 Faire...46. Somme des chiffres pairs
Saisir un nombre et calculer la somme uniquement de ses chiffres qui sont pairs.
Indice 💡
c ← n Mod 10; Si c Mod 2 = 0 Alors som ← som + c47. Les 10 premiers nombres premiers
Afficher les 10 premiers nombres premiers, un par un.
Indice 💡
Tant que cpt_premiers < 10 Faire ...48. Affichage vertical
Saisir un mot et l'afficher avec une lettre par ligne (verticalement).
Indice 💡
Pour i de 0 à Long(ch)-1 Faire Ecrire(ch[i])49. Cryptage de César
Saisir un mot en majuscules et le crypter en décalant chaque lettre de 3 positions (+3 ASCII).
Indice 💡
c_crypte ← Chr(Ord(ch[i]) + 3)50. Suite géométrique
Saisir un 1er terme et une raison (ex: 2). Afficher les termes de la suite jusqu'à dépasser une limite L.
Indice 💡
terme ← terme * raison; Tant que terme <= L Faire ...