Loop, de maldoit, publié sous licence Creative Commons by-nc-nd 2.0.

Boucles

Les boucles permettent de répéter une partie du programme plusieurs fois.

Boucle bornée

La boucle bornée permet de répéter une partie du programme un nombre de fois connu à l'avance.

Problème de l'échiquier de Sissa

Selon la légende, pour remercier l'inventeur des échecs Sissa, le roi lui demanda de choisir sa récompense. Sissa demanda alors du riz : un grain sur la première case, deux grains sur la seconde case, quatre grains sur la troisième case, huit grains sur la quatrième, et ainsi de suite jusqu'à la dernière case du jeu d'échec. Le roi accepta.

On se demande combien de grains seront posés sur la dernière case du plateau d'échecs (qui en compte 64).

Pour résoudre ce problème avec Scratch, on peut utiliser le programme suivant.

En Python, on utilisera plutôt :

grains = 1

for compteur in range(63):
    grains = 2 * grains

print("Nombre de grains sur la dernière case :", grains)

Explications :

  • Version simple : for compteur in range(63) signifie : répéter le bloc qui suit 63 fois.
  • Version compliquée : for compteur in range(63) signifie que la variable compteur prend successivement les valeurs de 0 à 62 (soit 63 valeurs en tout), et que pour chacune de ces valeurs, le bloc qui suit est exécuté.
  1. Recopiez (ou téléchargez) ce programme, et exécutez-le.
  2. Combien de grains de riz y aura-t-il sur la dernière case de l'échiquier ?

Tables de multiplications

  1. Recopiez (ou téléchargez) le programme suivant :

     nombre1 = int(input("De quel nombre voulez-vous la table de multiplication ? "))
    
     for compteur in range(10):
         print(nombre1)
    
  2. Modifiez ce programme pour qu'il affiche la table de multiplication du nombre demandé, de 0 à 10. Par exemple, si l'utilisateur donne la valeur 6, le programme devrait afficher : 0, 6, 12, 18, …, 60.

Boucles non bornée

Les boucles non bornées sont répétées jusqu'à ce qu'une certaine condition soit vérifiée (donc on ne sait pas à l'avance combien de fois le bloc à l'intérieur de la boucle sera répété).

Choisir un nombre

On demande à l'utilisateur un nombre entre 2 et 10. Si l'utilisateur se trompe (il répond par exemple 1, qui est trop petit), on lui repose la question, jusqu'à ce qu'il donne un nombre correct.

En scratch, on peut écrire le programme suivant.

En Python, on écrirait :

choix = 0

while choix < 2 or choix > 10:
    choix = float(input("Choissez un nombre entre 2 et 10 : "))

print("Vous avez choisi :", choix)

Quelques remarques :

  • en Scratch, on écrit la condition pour arrêter la boucle : Répéter jusqu'à ce que choix soit compris entre 2 et 10. ;
  • en Python, on écrit la condition pour continuer la boucle (qui est l'inverse de la précédente) : Répéter tant que choix n'est pas compris entre 2 et 10.

QCM

Recopiez (ou téléchargez) le programme suivant.

print("Qui est considéré comme le premier informaticien ?")
print("1. Ada Lovelace")
print("2. Al-Khwârizmî")
print("3. Alan Turing")
print("4. Bill Gates")

reponse = 0
while XXX:
    reponse = int(input("Entrez le numéro de votre réponse. "))

print("Bravo !")

Complétez (c'est-à-dire remplacez les XXX par les valeurs correctes) ce programme pour qu'il demande à l'utilisateur sa réponse, jusqu'à ce que sa réponse soit correcte.

Fin

  1. ✋ Appelez le professeur pour vérifier votre travail.
  2. En attendant qu'il arrive, commencez le TP suivant.