Retour au cours

Supplément - Cours 5

Jaser des boucles

Une ligne par tour, trois déroulements et les boucles des autres langages

La factorielle, tour par tour

Code

factorielle : int = 1 for nombre in range(1, 5): factorielle = factorielle * nombre print(factorielle)

Chaque ligne est un moment : la colonne « calcul » utilise toujours la factorielle de la ligne d'au-dessus.

tour
temps
nombrefactoriellecalcul
01
1111 * 1
2221 * 2
3362 * 3
44246 * 4

Trois autres déroulements

Prédisez la ligne suivante avant de la dévoiler

#1 : un range avec un pas

Code

somme : int = 0 for nombre in range(1, 10, 2): somme = somme + nombre print(somme)

Le 3e nombre de range est le pas : 1, 3, 5, 7, 9. Et regardez la colonne somme : 1, 4, 9, 16, 25... des carrés parfaits !

Table de trace

Tournombresommecalcul
départ0
1110 + 1
2341 + 3
3594 + 5
47169 + 7
592516 + 9
fin11 dépasse la fin

#2 : un while qui grignote un nombre

Code

nombre : int = 2026 chiffres : int = 0 while nombre > 0: nombre = nombre // 10 chiffres += 1 print(chiffres)

// 10 enlève le dernier chiffre. On ne sait pas d'avance combien de tours il faudra : c'est le travail d'un while. Sortie : 4.

Table de trace

TournombrechiffresCondition testée
départ20260
12026 // 10 = 20212026 > 0 : Vrai
2202 // 10 = 202202 > 0 : Vrai
320 // 10 = 2320 > 0 : Vrai
42 // 10 = 042 > 0 : Vrai
sortie040 > 0 : Faux
boucles d'autres langages tourTotal = 5 for(compteur = 0; compteur < tourTotal; compteur++) { // code ici }
En C, Java ou JavaScript, la parenthèse du for contient trois morceaux séparés par des ; : le départ, la condition et le pas. compteur++ veut dire compteur += 1.

La même boucle en Python

Autres langages

tourTotal = 5 for(compteur = 0; compteur < tourTotal; compteur++) { // code ici }

Python : while

tourTotal : int = 5 compteur : int = 0 while compteur < tourTotal: # code ici compteur += 1

Python : for

tourTotal : int = 5 for compteur in range(0, tourTotal, 1): # code ici

 départ   condition   pas  : les trois morceaux sont toujours là. Le while les étale sur trois lignes, le range les ramasse dans ses trois nombres.

#3 : et après la boucle ?

Code

tourTotal : int = 5 compteur : int = 0 while compteur < tourTotal: print(compteur) compteur += 1 print("après :", compteur)

Avec le while (et en C), le compteur sort à 5 : c'est la valeur qui a rendu le test faux. Avec for compteur in range(tourTotal), il reste à 4, la dernière valeur fournie par range.

Table de trace

TourcompteurCondition testéeSortie
départ0
10 → 10 < 5 : Vrai0
21 → 21 < 5 : Vrai1
32 → 32 < 5 : Vrai2
43 → 43 < 5 : Vrai3
54 → 54 < 5 : Vrai4
sortie55 < 5 : Faux

Pour continuer

Le déroulement d'une boucle

La méthode complète de la table de trace : sommation, Fibonacci, le piège de l'échange de valeurs, la boucle infinie, et deux exercices.

Ouvrir le diaporama

Déroulé pas-à-pas

Tapez une de ces boucles : la table de trace se remplit toute seule, tour par tour. Comparez avec la vôtre.

Ouvrir le visualisateur