Aller au contenu principal
BacInfo

Ch. 03 · Leçon 2

Les structures de contrôle itératives

60 minanalyse · python

Ce que vous saurez faire

  • Distinguer les structures itératives complètes et à condition d'arrêt
  • Utiliser la boucle Pour en algorithme et for en Python
  • Utiliser les boucles Répéter et Tant que et leur équivalent Python
  • Choisir la structure itérative adaptée à un problème donné
  • Écrire des programmes Python utilisant des boucles imbriquées

id: 33-1528-structures-controle-iteratives slug: 33-1528-structures-controle-iteratives titre: Les structures de contrôle itératives chapitre: 3 chapitre_titre: Les structures de contrôle lecon: 2 niveau: 4eme-sci ordre: 30 prerequis: [] duree_estimee_min: 60 mots_cles:

  • boucle
  • pour
  • tantque
  • repeter
  • for
  • while
  • iteration
  • python langages:
  • analyse
  • python objectifs:
  • Distinguer les structures itératives complètes et à condition d'arrêt
  • Utiliser la boucle Pour en algorithme et for en Python
  • Utiliser les boucles Répéter et Tant que et leur équivalent Python
  • Choisir la structure itérative adaptée à un problème donné
  • Écrire des programmes Python utilisant des boucles imbriquées status: published source_pdf: 33_1528.pdf source_pages:
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9 kind: cours

Les structures de contrôle itératives

Les structures itératives permettent de répéter un traitement plusieurs fois. On distingue deux grandes familles :

  • la structure itérative complète (boucle Pour) quand on connaît à l'avance le nombre de répétitions ;
  • les structures itératives à condition d'arrêt (Répéter, Tant que) quand le nombre de répétitions n'est pas connu d'avance.

1. La boucle POUR

Pour compteur de début à fin (pas) faire
    Traitement à répéter
Fin pour

Quand utiliser cette structure :

  • Lorsqu'on connaît le nombre de répétitions
  • Avec Vi ≤ Vf

2. Les structures itératives à condition d'arrêt

On les utilise lorsque l'on ne connaît pas d'avance le nombre de répétitions.

2.1. La boucle RÉPÉTER

Répéter
    Traitement à répéter
Jusqu'à (Condition)
  • Le nombre de répétitions est ≥ 1 (le traitement est exécuté au moins une fois).
  • On sort de la boucle quand la condition devient vraie.

Exemple :

X ← 2
Répéter
    X ← X + 5
Jusqu'à X >= 2

Valeur finale de X = 7 (le traitement est exécuté une fois avant le test).

2.2. La boucle TANT QUE

Tant que (condition) faire
    Traitement répétitif
Fin TantQue
  • Le nombre de répétitions est ≥ 0 (le traitement peut ne jamais être exécuté).
  • On reste dans la boucle tant que la condition est vraie.

Exemple :

X ← 2
Tantque x < 2 faire
    X ← X + 5
Fin tantque

Valeur finale de X = 2 (la condition x < 2 est fausse dès l'entrée, le traitement n'est jamais exécuté).

Exercices

Exercice 1
Cocher la bonne réponse

Programme 1 :

x = 0
y = 1
for i in range(1, 4):
    x = x + i
    y = y * i
print('x=', x, 'y=', y)

Le programme affiche :

  • ☐ x = 6, y = 20
  • ☐ x = 15, y = 25
  • ☐ x = 6, y = 6

Programme 2 :

X ← 0
Pour i de 0 à long(ch)-1 faire
    Si "0" <= ch[i] <= "9" alors
        X ← X + valeur(ch[i])
    Fin Si
Fin pour
Ecrire(x)

Pour Ch = 'html5 et css3', le programme affiche :

  • ☐ 53
  • ☐ 8
  • ☐ 2
Voir le corrigé

Programme 1 : la boucle for i in range(1, 4) fait varier i de 1 à 3.

Trace d'exécution
0 / 4
Instructionixy
01···???
02···???
03···???
04···???

Programme 2 : la chaîne 'html5 et css3' a une longueur de 13. On parcourt les caractères et on ajoute la valeur numérique uniquement quand le caractère est un chiffre.

Les chiffres trouvés sont '5' (indice 4) et '3' (indice 12).

X = 0 + 5 + 3 = 8 ✓ (2ème réponse)

Exercice 2
Saisie d'un entier dans [5..25]

Compléter les boucles permettant de saisir un entier n appartenant à l'intervalle [5..25].

1ère méthode (algorithme) :

Répéter
    Ecrire("donner un entier") lire(n)
Jusqu'à ………………………

2ème méthode (algorithme) :

Ecrire("donner un entier") lire(n)
Tant que ……………………… faire
    Ecrire("donner un entier") lire(n)
Fin tantque

1ère méthode (Python) :

while ……………………… :
    n = int(input('donner n'))
    if ……………………… :
        break

2ème méthode (Python) :

n = int(input('donner n'))
while ……………………… :
    n = int(input('donner n'))
Voir le corrigé

1ère méthode (algorithme) — Répéter :

Répéter
    Ecrire("donner un entier") lire(n)
Jusqu'à n dans [5..25]    // c.à.d (n >= 5) et (n <= 25)

2ème méthode (algorithme) — Tant que :

Ecrire("donner un entier") lire(n)
Tant que non(5 <= n <= 25) faire
    Ecrire("donner un entier") lire(n)
Fin tantque

1ère méthode (Python) :

while True:
    n = int(input('donner n'))
    if 5 <= n <= 25:
        break

2ème méthode (Python) :

n = int(input('donner n'))
while not (5 <= n <= 25):
    n = int(input('donner n'))
Exercice 3
Compter les mots d'une phrase

Écrire un programme qui permet de saisir une phrase de minimum 20 caractères, puis afficher le nombre de ses mots.

