Achevia/ Terminale/ NSI Terminale/ Programmation (récursivité, programmation objet)

CoursNumérique et sciences informatiques · tle

Programmation (récursivité, programmation objet)

Comment écrire des programmes plus puissants et mieux organisés ? La spécialité NSI de terminale approfondit la programmation avec deux notions clés : la récursivité et la programmation orientée objet.

Le cours

1. La récursivité

Une fonction récursive est une fonction qui s'appelle elle-même pour résoudre un problème, en le ramenant à un cas plus simple. Cela permet de résoudre élégamment des problèmes qui se décomposent naturellement en sous-problèmes semblables.

Une fonction récursive s'appelle elle-même.

Exemple

Calculer une factorielle peut se faire de façon récursive (en s'appuyant sur le cas précédent).

2. Le principe de la récursivité

Toute récursivité repose sur deux éléments : un cas de base (le cas le plus simple, qui arrête les appels) et un appel récursif (qui ramène le problème à un cas plus simple). Sans cas de base, la fonction s'appellerait indéfiniment : le cas de base est essentiel.

Une récursivité a un cas de base et un appel récursif.

Exemple

Le cas de base arrête la récursivité ; sans lui, les appels seraient infinis.

3. La programmation objet

La programmation orientée objet organise le code autour d'objets, qui regroupent des données (attributs) et des actions (méthodes). On définit des classes (des modèles) à partir desquelles on crée des objets. Cela structure le programme et facilite sa réutilisation.

La programmation objet regroupe données et actions dans des objets.

Exemple

Une classe « Voiture » définit des attributs (couleur, vitesse) et des méthodes (démarrer).

4. Classes et objets

Une classe est un modèle qui décrit un type d'objet ; un objet est une réalisation concrète de cette classe. Par exemple, à partir d'une classe « Voiture », on peut créer plusieurs objets voitures, chacun avec ses propres caractéristiques. Cela rend le code clair et modulaire.

La classe est le modèle, l'objet en est un exemplaire.

Exemple

À partir de la classe « Voiture », on crée des objets : une voiture rouge, une voiture bleue…

Pour approfondir ce chapitrefacultatif

Définitions clés

Récursivité
Une fonction qui s'appelle elle-même pour résoudre un problème.
Cas de base
La condition d'arrêt d'une fonction récursive, indispensable pour éviter une boucle infinie.
Programmation orientée objet (POO)
Une façon de programmer en modélisant des « objets » regroupant données et fonctions.
Classe / Objet
La classe est un modèle ; l'objet est une réalisation concrète de ce modèle.

Explications détaillées

La récursivité

Une fonction récursive s'appelle elle-même sur un problème plus petit, jusqu'à atteindre un cas de base qui arrête la répétition. Sans ce cas de base, la fonction s'appellerait indéfiniment.

La récursivité offre des solutions élégantes à certains problèmes (parcours d'arbres, calculs mathématiques) qui seraient plus lourds à écrire autrement.

La programmation orientée objet

La POO organise le programme autour d'objets, qui regroupent des données (attributs) et des fonctions (méthodes). Une classe sert de modèle, à partir duquel on crée des objets.

Cette approche permet de structurer de grands programmes, de réutiliser du code et de modéliser des entités du monde réel (un utilisateur, un compte, un véhicule). Elle est très répandue dans le développement logiciel.

Méthode pas à pas

Écrire une fonction récursive
  1. Identifier le cas de base (quand s'arrêter).
  2. Exprimer le problème en fonction d'un cas plus petit.
  3. Écrire l'appel récursif vers ce cas plus petit.
  4. Vérifier que le cas de base est toujours atteint.

Exemple corrigé pas à pas

La factorielle en récursif

Écrire une fonction récursive qui calcule la factorielle d'un entier (n! = n × (n−1) × … × 1).

  1. Cas de base : la factorielle de 0 vaut 1.
  2. Sinon : factorielle(n) = n × factorielle(n − 1).
  3. En code : def factorielle(n): if n == 0: return 1 ; return n * factorielle(n - 1)
  4. Ainsi factorielle(4) = 4 × 3 × 2 × 1 = 24.

Erreurs fréquentes à éviter

  • Oublier le cas de base d'une fonction récursive.Sans cas de base, la fonction s'appelle indéfiniment : le programme ne s'arrête jamais.
  • Confondre classe et objet.La classe est le modèle ; l'objet est une réalisation concrète créée à partir de ce modèle.
  • Croire que la récursivité est toujours préférable.Elle est élégante pour certains problèmes, mais une boucle est parfois plus simple ou plus efficace.

Pour aller plus loin

Plusieurs façons de programmer

Récursivité et programmation orientée objet illustrent la diversité des « paradigmes » de programmation. Un bon développeur sait choisir l'approche adaptée à chaque problème. Découvrir ces différentes façons de penser un programme enrichit la compréhension de l'informatique et développe la souplesse intellectuelle.

Ce qu'il faut absolument retenir

Ce qu'il faut absolument retenir

Vérifie ta compréhension

Exercice 1Qu'est-ce qu'une fonction récursive ?

Exercice 2Que doit toujours comporter une récursivité ?

Exercice 3Qu'est-ce qu'une classe en programmation objet ?

Exercice 4En programmation objet, un objet regroupe des données (attributs) et des actions (méthodes).

Exercice 5Pourquoi le cas de base est-il indispensable dans une fonction récursive ?

Source officielle   Ministère de l'Éducation nationale — Programme officiel · FR-2019

Publicité

L'essentiel en images

Récapitulatif illustré du cours