M1 BBSG - Programmation Structurée 2

1 - Sujets TP
  • TP6 - Expressions régulières (10 novembre, à rendre pour le 13 novembre 23h) ; fichier invitation.txt
  • TP7 - Structures de données (15 novembre, à rendre pour le 21 novembre 23h)
  • TP8 - Objets (22 et 23 novembre, à rendre pour le 27 novembre 23h)
  • TP9 - Héritage (28 et 30 novembre, à rendre pour le 4 décembre 23h)
  • TP10 - Interfaces graphiques (5 et 7 décembre, à rendre pour le 3 janvier 23h)
2 - HTML
3 - UNIX
4 - Fusion des projets et documentation
  1. L'objectif est de fusionner plusieurs projets en une seule base de code (voici une liste d'équipes suggérées) :
    • mettre le code commun dans un module partagé,
    • factoriser le code en créant des fonctions génériques,
    • factoriser le code en remplacement une rassemblant une suite de traitements identiques dans une boucle for,
    • faire la chasse à toute duplication de code,
    • suivre au maximum les contraintes de PEP8 (ou résumé).
  2. Corrigez vos docstrings et produisez la documentation Sphinx grâce à ce TP.
  3. Rendez sur ametice une archive au format zip avant le 23 décembre. Votre archive ne doit contenir que ce qui est strictement nécessaire.
5 - Corrigés des TP
6 - Conseils pour une bonne programmation
  1. Petite introduction à la programmation : ici
  2. Il vous est conseillé d'installer chez vous (ou mieux, sur un laptop) un système compatible UNIX (la dernière version d'Ubuntu semble être un choix raisonnable)
  3. Listes et Strings
    • Transformer une chaîne de caractères en liste de caractères :
      maListe = list(maString)
    • Transformer une liste de caractères en chaîne de caractères :
      maString = ''.join(maListe)
    • Transformer une chaîne de caractères en liste de mots :
      maListe = maString.split(monCaractèreSéparateur)
    • Transformer une liste de mots en chaîne de caractères :
      maString = monCaractèreSéparateur.join(maListe)
  4. Modules
    Une fois que vous maîtrisez les fonctions, il va vous être demandé de regrouper vos fonctions dans des modules. C'est-à-dire, mettre toutes les fonctions qui travaillent sur le meme type de données ensemble (un peu comme math.py contient les fonctions sin, cos, exp et string.py les fonctions relatives aux chaînes de caractères).
    Regardez par exemple la correction de l'exercice 5 du TP4. Ces exercices sont regroupés en 2 modules :
    • un module libdichotomie.py qui ne contient que des fonctions - celles-ci ne faisant aucun affichage (pas de print) ni aucune lecture (pas de raw_input). Elles se contentent de calculer un résultat à partir des arguments qu'on leur passe en paramètre. Ce module est appelé une bibliothèque de fonctions.
    • un module progdichotomie.py (qui est le programme principal). Il fait les lectures et les affichages, et appelle les fonctions du module libalea.py. Pour lancer le programme il suffit de taper: python3 progdichotomie.py
  5. Insertion d'un petit programme principal de test dans un module (voir corrigé des exercices 1, 2, 3 et 4 du TP4) :
    Le code if __name__ == '__main__' : permet de définir un petit programme principal de test à l'interieur d'une bibliothèque de fonctions. De ce fait :
    • si on exécute directemement le module (python3 monmodule.py) alors le programme de test sera exécuté.
    • si on charge le module depuis l'interpréteur ou depuis n'importe quel autre module grâce à la directive import module (ou beaucoup moins élégamment from module import *), le programme de test ne sera pas importé ni exécuté.
  6. 3 façons de lancer un script :
    • Créez-vous un répertoire Programmation (ou Python, ou PS, etc.) - commande mkdir
    • Dans celui-ci, créez éventuellement un sous-répertoire TP1
    • Editez un fichier (avec nedit, kwrite, gedit), écrivez le code python3 suivant :
      print(5+5)
    • Sauvegardez sous le nom test.py (dans le répertoire adéquat)
    • Exécutez le script :
      1. Interactivement :
        • lancez l'interpréteur python3
        • Tapez dans l'interpréteur :
          import test
      2. Directement, en appelant l'interpréteur de façon explicite :
        • Tapez :
          python3 test.py
      3. Directement, en appelant l'interpréteur de façon implicite :
        • Tapez :
          ./test.py
        • Ca ne marche pas car vous n'avez pas autorisé test.py à être exécutable. Pour cela :
          chmod a+x test.py
        • Tapez :
          ./test.py
        • Ça ne marche pas car il faut indiquer d'une façon ou d'une autre au système que le programme est écrit en python3. Pour celà, éditez votre fichier test.py et rajoutez-y, comme première ligne les caractères #! suivis du résultat de la commande :
          which python3 (ce devrait donc être au final une ligne du style #!/usr/bin/python3).

Valid XHTML 1.0 Strict