☀️ Stage Pré-rentrée · dès le 24 aoûtRéserver ma place →
Majorant
📘 Fiche de cours · 1re année📐 MPSI💻 Informatique Informatique communeNiveau · Terminale → Sup

Lire, tester et corriger un programme

Dérouler un programme à la main, reconnaître les patrons max / min / comptage / recherche, et tester un code sur ses cas limites — avec le piège du maximum initialisé à 0 et deux exercices corrigés.

Fiche rédigée par les mentors Majorant — alumni Polytechnique, CentraleSupélec et Mines Paris.

1 définitionsMis à jour le 2026-08-02

Vue d'ensemble

En prépa, on n'écrit pas seulement du code : on doit surtout savoir lire un programme sur papier, prévoir sa sortie, reconnaître les patrons classiques (maximum, minimum, comptage, recherche) et corriger un code qui ne marche pas. Cette fiche rassemble ces réflexes, indispensables en DS et aux concours.

Objectif passerelle Terminale → Sup — Dérouler un programme à la main, connaître les patrons max/min/comptage/recherche, et savoir tester un programme sur des cas limites.

Prérequis

  • Boucles, conditions, fonctions
  • Listes et parcours
🎯 Accompagnement Majorant

Tu sais coder mais tu bloques dès qu'il faut lire le code d'un autre ? Prévoir la sortie d'un programme est une compétence à part entière, très évaluée. Nos mentors alumni X · Centrale · Mines t'entraînent à dérouler n'importe quel programme sans machine.

Trouver un mentor →

1. Dérouler un programme à la main

Pour prévoir la sortie, on suit le code ligne par ligne en notant la valeur de chaque variable dans une table de trace.

t = [3, 7, 2]
s = 0
for x in t:
    s = s + x
print(s)
Table de trace
Tourxs avants après
1303
27310
321012

Le programme affiche 12.

2. Les patrons classiques

📐 Méthode — le patron du maximum.
  1. Initialiser avec le premier élément (jamais 0 !).
  2. Parcourir la liste ; si un élément est plus grand, le retenir.
  3. Renvoyer le maximum trouvé.
def maximum(t):
    m = t[0]              # on part du premier élément
    for x in t:
        if x > m:
            m = x         # on garde le plus grand vu
    return m

maximum([3, 7, 2, 9, 4])   # 9
🔍 Décryptage
m = t[0]Initialisation correcte. On part du premier élément, pas de 0 : sinon un tableau de nombres négatifs donnerait un faux maximum (0).
if x > m: m = xComparaison. À chaque élément, on met à jour m s'il est dépassé. À la fin, m est le plus grand.
💡 Comptage. Pour compter les éléments qui vérifient une condition, on part de 0 et on incrémente à chaque élément valide. Exemple, compter les nombres pairs d'une liste t :
c = 0
for x in t:
    if x % 2 == 0:
        c = c + 1
# c contient le nombre de pairs
📝 Minimum et recherche. Le minimum est le même patron avec < au lieu de >. La recherche d'une valeur renvoie l'indice (ou -1 si absente), comme la recherche séquentielle.

3. Tester et corriger

Un programme « qui a l'air juste » doit être testé sur plusieurs cas, dont les cas limites (liste à un élément, valeurs négatives, etc.). L'instruction assert vérifie qu'une condition est vraie.

assert maximum([3, 7, 2, 9, 4]) == 9
assert maximum([-5, -2, -8]) == -2   # cas des négatifs
assert maximum([42]) == 42           # cas limite : un seul élément
⚠ Initialiser le maximum à 0. Si on écrit m = 0 au lieu de m = t[0], alors maximum([-5, -2, -8]) renvoie 0 à tort : 0 n'est pas dans la liste. Toujours partir d'un élément réel.

4. Exercices d'application

À faire de tête avant d'ouvrir le corrigé.

Exo 1Prévoir la sortieIntermédiaire
t = [4, 1, 6, 3]
c = 0
for x in t:
    if x > 3:
        c = c + 1