Voir le corrigé

Algorithme :

Nom : Mot
Début
    Répéter
        Ecrire("donner une chaine") lire(ch)
    Jusqu'à long(ch) >= 20
    m ← 0
    Pour i de 0 à long(ch)-1 faire
        Si ch[i] = " " alors
            m ← m + 1
        Fin Si
    Fin Pour
    Ecrire("Le nombre de mot = ", m+1)
Fin
ObjetType / Nature
chchaîne
i, mentier

Programme Python :

while True:
    ch = input('donner une phrase')
    if len(ch) >= 20:
        break
n = 0
for i in range(len(ch)):
    if ch[i] == ' ':
        n = n + 1
print('le nombre de mot=', n + 1)
Exercice 4
Table de multiplication de 2

Afin d'apprendre aux élèves la table de multiplication, on veut créer un programme en Python qui demande le résultat de la multiplication de 2 nombres choisis aléatoirement par l'ordinateur entre 0 et 9.

On interroge l'élève 10 fois, en affichant 'bravo' pour chaque bonne réponse et 'faux' pour une réponse fausse. On affiche à la fin le score obtenu (nombre de réponses correctes / 10).

Exemple de trace d'exécution :

essaie n° 1
1*1=1
bravo
essaie n° 2
1*7=7
bravo
...
essaie n° 5
4*4=15
faux
...
nombre de reponse correcte est 7 /10
Voir le corrigé

Algorithme :

Nom : Multiplication
Début
    s ← 0
    Pour i de 1 à 10 faire
        x ← aléa(0, 9)
        y ← aléa(0, 9)
        Ecrire("essaie n°", i)
        Ecrire(x, "*", y, "=") lire(z)
        Si z = x * y alors
            Ecrire("bravo")
            s ← s + 1
        Sinon
            Ecrire("faux")
        Fin Si
    Fin Pour
    Ecrire("Le nb de réponses correctes est ", s, "/10")
Fin
ObjetType / Nature
x, y, z, s, ientier

Programme Python :

from random import *
s = 0
for i in range(1, 11):
    x = randint(0, 9)
    y = randint(0, 9)
    print('essaie n°', i)
    z = int(input(str(x) + "*" + str(y) + "="))
    if z == x * y:
        print('bravo')
        s = s + 1
    else:
        print('faux')
print("le nombre des réponse correcte", s, "/10")
Exercice 5
Devinette d'un nombre à 3 chiffres

Écrire un programme en Python qui permet de deviner un nombre composé de 3 chiffres choisi aléatoirement par l'ordinateur.

  • Le joueur a maximum 10 essais.
  • Si le nombre saisi est supérieur au nombre à deviner, on affiche "plus", sinon "moins".
  • À la fin : "bravo" si le joueur a deviné, sinon "perdu" (en affichant le nombre).

Exemple 1 (perdu après 10 essais) :

Bonjour, devinez un nombre composé de 3 chiffres
essaie n°1 500  → plus
essaie n°2 700  → plus
essaie n°3 900  → moins
...
essaie n°10 833
perdu, le nombre à deviner = 822

Exemple 2 (gagné) :

essaie n°8 843
bravo
Voir le corrigé

Algorithme :

Début
    Ecrire("Bonjour, devinez un nb de 3 chiffres")
    y ← aléa(100, 999)
    i ← 1
    Répéter
        Ecrire("essaie n°", i) lire(x)
    Jusqu'à 100 <= x <= 999
    Tantque (x ≠ y) et (i < 10) faire
        i ← i + 1
        Si x < y alors
            Ecrire("plus")
        Sinon
            Ecrire("moins")
        Fin Si
        Répéter
            Ecrire("essaie n°", i) lire(x)
        Jusqu'à 100 <= x <= 999
    Fin Tantque
    Si x = y alors
        Ecrire("Bravo")
    Sinon
        Ecrire("Perdu, le nombre est ", y)
    Fin Si
Fin
ObjetType / Nature
x, y, ientier

Programme Python :

print('bonjour, devinez un nombrez de 3 chiffres')
from random import *
y = randint(100, 999)
i = 1
while True:
    x = int(input('essaie n°' + str(i) + ':'))
    if 100 <= x <= 999:
        break
while (x != y) and (i < 10):
    i = i + 1
    if x < y:
        print('plus')
    else:
        print('moins')
    while True:
        x = int(input('essaie n°' + str(i) + ':'))
        if 100 <= x <= 999:
            break
if x == y:
    print('bravo')
else:
    print('perdu le numéro est ', y)

À retenir

  • Boucle Pour / for : nombre de répétitions connu d'avance.
  • Boucle Répéter / while True + break : nombre de répétitions inconnu, exécuté au moins 1 fois.
  • Boucle Tant que / while : nombre de répétitions inconnu, exécuté 0 fois ou plus.
  • En Python, range(a, b, p) exclut la borne b.
  • Pour un contrôle de saisie, le schéma classique est Répéter ... Jusqu'à condition_valide ou while True ... if condition_valide: break.
Vérification des acquis

Quiz : boucles en Python

Maîtrisez `for`, `while` et `range` en Python.

Quiz (5 questions)

1

Que produit `for i in range(5):` ?

2

Que vaut `s` après ce code ? ```python s = 0 for i in range(1, 11): s += i ```

3

Pour écrire une boucle qui s'arrête quand l'utilisateur tape 0, on utilise :

4

Quelle instruction permet de **sortir** d'une boucle prématurément ?

5

Soit le code suivant. Que vaut `cpt` à la fin ? ```python cpt = 0 for c in "Python": if c in "aeiou": cpt += 1 ```

Bravo d'être arrivé jusqu'ici. Marquez la leçon terminée pour ancrer le progrès.