nsi:terminales:structures:pile_implementation
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| nsi:terminales:structures:pile_implementation [2022/08/28 18:50] – supprimée - modification externe (Unknown date) 127.0.0.1 | nsi:terminales:structures:pile_implementation [2022/08/28 18:51] (Version actuelle) – ↷ Liens modifiés en raison d'un déplacement. goupillwiki | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| + | ====== Implémentation procédurale des piles ====== | ||
| + | ===== Choix de structure ===== | ||
| + | |||
| + | Je propose d' | ||
| + | |||
| + | <WRAP box>À titre de comparaison, | ||
| + | |||
| + | ==== Utilisation d'un tableau ==== | ||
| + | |||
| + | On se fixera une taille maximale N, ce qui signifie que la pile P a toujours à sa disposition N cases mémoires. Pourtant, la pile n' | ||
| + | |||
| + | Il faut écrire quelque part le nombre de cases en cours d' | ||
| + | |||
| + | Pour cela on décide de créer un tableau de N + 1 cases, | ||
| + | * N cases disponibles pour les items de la pile -- pas forcément toutes utilisées, | ||
| + | * la N + 1 ème case -- '' | ||
| + | |||
| + | ==== Exemple d' | ||
| + | |||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | {{ .: | ||
| + | |||
| + | |||
| + | <WRAP tip>Dans le cas du dépilement, | ||
| + | |||
| + | Si l' | ||
| + | |||
| + | ===== Fichier Python ===== | ||
| + | |||
| + | <code python linenums> | ||
| + | """ | ||
| + | piles.py | ||
| + | Module définissant l' | ||
| + | """ | ||
| + | |||
| + | def CREER_PILE_VIDE(taille_max: | ||
| + | """ | ||
| + | taille_max: taille maximale de la pile | ||
| + | Renvoie une pile vide | ||
| + | exemples : | ||
| + | CREER_PILE_VIDE(5) -> [None, None, None, None, None, 0] | ||
| + | CREER_PILE_VIDE(3) -> [None, None, None, 0] | ||
| + | """ | ||
| + | |||
| + | def EST_VIDE(P): | ||
| + | """ | ||
| + | Renvoie True si la pile est vide, False sinon | ||
| + | """ | ||
| + | |||
| + | def EST_PLEINE(P): | ||
| + | """ | ||
| + | Renvoie True si la pile est pleine, False sinon | ||
| + | """ | ||
| + | |||
| + | def EMPILER(P, e): | ||
| + | """ | ||
| + | Ajoute l' | ||
| + | précondition: | ||
| + | """ | ||
| + | |||
| + | def DEPILER(P): | ||
| + | """ | ||
| + | Enlève l' | ||
| + | précondition: | ||
| + | """ | ||
| + | | ||
| + | def TEXTE(P): | ||
| + | """ | ||
| + | Renvoie une représentation texte du contenu de la pile | ||
| + | On utilise la notation, par ex, 4:9:17:12, 12 étant ici le sommet de la pile | ||
| + | """ | ||
| + | | ||
| + | # zone de test | ||
| + | if __name__ == ' | ||
| + | # création de P = 4:9:17:12 | ||
| + | P = CREER_PILE_VIDE(100) | ||
| + | EMPILER(P, | ||
| + | EMPILER(P, | ||
| + | EMPILER(P, | ||
| + | EMPILER(P, | ||
| + | | ||
| + | # tests | ||
| + | assert EST_VIDE(P) == False | ||
| + | assert EST_PLEINE(P) == False | ||
| + | assert TEXTE(P) == " | ||
| + | assert DEPILER(P) == 12 | ||
| + | assert TEXTE(P) == " | ||
| + | assert DEPILER(P) == 17 | ||
| + | assert TEXTE(P) == " | ||
| + | DEPILER(P) | ||
| + | DEPILER(P) | ||
| + | assert EST_VIDE(P) == True | ||
| + | | ||
| + | # si on arrive là, c'est que tous les test ont été passés avec succès | ||
| + | print(" | ||
| + | </ | ||
| + | |||
| + | ===== Exemples en d' | ||
| + | |||
| + | Vous pouvez voir un exemple d' | ||
