mots clés : BDD, POO, SQL, arbres binaires de recherche
🔎 Voir les exercices similaires ↓
Polynésie – Bac NSI 2026 – Jour 1 Énoncé de l'exercice 3
Cet exercice porte sur le paradigme « Programmation orientée objet », les bases de données et les arbres binaires de recherche.
Introduction : au cœur du développement technologique, les interfaces conversationnelles, ou chatbots, jouent un rôle de plus en plus important dans l’interaction avec les utilisateurs. La start-up OpenChat souhaite développer un chatbot qui utilise une base de données pour stocker des questions et les réponses associées.
Partie 1 : Structures de données
On souhaite créer une classe Chatbot ayant un attribut base_donnees initialisé comme un dictionnaire vide.
On utilisera ensuite l’attribut base_donnees qui permettra de stocker les questions en tant que clés du dictionnaire et les réponses à ces questions en tant que valeurs associées à ces clés.
On définit également deux méthodes permettant de faire fonctionner le chatbot :
une méthode ajouter_question_reponse permet l’ajout dans le dictionnaire base_donnees de la valeur reponse associée à la clé question ;
une méthode repondre renvoie la réponse associée à une question.
Recopier et compléter les lignes 3 et 6 dans le constructeur de la classe Chatbot et dans la méthode ajouter_question_reponse.
1 class Chatbot:
2 def __init__(self):
3 self.base_donnees = ... # à compléter
4
5 def ajouter_question_reponse(self, question, reponse):
6 self.base_donnees[question] = ... # à compléter
7
8 def repondre(self, question):
9 return self.base_donnees[question]
Nous allons maintenant illustrer quelques interactions possibles entre un utilisateur et le chatbot, en se basant sur la classe précédemment définie.
Écrire les lignes de code permettant d’instancier un objet Bot1 de la classe Chatbot et d’ajouter à son dictionnaire l’interaction :
Question : « Bonjour, comment vas-tu ? » – Réponse : « Bonjour, je vais bien, merci. »
Écrire les lignes de code permettant d’obtenir la réponse à la question « Bonjour, comment vas-tu ? ».
Partie 2 : Interaction avec la base de données
Cette partie porte sur les bases de données. On pourra utiliser les mots clés SQL suivants : AND, FROM, INSERT, INTO, JOIN, OR, ON, SELECT, SET, UPDATE, VALUES, WHERE.
On considère une table questions_reponses avec les colonnes id, question, reponse et mot_cle.
Associer à chaque mot clé sa définition :
mots clés : SELECT – INSERT – UPDATE ;
définitions : ajouter une donnée – extraire des données – mettre à jour une table.
Définir ce qu’est une clé primaire.
Indiquer quel attribut (éventuellement plusieurs) serait le plus adapté pour être une clé primaire dans la table questions_reponses et justifier votre choix.
Écrire une requête permettant de récupérer toutes les questions comportant comme mot-clé « python ».
Écrire une requête pour insérer la nouvelle question-réponse « Date de la bataille de Marignan ? », « 1515 » associée au mot-clé « Histoire ». On prendra comme identifiant id = 15.
Écrire la requête pour mettre à jour la réponse à la question d’id = 12 qui devient « Oui ».
Partie 3 : Représentation de la recherche avec les arbres
On considère cet exemple d’un arbre binaire de recherche (ABR) basé sur le mot-clé des questions :

