La spécialité NSI en Terminale

Présentation

Préparer le baccalauréat 2024

Fonctions

Listes, tuples et dictionnaires en Python

Pré-requis : Traitement de données en tables

Bases de données

Le modèle relationnel

Le langage SQL

Programmation Orientée Objet (POO)

[Poster Python POO]

La programmation orientée objet (POO) est un paradigme de programmation, c'est-à-dire un ensemble de concepts et de modèles utilisés pour programmer avec des objets. De nombreux langages de programmation sont orientés objets, par exemple : Ada, C++, C#, Eiffel, Java, JavaScript, Objective C, PHP, Python, Ruby, Smalltalk, VB.NET.

Une classe est une structure de données qui contient des données (attributs) et des comportements (méthodes), qui sont les actions possibles sur cet objet. Les données sont toujours des noms, tandis que les comportements sont toujours des verbes. Chaque classe est une brique logicielle. On peut créer un (ou plusieurs) objet qui est une instance unique d'une classe avec ses valeurs propres.

Par exemple la classe "Cake" décrit un gâteau, avec comme donnée son parfum (l'attribut "flavour") et comme méthode "cut_in_parts" (le couper en parts). On a 2 instances de cette classe : 2 objets, un gâteau dont le parfum est "banane" et un gâteau dont le parfum est "chocolat".
Objets Cake

Des exemples d'application développées en programmation orientée objet

Projet A

Le projet réalisé par les élèves, sous la conduite du professeur, constitue un apprentissage fondamental tant pour l’appropriation des concepts informatiques que pour l’acquisition de compétences. Il a essentiellement pour but d’imaginer des solutions répondant à un problème.

Le thème du projet est choisi par les élèves. Il peut s’agir d’un approfondissement théorique des concepts étudiés en commun, d’une application à d’autres disciplines telle qu’une simulation d’expérience, d’exploitation de modules liés à l’intelligence artificielle et en particulier à l’apprentissage automatique, d’un travail sur des données socioéconomiques, du développement d’un logiciel de lexicographie, d’un projet autour d’un objet connecté ou d’un robot, de la conception d’une bibliothèque implémentant une structure de données complexe, d’un problème de traitement d’image ou de son, d’une application mobile, par exemple de réalité virtuelle ou augmentée, du développement d’un site Web associé à l’utilisation d’une base de données, de la réalisation d’un interpréteur d’un mini-langage, de la recherche d’itinéraire sur une carte (algorithme A*), d’un programme de jeu de stratégie, etc.

  1. Former des équipes de 2, 3 ou 4 élèves
  2. Choisir un thème
  3. Définir l'objectif avec la professeure (qui veille à ce que les projets soient aboutissable)
  4. Conduire le projet :
    • Répartir les tâches, avec éléments validables
    • Utiliser des outils de développement en équipe
    • Contrôler l'avancement
    • Faire des points d’étape pour faire un bilan avec la professeure

Projet Super Barrio Bross

Jeu mono-joueur développé en Python objet et avec la bibliothèque graphique PyGame. Il faut déplacer le personnage sur une carte et éviter les obstacles.

Organisation : avec Notion

Projet Où est Éteris ?

Un mini jeu de type "Où est Charlie ?", mais la spécificité c'est que le décor est généré aléatoirement avec une IA intégrée sur le site. Développé en Python objet avec la librairie graphique PyGame.

Organisation : avec Notion

Projet Géo ?

Ce projet a pour but de divertir en créant un programme en Python objet qui permet de réaliser une carte de l’Europe. Ensuite, avec cette carte un drapeau va apparaître à l’écran et l’utilisateur aura un temps défini pour trouver l’endroit où se trouve le pays sur la carte. Il y aura également un compteur de points qui augmente au fur et à mesure que les résultats sont corrects. Avec base de données MySQL.

Organisation : avec Notion ?

Projet Ratio

Créer un jeu qui va mettre en scène des personnages célèbres de l’internet, plus spécifiquement de Twitter/X. Le jeu est du 1v1 tour par tour en simultané entre 1 boss avec un level différent au fur et a mesure. Le jeu a pour gameplay de recopier une des phrases sorties aléatoirement de la base de donnée le plus rapidement possible, et suivant la longueur des phrases et le temps utilisé pour les faires, le jeu va rapporter un nombre de points en conséquence et le but est de gagner le plus de round. Les phrases seront utilisées comme des attaques dans des jeux tels que pokémon par exemple.En Python objet avec base de données MySQL.

Organisation : avec Notion

Projet Astro

Une interface graphique en Python objet pour modéliser des planètes, avec la librairie graphique matplotlib. Chaque planète posséderait des attributs et serait représentée en mouvement sur l'interface. Avec base de données MySQL.

Organisation : avec Google Drive

Récursivité

QUESTION : Que va afficher ce programme ?

2 types de personnes

(Code source : 2_types_recursif.py")

RÉPONSE :

2 types de personnes

Toi aussi comprends la récursivité avec Kevin : execute Kevin.py !!!

Lors de l'écriture d'une fonction récursive, 3 règles doivent toujours être vérifiées :

  1. La fonction s'appelle elle-même.
  2. La fonction comporte un "cas de base" qui correspond à une condition d'arrêt.
  3. L'algorithme conduit vers le cas de base : il n'y a pas une infinité d'appels récursifs.

Listes, piles, files

Voici les points du programme traités dans cette séquence :

Contenus Capacités attendues Commentaires
Structures de données, interface et implémentation.
  • Spécifier une structure de données par son interface.
  • Distinguer interface et implémentation.
  • Écrire plusieurs implémentations d’une même structure de données.
L’abstraction des structures de données est introduite après plusieurs implémentations d’une structure simple comme la file (avec un tableau ou avec deux piles)
Listes, piles, files : structures linéaires. Dictionnaires, index et clé.
  • Distinguer des structures par le jeu des méthodes qui les caractérisent.
  • Choisir une structure de données adaptée à la situation à modéliser.
  • Distinguer la recherche d’une valeur dans une liste et dans un dictionnaire.
On distingue les modes FIFO (first in first out) et LIFO (last in first out) des piles et des files.

Listes chaînées

Énoncé

L'exercice consiste à implanter une liste chaînée à partir de son interface.

Voici l'interface de la classe Chainon : interface_chainon.py et l'interface de la classe Liste : interface_liste.py.

Aide

Voici le diaporama : diapo_ListeChainee.pdf

Voici des tests unitaires pour tester le bon fonctionnement la classe Chainon : test_chainon.py et de la classe Liste : test_liste.py.

Pour vous aider, lisez les explications (Attention les explications ne sont pas en POO.)

( Une liste chaînée, c'est le même principe qu'un train : Exercice : classe Train qui relie des objets de types Wagon )

Correction

Voici la solution implantée : chainon.py et liste.py.

Piles et files

Explications et exercices

Il existe des outils pour vérifier automatiquement que les codes HTML et CSS d'une page web sont bien écrits : Valid XHTML 1.0 Strict CSS Valide !