Adloun

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.