Rédiger le cours
Moon Arrows Sun
Arrows

Choisir sa boucle, construire une liste

Deux questions se posent avant d'écrire : quelle structure de boucle , et faut-il garder les valeurs ou seulement la dernière.

Choisir sa boucle

Question posée
Boucle
« Calculer les 20 premiers termes »
\(\text{for}\), 20 tours connus
« À partir de quel rang dépasse-t-on 1000 ? »
\(\text{while}\), on ne sait pas d'avance
« Additionner tous les éléments d'une liste »
\(\text{for}\) sur la liste
l'énoncé désigne la boucle

Un \(\text{while}\) dont la condition ne peut jamais devenir fausse tourne indéfiniment : vérifier que quelque chose change à l'intérieur de la boucle.

Chercher un seuil

C'est le programme type du chapitre : on avance tant qu'on n'a pas dépassé, en comptant les tours .

Exemple :

À partir de quel rang la suite \(u_{n+1} = 1{,}05 \, u_n\), de premier terme \(u_0 = 100\), dépasse-t-elle \(200\) ?

u = 100
n = 0
while u <= 200:
    u = 1.05 * u
    n = n + 1
print(n)

Le programme affiche \(15\) : c'est le premier rang pour lequel \(u_n > 200\).

L'ordre des deux lignes dans la boucle compte : on calcule le terme suivant, puis on incrémente le rang . Inverser décale la réponse d'une unité.

Construire une liste

Trois écritures pour le même résultat. On choisit la compréhension quand la règle est simple , les ajouts successifs quand chaque terme dépend du précédent.

Règle directe :

L = [2 * k + 1 for k in range(10)]

Récurrence :

L = [3]
for k in range(9):
    L.append(2 * L[-1])

Une suite définie par récurrence ne peut pas s'écrire en compréhension : chaque terme a besoin du précédent, qui n'existe pas encore.

Lire un programme sans l'exécuter

On dresse un tableau de suivi , une colonne par variable, une ligne par tour.

Exemple :

s = 0
for k in range(1, 5):
    s = s + k * k
print(s)
Tour
\(k\)
\(k^2\)
\(s\) après
\(1\)
\(1\)
\(1\)
\(1\)
\(2\)
\(2\)
\(4\)
\(5\)
\(3\)
\(3\)
\(9\)
\(14\)
\(4\)
\(4\)
\(16\)
\(30\)
le programme affiche 30

Le piège de \(\text{range}(1, 5)\) : il s'arrête à \(4\), la borne haute étant exclue. \(\text{range}(n)\) va de \(0\) à \(n-1\).