🔄 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
La boucle Répéter … Jusqu’à n’a pas d’équivalent direct en Python. On la simule en réalisant une première lecture/initialisation hors de la boucle, suivie d’une boucle 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 :

Algorithme Table_Multi
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)
Console en attente d’exécution…

🎯 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 + i

4. Factorielle de N

Calculer N! (1 * 2 * 3 * … * N).

Indice 💡fact ← 1 ; Pour i de 2 à n Faire fact ← fact * i

5. 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=0

10. 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 * x

12. 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-a

17. 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=0

18. Suite de Fibonacci

Afficher les N premiers termes de la suite de Fibonacci.

Indice 💡c ← a + b; a ← b; b ← c

19. 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 + 1

20. 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 = secret

25. 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=0

28. 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=0

31. 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 + 1

33. 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 + i

34. 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 + 1

36. 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 = 6

42. 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 ← Faux

45. 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 + c

47. 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 ...