Module 5 : Structure itérative complète

Cours

1. Présentation

Définition

Les structures de contrôle itératives (ou répétitives) sont indispensables lorsque le traitement doit être répété un nombre connu de fois.

Elles s'appuient sur une variable compteur (ou décompteur) de boucle qui évolue automatiquement d'une valeur initiale ($V_i$) à une valeur finale ($V_f$) selon un pas ($p$) spécifié.

📐 Schéma de principe d'une Structure Itérative (Boucle Pour)
Schéma Organigramme - Structure Itérative (Boucle Pour i de Vi à Vf)

2. Syntaxe

📐 Algorithme 🐍 Python
Structure itérative générale
// Compteur ou décompteur
Pour cpt de Vi à Vf Faire [Pas=p]
    // Traitement
Fin Pour

Note : Si le pas [Pas=p] est omis, le pas par défaut vaut $+1$.

Traduction Python avec range()
# compteur, p > 0
for cpt in range(Vi, Vf + 1, p):
    # Traitement

# décompteur, p < 0
for cpt in range(Vi, Vf - 1, p):
    # Traitement
💡 La fonction Python range(début, fin, pas)

En Python, la fonction range() génère une séquence d'entiers. Attention : la borne finale fin est toujours exclue (la séquence s'arrête à fin - 1 pour un pas positif ou à fin + 1 pour un pas négatif).

Explication de la fonction range Python
Forme à 1 argument : range(n)

Génère les entiers de $0$ à $n-1$ par pas de $1$.

range(5) $\rightarrow$ 0, 1, 2, 3, 4
Forme à 2 arguments : range(a, b)

Génère les entiers de $a$ à $b-1$ par pas de $1$.

range(1, 6) $\rightarrow$ 1, 2, 3, 4, 5
Forme à 3 arguments : range(a, b, p)

Génère les entiers de $a$ à $b-1$ par pas de $p$.

range(0, 11, 2) $\rightarrow$ 0, 2, 4, 6, 8, 10

Exemples d'application (Cours de référence)

Exemple 1 : Compteur de 0 à 10

Séquence générée : 0, 1, 2, 3, ..., 10

Algorithme
// Compteur de 0 à 10
// 0, 1, 2, 3, ..., 10
Pour i de 0 à 10 Faire
    Ecrire(i)
Fin Pour
Python
# Compteur de 0 à 10
for i in range(11):
    print(i)
# ou
for i in range(0, 11):
    print(i)
# ou
for i in range(0, 11, 1):
    print(i)
Exemple 2 : Compteur par pas de 2

Séquence générée : 0, 2, 4, 6, 8, 10

Algorithme
// Compteur de 0 à 10 par pas de 2
// 0, 2, 4, 6, 8, 10
Pour i de 0 à 10 Faire [Pas=2]
    Ecrire(i)
Fin Pour
Python
# Compteur de 0 à 10 par pas de 2
for i in range(0, 11, 2):
    print(i)
Exemple 3 : Décompteur par pas de -2

Séquence générée : 10, 8, 6, 4, 2, 0

Algorithme
// Décompteur de 10 à 0 par pas de -2
// 10, 8, 6, 4, 2, 0
Pour i de 10 à 0 Faire [Pas=-2]
    Ecrire(i)
Fin Pour
Python
# Décompteur de 10 à 0 par pas de -2
for i in range(10, -1, -2):
    print(i)
📌 Synthèse d'analyse de la fonction range() (Exercice 1)
Instruction Python Compteur Intervalle ($V_i$ / $V_f$) Valeurs du compteur
for i in range(5): i 0 / 4 0, 1, 2, 3, 4
for j in range(1, 5): j 1 / 4 1, 2, 3, 4
for k in range(5, 1): k Aucun (Pas +1 par défaut) Aucune (Boucle non exécutée)
for l in range(2, 11, 3): l 2 / 10 2, 5, 8
for m in range(10, -10, -5): m 10 / -5 10, 5, 0, -5
for n in range(len("abdou")): n 0 / 4 0, 1, 2, 3, 4

Exercices Interactifs

Exercice 1 – Fonction range

Analysez le comportement de la fonction range() en Python et identifiez le compteur, les bornes ($V_i$ / $V_f$) et les valeurs générées lors des itérations.

⚡ Partie A : Simulateur dynamique range(début, fin, pas) Interactif
📝 Partie B : Grille d'évaluation – Exercice 1 du Cours
Instruction Python Compteur Bornes ($V_i$ / $V_f$) Valeurs générées du compteur
for i in range(5): i 0 / 4 0, 1, 2, 3, 4
for j in range(1, 5):
for k in range(5, 1):
for l in range(2, 11, 3):
for m in range(10, -10, -5):
for n in range(len("abdou")):

