Lire trois boucles
Exercice supplémentaire · niveau 1 (application) · mathématiques approfondies (ECG 1re année), chapitre 11 — Informatique et algorithmique · Premiers pas en Python
Énoncé
Donner, en justifiant, la valeur affichée par chacun des trois programmes suivants.
s = 0
for k in range(1, 5):
s = s + k
print(s)
n = 1
while n < 20:
n = 2 * n
print(n)
T = [3, 8, 1, 9]
m = T[0]
for x in T:
if x > m:
m = x
print(m)Corrigé
Ce qu'on montre. Qu'on lit un programme en suivant les variables tour par tour, et non en devinant son intention.
Premier programme. range(1, 5) parcourt — la borne haute est exclue. Les valeurs successives de s sont L'affichage est , c'est-à-dire .
Deuxième programme. n part de et double à chaque tour tant qu'il est strictement inférieur à : Après le passage à , la condition est encore vraie, donc un tour de plus donne ; la condition est alors fausse et la boucle s'arrête. L'affichage est , et non .
Troisième programme. m est initialisée à T[0] = 3, puis remplacée chaque fois qu'un élément plus grand apparaît : L'affichage est : le programme calcule le maximum de la liste.
Point délicat. Le deuxième est celui où l'on se trompe : la condition d'une boucle while est testée avant le tour, jamais après. La valeur finale de n est donc la première puissance de qui atteint ou dépasse — la sortie de boucle se fait toujours avec la condition fausse.
Les autres exercices de ce chapitre Le cours du chapitre
Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.