Indiquer quel type de parcours donnerait, dans cet ordre : IA, bot, programmation, algo, chatbot, informatique, python.
Indiquer dans quel ordre apparaîtraient les mots-clés avec un parcours en profondeur infixe sur l’ABR illustré.
Indiquer dans quel ordre apparaîtraient les mots-clés pour un parcours en profondeur postfixe (ou suffixe).
Indiquer quel parcours permettrait d’obtenir les mots-clés dans l’ordre alphabétique.
Compléter la méthode de recherche dans l’ABR :
1 class Noeud:
2
3 def __init__(self, cle):
4 self.cle = cle
5 self.gauche = None
6 self.droit = None
7
8 def recherche(arbre, cle):
9 if arbre is None or arbre.cle == ...: # à compléter
10 return arbre
11 if cle < arbre.cle:
12 return recherche(arbre. ..., cle) # à compléter
13 else:
14 return recherche(arbre. ..., cle) # à compléter
Polynésie – Bac NSI 2026 – Jour 1 Correction de l'exercice 3
Partie 1 : Structures de données
1. Lignes 3 et 6
class Chatbot:
def __init__(self):
self.base_donnees = {}
def ajouter_question_reponse(self, question, reponse):
self.base_donnees[question] = reponse
def repondre(self, question):
return self.base_donnees[question]
2. Instancier Bot1 et ajouter l’interaction
Bot1 = Chatbot()
Bot1.ajouter_question_reponse("Bonjour, comment vas-tu ?", "Bonjour, je vais bien, merci.")
3. Obtenir la réponse
print(Bot1.repondre("Bonjour, comment vas-tu ?"))
Partie 2 : Interaction avec la base de données
4. Mots clés et définitions
| mot clé | définition |
|---|---|
| SELECT | extraire des données |
| INSERT | ajouter une donnée |
| UPDATE | mettre à jour une table |
5. Clé primaire
Une clé primaire est un attribut (ou un ensemble d’attributs) dont la valeur identifie de façon unique chaque ligne de la table : deux lignes ne peuvent pas avoir la même valeur.
6. Clé primaire de questions_reponses
L’attribut id : c’est un identifiant numérique, unique pour chaque question. Une question pourrait être reformulée ou avoir des doublons, et plusieurs questions partagent le même mot_cle ou la même réponse.
7. Questions ayant le mot-clé python
SELECT question
FROM questions_reponses
WHERE mot_cle = 'python';
8. Insérer la question sur Marignan
INSERT INTO questions_reponses (id, question, reponse, mot_cle)
VALUES (15, 'Date de la bataille de Marignan ?', '1515', 'Histoire');
9. Mettre à jour la réponse de la question 12
UPDATE questions_reponses
SET reponse = 'Oui'
WHERE id = 12;
Partie 3 : Représentation de la recherche avec les arbres
10. IA, bot, programmation, algo, chatbot, informatique, python
On visite les nœuds niveau par niveau : c’est un parcours en largeur.
11. Parcours infixe
algo, bot, chatbot, IA, informatique, programmation, python.
12. Parcours postfixe (suffixe)
algo, chatbot, bot, informatique, python, programmation, IA.
13. Ordre alphabétique
Le parcours infixe donne les mots-clés dans l’ordre alphabétique, puisque l’arbre est un ABR.
▶ Animation : les quatre parcours de l’ABR des mots-clés
Choisissez un parcours puis avancez nœud par nœud : le nœud visité est en bleu, ceux déjà visités en vert.
14. Méthode de recherche
def recherche(arbre, cle):
if arbre is None or arbre.cle == cle:
return arbre
if cle < arbre.cle:
return recherche(arbre.gauche, cle)
else:
return recherche(arbre.droit, cle)
Une erreur, un oubli ? Écrivez-moi : frederic.peuriere@lfcl.pt
🔎 Exercices sur des thèmes similaires
-
Polynésie 2025 – jour 2 – exercice 2
programmation, POO, BDD, SQL — Difficulté : 🔥🔥🔥🔥🔥 -
Asie 2024 – jour 1 – exercice 3
programmation, POO, BDD, SQL — Difficulté : 🔥🔥🔥🔥🔥 -
Asie 2025 – jour 2 – exercice 3
POO, BDD, SQL, arbres binaires — Difficulté : 🔥🔥🔥🔥🔥 -
Centres étrangers 2024 – jour 1 – exercice 3
programmation, POO, BDD, SQL — Difficulté : 🔥🔥🔥🔥🔥 -
Nouvelle Calédonie 2025 – jour 1 – exercice 2
BDD, SQL , POO — Difficulté : 🔥🔥🔥🔥🔥 -
Antilles-guyane 2026 – jour 2 – exercice 1
BDD, SQL, POO — Difficulté : 🔥🔥🔥🔥🔥