Exercice 2 – Bonjour

Utilisez une structure itérative Pour / for in range() pour répéter un message ou alterner entre plusieurs messages à l'aide de l'opérateur modulo.

📐 Algorithme (Question 1)
Algorithme Repetition_Hello
Début
    Ecrire("N ? "); Lire(n)
    Pour i de 1 à n Faire
        Ecrire("Hello ")
    Fin Pour
Fin
🐍 Code Python (Question 1)
n = int(input("N ? "))
for i in range(n):
    print("Hello", end=" ")

📐 Algorithme (Question 2 avec Selon / i mod 3)
Algorithme Salutations_Alternees
Début
    Ecrire("N ? "); Lire(n)
    Pour i de 0 à n - 1 Faire
        Selon (i mod 3)
            0 : msg ← "Hello"
            1 : msg ← "Bonjour"
            2 : msg ← "Asselema"
        Fin Selon
        Ecrire(msg, " ")
    Fin Pour
Fin
🐍 Code Python (Question 2 avec condition & modulo)
n = int(input("N ? "))
for i in range(n):
    if i % 3 == 0:
        msg = "Hello"
    elif i % 3 == 1:
        msg = "Bonjour"
    else:
        msg = "Asselema"
    print(msg, end=" ")
⚡ Simulateur Interactif – Exercice 2 Exécution en direct
N =
Exemples du cours :

Exercice 3 – Somme des nombres impairs

Écrivez un programme qui saisit deux entiers $a$ et $b$ ($b > a$), puis calcule et affiche la somme de tous les entiers impairs situés dans l'intervalle $[a, b]$.

⚡ Simulateur Interactif – Somme des impairs dans [a, b] Calcul dynamique

Exercice 4 – Nombre de voyelles et de consonnes

Écrivez un programme qui saisit une chaîne de caractères non vide ch, puis calcule et affiche le nombre de voyelles et le nombre de consonnes qui la composent.

📌 Exemples du cours de référence
Exemple 1 : ch = "Mariouma"
  • 🌸 Nombre de voyelles : 5 (a, i, o, u, a)
  • 🔹 Nombre de consonnes : 3 (M, r, m)
Exemple 2 : ch = "Hammoud"
  • 🌸 Nombre de voyelles : 3 (a, o, u)
  • 🔹 Nombre de consonnes : 4 (H, m, m, d)
⚡ Simulateur Interactif – Comptage Voyelles & Consonnes Analyse en direct
Chaîne ch =

Exercice 5 – Filtrage des lettres et des chiffres

Écrivez un programme qui saisit une chaîne de caractères non vide ch, puis construit et affiche deux nouvelles chaînes :
chl : composée uniquement des lettres alphabétiques contenues dans ch.
chc : composée uniquement des chiffres contenus dans ch.

📌 Exemples du cours de référence
Exemple 1 : ch = "IA2DAY4TMRW"
  • 🔤 Lettres (chl) : IADYTMRW
  • 🔢 Chiffres (chc) : 24
Exemple 2 : ch = "Sami est ne le 15/05/25"
  • 🔤 Lettres (chl) : Samiestnele
  • 🔢 Chiffres (chc) : 150525
⚡ Simulateur Interactif – Filtrage Lettres (chl) & Chiffres (chc) Séparation dynamique
Chaîne ch =

Exercice 6 – QCM (Structures itératives & Parcours de chaînes)

Analysez le comportement des boucles et du parcours des chaînes de caractères ci-dessous, puis cochez la bonne réponse pour chaque question.

📝 Questionnaire à Choix Multiples (5 Questions) Auto-évaluation
Question 1 : Que va afficher ce programme Python ?
x = 0
for i in range(1, 4):
    x = x + i
print('x =', x)
💡 Indice : La fonction range(1, 4) génère les entiers 1, 2, 3 (la borne 4 est exclue). Calculez l'accumulation : d'abord x = 0 + 1, puis x = 1 + 2, puis...
Question 2 : Que va afficher ce programme Python ?
y = 1
for i in range(1, 4):
    y = y * i
print('y =', y)
💡 Indice : range(1, 4) produit la séquence 1, 2, 3. Attention : il s'agit d'un produit (y * i) et non d'une addition. Calculez y = 1 * 1 * 2 * 3.
Question 3 : Que va afficher cet algorithme pour ch = "AX3?41R0" ?
X ← 0
Pour i de 0 à long(ch) - 1 Faire
    Si ("0" ≤ ch[i]) Et (ch[i] ≤ "9") Alors
        X ← X + valeur(ch[i])
    Fin Si
