Projet 1 : Logiciel d’apprentissage des tables de multiplications⚓︎
1. Représentation des données⚓︎
La table de multiplication choisie par l'utilisateur est représentée par un entier. Les questions et réponses sont générées dynamiquement en fonction de la table choisie.
2. Fonctions⚓︎
Fonction | Description | Paramètres | Retour |
---|---|---|---|
choisir_table() |
Demande à l'utilisateur quelle table de multiplication il veut réviser. La fonction affiche un message demandant à l'utilisateur de choisir une table de multiplication. Elle lit ensuite l'entrée de l'utilisateur, la convertit en entier et la retourne. | Aucun | Un entier représentant la table de multiplication choisie |
poser_question(table) |
Pose une question de multiplication correspondant à la table choisie. La fonction génère aléatoirement un nombre entre 1 et 10, crée une question de multiplication en utilisant ce nombre et la table choisie, puis retourne la question et la réponse correcte. | table (entier) | Un tuple (question, réponse) |
verifier_reponse(reponse_utilisateur, reponse_correcte) |
Vérifie si la réponse de l'utilisateur est correcte. La fonction compare la réponse de l'utilisateur avec la réponse correcte et retourne True si elles sont égales, False sinon. | reponse_utilisateur (entier), reponse_correcte (entier) | True si la réponse est correcte, False sinon |
afficher_resultats(bonnes_reponses) |
Affiche le nombre de bonnes réponses et félicite l'utilisateur s'il a fait un sans-faute. La fonction demande à l'utilisateur de choisir une table de multiplication, puis entre dans une boucle où elle pose 10 questions, vérifie les réponses, compte les bonnes réponses et affiche les résultats. Si l'utilisateur n'a pas fait un sans-faute, elle lui demande s'il veut réessayer. | bonnes_reponses (entier) | Aucun |
apprentissage_multiplication() |
Gère la boucle principale du programme d'apprentissage des tables de multiplication. (voir algorithme général) | Aucun | Aucun |
3. Découpage du travail conseillé⚓︎
- Élève 1 : Implémenter les fonctions choisir_table et poser_question.
- Élève 2 : Implémenter les fonctions verifier_reponse et afficher_resultats.
- Élève 3 : Implémenter les fonctions apprentissage_multiplication.
4. Algorithme Général⚓︎
Initialisation du programme⚓︎
- Initialiser une variable table en appelant la fonction choisir_table() pour obtenir la table de multiplication choisie par l'utilisateur.
- Initialiser une variable poursuivre_apprentissage à Vrai
Débuter la boucle principale et continuer tant que l'apprentissage n'est pas fini (l'apprentissage est fini quand l'utilisateur a fait une sans faute ou décide d'arrêter)⚓︎
- Un compteur initialisé et utilisé pour compter le nombre de bonnes réponses.
- Une boucle interne est utilisée pour poser 10 questions de multiplication
- Appeler la fonction poser_question(table) générer la question et la réponse correcte.
- Afficher la question et demander la réponse à l'utilisateur
- Si la réponse est correcte augmenter le compteur de bonnes réponses
- Sinon afficher que la réponse est incorrecte
- Afficher le résultat en cours avec la fonction afficher_resultats
- Si l'utilisateur n'a pas fait un sans faute
- Lui demander s'il veut réessayer et finir l'apprentissage s'il ne veut pas en changeant la variable poursuivre_apprentissage à Faux
- Sinon finir l'apprentissage en changeant la variable poursuivre_apprentissage à Faux
5. Pistes d'Amélioration lorsque votre projet fonctionne⚓︎
-
Interface Graphique:
- Utiliser une bibliothèque comme tkinter pour créer une interface graphique.
- Permettre aux utilisateurs de cliquer sur des boutons pour choisir la table de multiplication et entrer leurs réponses.
-
Mode Multijoueur:
- Ajouter un mode multijoueur où deux utilisateurs peuvent s'affronter en répondant aux questions de multiplication.
- Afficher les scores des deux joueurs à la fin.
-
Niveaux de Difficulté:
- Ajouter différents niveaux de difficulté en ajustant la plage des nombres utilisés dans les questions.
- Permettre aux utilisateurs de choisir le niveau de difficulté au début du jeu.
-
Suivi des Progrès:
- Ajouter une fonctionnalité pour suivre les progrès de l'utilisateur au fil du temps.
- Afficher des statistiques comme le nombre de sans-fautes, le temps moyen par question, etc.
-
Amélioration de l'Interface Utilisateur:
- Ajouter des messages plus clairs et des instructions pour les utilisateurs.
- Permettre aux utilisateurs de choisir leurs préférences (comme le nombre de questions par session).
Barème⚓︎
-
Fonctionnalités (8 points)
- Palier 1 (0~3/8) : Le programme correspond à peu près aux spécifications demandées.
- Palier 2 (3~5/8) : Le programme correspond aux spécifications demandées.
- Palier 3 (5~8/8) : Le programme ne présente aucun bug et correspond aux spécifications demandées.
- Palier 4 (Bonus) : Des fonctionnalités supplémentaires ont été ajoutées (des suggestions sont données sur la fiche de chaque projet).
-
Algorithmes et code (6 points)
- Utilisation pertinente de structures conditionnelles, de boucles, de variables, de fonctions, etc.
- Utilisation correcte des différents types de valeurs et des fonctions de conversion quand nécessaire.
- Éviter la répétition de code en faisant des boucles ou en découpant le code en fonctions pertinentes.
- Il est interdit d'utiliser des instructions non vues en classe sauf exception (à demander au professeur).
-
Qualité du code (3 points)
- Respect des règles de style vues en cours.
- Utilisation de noms pertinents pour les variables et les fonctions.
- Documentation pertinente des fonctions grâce à des docstrings.
- Utilisation pertinente des commentaires.
- Tests des fonctions implémentées.
-
Interface utilisateur (3 points)
- Bonne organisation visuelle de l'interface.
- Cohérence de l'interface.
- Communication d'informations à l'utilisateur efficace et compréhensible.
- Adaptation à l'utilisateur et gestion des erreurs de saisie.