Numérique et sciences informatiques (NSI) · Terminale

Modularité, paradigmes et mise au point des programmes

Un programme réel compte des milliers de lignes, écrites par plusieurs personnes. Pour s’y retrouver, on le découpe en modules aux interfaces bien documentées, on choisit un style de programmation adapté, et on le teste systématiquement. Ce chapitre réunit ces bonnes pratiques, et montre qu’il existe des questions qu’aucun programme ne peut résoudre.

Une question sur ce cours ?

ULU, le tuteur d’ULUMINE, t’aide à partir de ce cours.

Séance guidée avec ULU (≈ 10 min)Diagnostic, explication, exercices adaptés et bilan.

Objectifs

  • Utiliser et créer des modules, lire la documentation d’une API
  • Distinguer les paradigmes impératif, fonctionnel et objet
  • Identifier les principales erreurs à l’exécution et écrire des tests avec assert
  • Comprendre qu’un programme est une donnée et que le problème de l’arrêt est indécidable

1. Modules et API

Module : Fichier Python (.py) regroupant des fonctions, des classes ou des constantes réutilisables. Une bibliothèque est un ensemble de modules.

API (interface de programmation) : Ensemble documenté des fonctions et classes qu’un module met à disposition, avec leurs paramètres et leur rôle. On peut s’en servir sans connaître leur code.

2. Paradigmes de programmation

Fonction pure : Fonction dont le résultat ne dépend que de ses paramètres et qui ne produit aucun effet de bord (pas de modification de variable globale, de paramètre modifiable, d’affichage…).

3. Erreurs, tests et mise au point

Les erreurs les plus sournoises ne provoquent aucun message : le programme s’exécute mais donne un résultat faux (erreur de logique, comme un range qui oublie un indice). On les détecte par des tests.

  • assert condition ne fait rien si la condition est vraie et lève une AssertionError sinon.
  • Bien choisir ses tests : cas courants, cas limites (liste vide, 0, bornes), cas particuliers.
  • Pour localiser un bug : lire le message d’erreur (type, numéro de ligne), afficher des valeurs intermédiaires, réduire l’exemple qui échoue.

4. Un programme est une donnée : calculabilité

Un programme est un texte : il peut être la donnée d’un autre programme. Un interpréteur exécute des programmes, un compilateur les traduit, un antivirus les analyse.

Problème de l’arrêt : Existe-t-il un programme arret(p, x) qui, pour tout programme p et toute entrée x, renvoie True si p s’arrête sur x et False sinon ? Alan Turing a démontré en 1936 qu’un tel programme ne peut pas exister : le problème de l’arrêt est indécidable.

À retenir

  • Un module regroupe du code réutilisable ; son API documente ce qu’il propose.
  • Impératif : on modifie un état. Fonctionnel : on compose des fonctions pures. Objet : on fait interagir des objets.
  • Lire le type d’erreur et la ligne indiquée est la première étape du débogage.
  • assert permet d’écrire des tests ; tester les cas limites est indispensable.
  • Le problème de l’arrêt est indécidable : aucun programme ne peut le résoudre pour tous les cas.

Et maintenant, à toi !

Vérifie que tu as compris avec les exercices, puis révise avec la fiche.

À découvrir aussi