Fin Pour
Ecrire(X)
💡 Indice : La fonction valeur(ch[i]) convertit les caractères chiffres ('3', '4', '1', '0') en nombres entiers (3, 4, 1, 0). L'instruction fait la somme de ces entiers.
Question 4 : Que va afficher cet algorithme pour ch = "AX3?41R0" ?
X ← 0
Pour i de 0 à long(ch) - 1 Faire
    Si ("0" ≤ ch[i]) Et (ch[i] ≤ "9") Alors
        X ← X + 1
    Fin Si
Fin Pour
Ecrire(X)
💡 Indice : Observez l'instruction X ← X + 1. À chaque fois qu'un caractère est un chiffre entre '0' et '9', on augmente X de 1. L'algorithme compte donc le nombre total de chiffres.
Question 5 : Que va afficher cet algorithme pour ch = "AX3?41R0" ?
X ← ""
Pour i de 0 à long(ch) - 1 Faire
    Si ("0" ≤ ch[i]) Et (ch[i] ≤ "9") Alors
        X ← X + ch[i]
    Fin Si
Fin Pour
Ecrire(X)
💡 Indice : Remarquez l'initialisation X ← "" (chaîne vide) et l'opération X ← X + ch[i]. Il s'agit d'une concaténation de texte, qui colle les caractères chiffres les uns après les autres sans les additionner mathématiquement.

Exercice 7 – Nombre Abondant, Déficient ou Parfait

Soit $N > 0$ un nombre entier positif et $SD$ la somme de tous ses diviseurs stricts (excluant $N$ lui-même). Un nombre est dit :
Parfait : si $SD = N$
Abondant : si $SD > N$
Déficient : si $SD < N$

📌 Exemples du cours de référence
Nombre Parfait : 6
Diviseurs : 1, 2, 3
SD = 1+2+3 = 6 = N
Nombre Abondant : 12
Diviseurs : 1, 2, 3, 4, 6
SD = 16 > 12
Nombre Déficient : 10
Diviseurs : 1, 2, 5
SD = 8 < 10
⚡ Simulateur Interactif – Analyse de Divisibilité Somme des diviseurs
Nombre N =

Exercice 8 – Nombre Poly-divisible (Ticket de caisse)

Un numéro de ticket de caisse à 10 chiffres est gagnant s'il est poly-divisible :
• Le nombre formé par les 2 premiers chiffres est multiple de 2.
• Le nombre formé par les 3 premiers chiffres est multiple de 3.
• ... jusqu'au nombre formé par les 10 chiffres qui doit être multiple de 10.

📌 Exemples du cours de référence
1624560840 → Gagnant 8460060840 → Gagnant 6244560000 → Gagnant
⚡ Simulateur Interactif – Vérification de Ticket (10 chiffres) Poly-divisibilité
N° Ticket =

Exercice 9 – Somme de la Série Numérique $S_n$

Pour un entier $n \ge 1$, calculer la somme de la série alternée à puissances variables : $$\displaystyle S_n = 1^1 - 2^2 + 3^3 - 4^4 + \dots + (-1)^{n+1} \cdot n^n$$

⚡ Simulateur Interactif – Calcul de la Série $S_n$ Boucle for & Puissances
Valeur n =

Exercice 10 – Carte de Fidélité ("Check_card")

Un numéro de carte de fidélité est valide si et seulement s'il respecte les 3 critères :
1. Longueur d'au moins 8 caractères ($\ge 8$).
2. La somme des chiffres est un multiple de 3 ou de 7.
3. La somme des rangs des lettres alphabétiques ($A=0, B=1, \dots, Z=25$) a la même parité (pair/impair) que le nombre de lettres.

📌 Rangs des lettres alphabétiques (A=0 à Z=25)
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
⚡ Simulateur Interactif – Check_card Contrôle de validité
N° Carte =

Exercice 11 – Progression Croissante / Décroissante

Un nombre forme une suite de chiffres de gauche à droite :
Croissante : si chaque chiffre est supérieur ou égal au précédent ($c_1 \le c_2 \le \dots \le c_m$).
Décroissante : si chaque chiffre est inférieur ou égal au précédent ($c_1 \ge c_2 \ge \dots \ge c_m$).
Ni l'un ni l'autre : si la suite alterne ou ne respecte pas d'ordre uniforme.

📌 Exemples du cours de référence
1234 → Progression Croissante 4321 → Progression Décroissante 1324 → Pas de progression
⚡ Simulateur Interactif – Analyse de Progression Comparaison de chiffres
Nombre N =