print(c)
Voir la correction détaillée
On compte les éléments strictement supérieurs à 3.
4 > 3 (oui, c=1), 1 > 3 (non), 6 > 3 (oui, c=2), 3 > 3 (non).
Affichage : 2.
Exo 2Corriger le minimumDifficile

Ce code du minimum est buggé. Trouve l'erreur et corrige-la.

def minimum(t):
    m = 0
    for x in t:
        if x < m:
            m = x
    return m
Voir la correction détaillée
Bug : m est initialisé à 0. Sur [3, 7, 2] (tous > 0), aucun x < 0, donc la fonction renvoie 0 — qui n'est même pas dans la liste.
Correction : initialiser avec le premier élément, m = t[0].
def minimum(t):
    m = t[0]
    for x in t:
        if x < m:
            m = x
    return m
Désormais minimum([3, 7, 2]) renvoie 2, et le cas des négatifs marche aussi.

Récap final — Ce qu'il faut absolument retenir

Tu dois pouvoir répondre « oui » sans hésiter à chaque point.

  • Sais-tu dérouler un programme à la main avec une table de trace ?
  • Sais-tu écrire le patron du maximum (et du minimum) en initialisant avec t[0] ?
  • Sais-tu pourquoi initialiser le max/min à 0 est un bug (valeurs négatives) ?
  • Sais-tu écrire un comptage (partir de 0, incrémenter sous condition) ?
  • Sais-tu tester un programme sur des cas limites (un seul élément, négatifs) avec assert ?

Débloque la fiche complète

Théorèmes, démonstrations à savoir refaire, méthodes-types et pièges de concours : crée ton compte gratuit pour tout lire. Une seule fois pour toutes les fiches et ressources Majorant.

Gratuit · vos données restent confidentielles.

Valide tes acquis

Quiz — Lire et tester

8 questions · une à la fois · seuil de maîtrise 80 %.

Informatique commune · Terminale → SupQuiz — Lire et tester un programmeQuestion 1 / 8
FacileChoix unique1 pt

Pour trouver le maximum d'une liste, par quelle valeur faut-il initialiser la variable m ?

Sélectionne une réponse pour valider.

Fiches associées

📐 MPSI·Informatique

Recherche par dichotomie

La recherche dichotomique dans un tableau trié, expliquée ligne par ligne : code Python commenté, exécution pas à pas, preuve de terminaison et de correction (variant \(d-g\), invariant de boucle), version récursive et complexité \(O(\log n)\).

📐 MPSI·Informatique

Variables, types et affectations

Les briques de base de Python pour bien démarrer la prépa : affectation, types int/float/bool/str, conversions, opérateurs (/ // %), f-strings — avec les pièges classiques et deux exercices corrigés.

📐 MPSI·Informatique

Conditions et booléens

Faire choisir un programme : booléens, comparaisons, if / elif / else, rôle de l'indentation, et combinaison de conditions avec and / or / not — avec pièges et exercices corrigés.

📐 MPSI·Informatique

Boucles for et while

Répéter une action : boucle for avec range, boucle while qui termine, et le motif de l'accumulateur (somme, compteur) — avec table de trace, pièges et exercices corrigés.

📐 MPSI·Informatique

Fonctions : paramètres et valeurs de retour

Définir et appeler une fonction, comprendre paramètres et valeur de retour, et surtout ne jamais confondre return (renvoie) et print (affiche) — avec pièges et exercices corrigés.

📐 MPSI·Informatique

Listes et chaînes de caractères

Créer, indexer, parcourir et découper des listes et des chaînes ; comprendre qu'une liste est modifiable et une chaîne non — avec les pièges d'indices et deux exercices corrigés.

Tu veux aller plus loin sur ce chapitre ?

Nos mentors alumni de Polytechnique, CentraleSupélec et Mines Paris t'accompagnent en cours particuliers — démonstrations détaillées, exos type concours, oraux blancs.

Trouver un mentor →