From 6b603bfbace4594418da51866c5489a0dbf5e14f Mon Sep 17 00:00:00 2001 From: Bertrand Benjamin Date: Wed, 9 Jun 2021 09:05:40 +0200 Subject: [PATCH] =?UTF-8?q?Feat:=20fichiers=20squelettes=20pour=20pile=20e?= =?UTF-8?q?t=20file=20et=20d=C3=A9but=20de=20la=20description?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- file.py | 176 +++++++++++++++++++++++++++++++++++++++++++++++++++ pile.py | 175 ++++++++++++++++++++++++++++++++++++++++++++++++++ pile_file.md | 39 ++++++++++++ 3 files changed, 390 insertions(+) create mode 100644 file.py create mode 100644 pile.py create mode 100644 pile_file.md diff --git a/file.py b/file.py new file mode 100644 index 0000000..8612e1c --- /dev/null +++ b/file.py @@ -0,0 +1,176 @@ +class Node: + """La classe ```Node``` sera un noeud (une case, un emplacement, ...) où l'on stockera notre donnée + + Les objets de cette classe ont deux attributs: + + value: qui correspond à la valeur stockée + nxt: la référence vers le prochain élément + + """ + + def __init__(self, value=None, nxt=None) -> None: + """Initialisation du "node" + + :param value: valeur à stocker dans ce "node" + :param nxt: Node du prochain élément + + :consignes: compléter l'initialisation de la classe. + + :example: + >>> n1 = Node(1) + >>> assert n1.value == 1 + >>> assert n1.nxt is None + >>> n2 = Node(5, n1) + >>> assert n1.value == 5 + >>> assert n1.nxt == n1 + >>> n3 = Node("a", n2) + >>> assert n1.value == "a" + >>> assert n1.nxt == n3 + """ + pass + + +class File: + """ + La classe ```File``` doit posséder un élément "courant" qui est l'élément sur le dessus de la file. + + Fonctionnement d'une pile + + ----------- + append ----> _ _ _ _ _ + ----------- + + ----------- + _ _ _ _ _ ----> pop + ----------- + + Elle doit aussi posséder un entier ```n``` qui compte le nombre d'éléments dans la file + + Cette classe aura donc 2 attributs: + - current avec l'élément courant + - n avec le nombre d'éléments dans la file + + :consignes: Compléter les méthodes suivantes. + """ + + def __init__(self) -> None: + """Initialisation de la File vide + + :example: + >>> file = File() + >>> assert file.n == 0 + >>> assert file.current is None + """ + # ----------------------- + + # ----------------------- + pass + + def append(self, value): + """Ajoute "value" dans la file + + Comme nous sommes dans une pile, l'élément doit être ajouté en dernière position. + + :example: + >>> file = File() + >>> file.append(1) + >>> assert file.n == 1 + >>> assert file.current == 1 + >>> file.append("a") + >>> assert file.n == 2 + >>> assert file.current == 1 + """ + # ----------------------- + + # ----------------------- + pass + + def get_current(self): + """Renvoie la prochaine valeur sans l'enlever de la file + Si la liste est vide, la fonction renvoie None. + + :example: + >>> file = File() + >>> file.get_current() + None + >>> file.append(3) + >>> file.get_current() + 3 + >>> file.get_current() + 3 + """ + # ----------------------- + + # ----------------------- + pass + + def is_empty(self): + """Vérifie si le file est vide + + :example: + >>> file = File() + >>> file.is_empty() + True + >>> file.append(1) + >>> file.is_empty() + False + + """ + # ----------------------- + + # ----------------------- + pass + + def pop(self): + """Renvoie le prochain élément de la file et l'enlève + + Comme c'est une file, le prochain élément est le premier élément arrivé. + + Si la liste est vide, la fonction renvoie None. + + :example: + >>> file = File() + >>> file.pop() + None + >>> file.append(2) + >>> file.pop() + 2 + >>> file.pop() + None + >>> pile.append(2) + >>> pile.append(5) + >>> pile.append("a") + >>> file.pop() + 2 + >>> file.pop() + 5 + >>> file.pop() + 'a' + >>> + + """ + # ----------------------- + + # ----------------------- + pass + + def empty(self): + """vide la file c'est à dire element tous les elements de cette dernière + + :example: + >>> file = File() + >>> file.append(3) + >>> file.append(5) + >>> file.append("a") + >>> file.get_current() + "a" + >>> assert file.n == 3 + >>> file.empty() + >>> file.get_current() + None + >>> assert file.n == 0 + """ + # ----------------------- + + # ----------------------- + pass diff --git a/pile.py b/pile.py new file mode 100644 index 0000000..15bac91 --- /dev/null +++ b/pile.py @@ -0,0 +1,175 @@ +class Node: + """La classe ```Node``` sera un noeud (une case, un emplacement, ...) où l'on stockera notre donnée + + Les objets de cette classe ont deux attributs: + + value: qui correspond à la valeur stockée + nxt: la référence vers le prochain élément + + """ + + def __init__(self, value=None, nxt=None) -> None: + """Initialisation du "node" + + :param value: valeur à stocker dans ce "node" + :param nxt: Node du prochain élément + + :consignes: compléter l'initialisation de la classe. + + :example: + >>> n1 = Node(1) + >>> assert n1.value == 1 + >>> assert n1.nxt is None + >>> n2 = Node(5, n1) + >>> assert n1.value == 5 + >>> assert n1.nxt == n1 + >>> n3 = Node("a", n2) + >>> assert n1.value == "a" + >>> assert n1.nxt == n3 + """ + pass + + +class Pile: + """ + La classe ```Pile``` doit posséder un élément "courant" qui est l'élément sur le dessus de la pile. + + Fonctionnement d'une pile + + ----------- + _ _ _ _ _ <---- append + ----------- + + ----------- + _ _ _ _ _ ----> pop + ----------- + + + Elle doit aussi posséder un entier ```n``` qui compte le nombre d'éléments dans la pile + + Cette classe aura donc 2 attributs: + - current avec l'élément courant + - n avec le nombre d'éléments dans la pile + + :consignes: Compléter les méthodes suivantes. + """ + + def __init__(self) -> None: + """Initialisation de la Pile vide + + :example: + >>> pile = Pile() + >>> assert pile.n == 0 + >>> assert pile.current is None + """ + # ----------------------- + + # ----------------------- + pass + + def append(self, value): + """Ajoute "value" dans la pile + + :example: + >>> pile = Pile() + >>> pile.append(1) + >>> assert pile.n == 1 + >>> assert pile.current == 1 + >>> pile.append("a") + >>> assert pile.n == 2 + >>> assert pile.current == "a" + """ + # ----------------------- + + # ----------------------- + pass + + def get_current(self): + """Renvoie la prochaine valeur sans l'enlever de la pile + Si la liste est vide, la fonction renvoie None. + + :example: + >>> pile = Pile() + >>> pile.get_current() + None + >>> pile.append(3) + >>> pile.get_current() + 3 + >>> pile.get_current() + 3 + """ + # ----------------------- + + # ----------------------- + pass + + def is_empty(self): + """Vérifie si le pile est vide + + :example: + >>> pile = Pile() + >>> pile.is_empty() + True + >>> pile.append(1) + >>> pile.is_empty() + False + + """ + # ----------------------- + + # ----------------------- + pass + + def pop(self): + """Renvoie le prochain élément de la pile et l'enlève. + + Comme c'est une pile, le prochain élément est le dernier élément arrivé. + + Si la liste est vide, la fonction renvoie None. + + :example: + >>> pile = Pile() + >>> pile.pop() + None + >>> pile.append(2) + >>> pile.pop() + 2 + >>> pile.pop() + None + >>> pile.append(2) + >>> pile.append(5) + >>> pile.append("a") + >>> pile.pop() + 'a' + >>> pile.pop() + 5 + >>> pile.pop() + 2 + >>> + + """ + # ----------------------- + + # ----------------------- + pass + + def empty(self): + """vide la pile c'est à dire element tous les elements de cette dernière + + :example: + >>> pile = Pile() + >>> pile.append(3) + >>> pile.append(5) + >>> pile.append("a") + >>> pile.get_current() + "a" + >>> assert pile.n == 3 + >>> pile.empty() + >>> pile.get_current() + None + >>> assert pile.n == 0 + """ + # ----------------------- + + # ----------------------- + pass diff --git a/pile_file.md b/pile_file.md new file mode 100644 index 0000000..9be0f52 --- /dev/null +++ b/pile_file.md @@ -0,0 +1,39 @@ +--- +title : TP - Structure de données linéaire - Pile et File +author : TOTARA Cédric et BERTRAND Benjamin +date : 06 juin 2021 +--- + +# Résumé du projet + +Cette activité a pour objectif de vous faire travailler avec les structures de données de type **pile** et **file**. Les élèves sont par groupe de deux et réaliseront le projet en **pair programming**. + +Elle se déroule en 2 temps : + +- Élaboration des classes ```Pile``` et ```File``` sous forme d'un module à importer +- Choix et réalisation d'un projet choisi dans une banque avec la contrainte d'utiliser une pile ou une file. + +La banque est constitué de sujets de difficultés variés. + +Ce TP se déroulera sur 3 semaines à raison de 1h par semaine et devra être complété par un travail personnel de la part des élèves si le besoin s'en fait sentir. + +# Étapes + +## Étape 1: Compléter le module implémentant une pile et une file + +## Étape 2: Projet + +# Déroulement de la séquence + +L'enseignant commence à présenter les concepts de **pile** et de **file**. + + Support à prévoir + +Les élèves ont ensuite 15minutes sans avoir le droit de toucher un clavier pour choisir une projet et reflechir sur papier ou à l'oral à la façon de compléter le code pour les classes Pile et File. + +A la suite de ce temps de prise en main, les élèves réalise les deux étapes en paire-programming. Toutes les 10minutes, ils échangent celui qui a le clavier. Celui qui a le clavier peut coder tandis que l'autre commente, accompagne ou refléchit à la suite. + +# Evaluation + +# Pré-requis +