Spé. NSI · Terminale · cours rédigé et vérifié par Claryo, conforme au Bulletin officiel
Un paradigme de programmation est une manière de concevoir et d'organiser un programme. Trois grands paradigmes sont au programme.
Le paradigme impératif décrit le calcul comme une suite d'instructions qui modifient un état (affectations, boucles, conditionnelles). On dit comment faire, étape par étape. C'est le style le plus courant en Python débutant.
Le paradigme fonctionnel repose sur la composition de fonctions et évite les effets de bord. Une fonction y est idéalement « pure » : pour les mêmes arguments, elle renvoie toujours le même résultat, sans modifier d'état extérieur. Cette transparence référentielle facilite le raisonnement, les tests et le parallélisme. En Python, on retrouve ce style avec les compréhensions de liste, map, filter et les fonctions lambda.
Le paradigme objet (POO) modélise le programme par des objets regroupant des données (attributs) et des comportements (méthodes). On définit une classe (le modèle) dont on crée des instances (les objets concrets). En Python, le constructeur est la méthode __init__, et self désigne l'objet courant. La POO favorise l'encapsulation (regrouper données et traitements, cacher les détails) et l'héritage (réutiliser et spécialiser une classe).
Un même problème peut souvent être résolu dans plusieurs paradigmes : doubler les éléments d'une liste se fait par une boucle (impératif) ou par une compréhension (fonctionnel). Python est dit multiparadigme.
· Impératif (somme des carrés) : s = 0 puis for i in range(1, n+1): s += i*i.
· Fonctionnel : sum(i*i for i in range(1, n+1)).
· POO : class C: avec def __init__(self, ...): puis self.attribut = ... ; création obj = C(...), appel obj.methode().
Schéma : une classe (boîte « modèle ») et plusieurs instances (boîtes « objet ») partageant les mêmes méthodes mais ayant chacune ses propres attributs.
Pour une question de comparaison : nommer le paradigme, donner son idée (état/instructions, fonctions pures, objets), puis montrer un code court. Pour la POO : repérer le constructeur __init__, manipuler self.attribut, écrire des méthodes qui lisent ou modifient l'état de l'objet, et fournir un scénario d'utilisation.
· self est le premier paramètre de chaque méthode : ne pas l'oublier dans la définition (mais ne pas le passer à l'appel obj.methode()).
· Un attribut s'écrit self.x = ..., pas x = ... (qui serait une variable locale).
· « Fonctionnel » ne veut pas dire « avec des fonctions » : il signifie sans effet de bord (pureté).
· Une compréhension de liste crée une nouvelle liste ; elle ne modifie pas la liste de départ.
Savoir distinguer impératif, fonctionnel et objet par leur idée directrice, reconnaître les effets de bord, et surtout maîtriser la POO en Python : définir une classe avec __init__, des attributs via self, des méthodes, créer des instances et dérouler un scénario. C'est un grand classique de l'épreuve pratique.