Déroulement réel des cours

La « pensée » du Digwener, d'an 15 a viz C'hwevrer 2019 , 23h03m29s :
Sauvez une baleine, bouffez un japonais.
1 : semaine du lendi 19 janbier 2009
 Cours n°1 (Cumul=2h) :
  • La page du cours : http://grappa.univ-lille3.fr/~gonzalez/enseignement/2008-2009/projetpython/ avec :
  • But du cours : réalisation d'un projet de programmation en python.
    Ce sera un démineur. Vous pouvez télécharger la version compilée du « but à atteindre ». C'est une version compilée, donc vous n'avez pas accès au code source. Dommage, impossible de tricher...
    Pour l'essayer :
    python demineur.pyc
    Ce programme ne fonctionnera sans doute pas sous Windows.
  • Pour éviter de devoir apprendre des fonctions complexes, le graphique sera géré par curses. Ce pourrait être une bonne idée d'aller relire les chapitres 3 et suivants du poly.
  • Rappel : c'est quoi curses ?
    • Ncurses est une bibliothèque qui fournit des fonctions de définition de touches du clavier, de couleurs d'écran et permet l'affichage de plusieurs fenêtres sans recouvrement sur un terminal texte. (chap3s1)
      Ncurses s'appelle curses en python.
      Ncurses est très lié à linux, peu de portages sous Windows ont été réalisés.
    • Le minimum pour utiliser curses (chap3s2) :
                      import curses            # Importation de la bibliothèque curses
                      ecran = curses.initscr() # Créer une structure ecran
                      ........         # Votre programme se place là
                      curses.endwin()          # Terminer proprement
      L'utilisation de curses modifie énormément le fonctionnement du terminal dans lequel vous exécutez le programme. La dernière ligne permet de laisser le terminal dans un état propre au sortir du programme. Mais encore faut-il arriver à cette dernière ligne... Si votre programme plante il n'atteindra pas cette ligne et vous vous retrouverez à utiliser un terminal en très mauvais état... Si cela vous arrive la solution est simple : tapez en aveugle la commande reset (suivie d'un appui sur la touche Entrée).
    • Autres fonctions importantes : addstr, addch, getch, nodelay, clear, echo et noecho, keypad.
    • Les code retour de getch
  • Exercices de remise en route : quelques exercices du chapitre 3 :
    • Exercice 1 : La position en haut à gauche est (0,0). Placez-y une étoile (« * »).
      ex1chp3.py [sans numéros de lignes]
      1. import curses
      2.  
      3. ecran = curses.initscr()
      4. ecran.addch(0,0,"*")
      5. ecran.getch()
      6. curses.endwin()
    • Exercice 2 : La taille de l'écran s'obtient par la méthode getmaxyx() qui renvoie un couple de valeurs. Placez une étoile dans chaque coin de l'écran.
      ex2chp3.py [sans numéros de lignes]
      1. # Quand vous ecrivez hauteuyr, largeur = ecran.getmaxyx()
      2. # n'oubliezpas que x et y representent les dimensions de  
      3. # l'ecran. Comme le systeme de coordonnees commmence a (0,0),
      4. # on ne pourra donc atteindre que largeur-1 et hauteur-1.
      5. #
      6. # Vous avez sans doute  remarque que la position en bas a
      7. # droite ne peut pas etre atteinte.
      8. #
      9. # C'est parce qu'apres y avoir ecrit le curseur sortirait
      10. # de l'ecran.
      11.  
      12. import curses
      13.  
      14. ecran = curses.initscr()
      15. hauteur, largeur = ecran.getmaxyx()
      16. ecran.addch(0,0,"*")
      17. ecran.addch(hauteur-1,0,"*")
      18. ecran.addch(0,largeur-1,"*")
      19. ecran.addch(hauteur-1,largeur-2,"*")
      20. ecran.getch()
      21. curses.endwin()
    • Exercice 3 : Placez une ligne horizontale de 20 étoiles au centre de l'écran.
      ex3bischp3.py [sans numéros de lignes]
      1. import curses
      2. ecran = curses.initscr()
      3. hauteur, largeur = ecran.getmaxyx()
      4. ecran.addstr(hauteur/2,largeur/2-10,20*"*")
      5. ecran.move(0,0)
      6. ecran.getch()
      7. curses.endwin()
    • Exercice 5 : Même exercice que le précédent, mais le rectangle est creux (on ne voit que les bords).
      ex5bischp3.py [sans numéros de lignes]
      1. import curses
      2. ecran = curses.initscr()
      3. hauteur, largeur = ecran.getmaxyx()
      4. gauche = largeur/2 - 9
      5. droite = largeur/2 + 10
      6. haut = hauteur/2 - 5
      7. bas = hauteur/2 + 5
      8. ecran.addstr(haut,gauche,20*"*")
      9. ecran.addstr(bas,gauche,20*"*")
      10. for l in range (haut+1,bas) :
      11.     ecran.addch(l,gauche,"*")
      12.     ecran.addch(l,droite,"*")
      13. ecran.getch()
      14. curses.endwin()
  • Exercices : quelques exercices du chapitre 4 :
    • Exercice 1 : Écrire un programme qui commence par afficher une étoile en haut à gauche de l'écran, puis la déplace vers le bas à droite (direction Sud Est) à chaque fois qu'on appuie sur une touche.
      On sortira du programme en appuyant sur la touche « q ».
      On ne prendra pas la peine de contrôler la sortie de l'écran, on s'occupera de cela plus tard : si l'affichage sort, le programme plante ; ce n'est pas important pour l'instant. Mais dans ce cas n'oubliez de taper « reset » à l'aveugle pour retouver un terminal en bon état.
      ex1chp4.py [sans numéros de lignes]
      1. import curses
      2.  
      3. ecran = curses.initscr()
      4. curses.noecho()
      5. c = 'x'
      6. pos = -1
      7.  
      8. while c<>ord('q') :
      9.     ecran.clear()
      10.     pos += 1
      11.     ecran.addstr(pos,pos,'*')
      12.     c = ecran.getch()
      13.  
      14. curses.endwin()
Dernière modification : 25/8/2016
2 : semaine du lendi 26 janbier 2009
 TD n°1 (Cumul=2h) : [Voir le TD n°1]
 Cours n°2 (Cumul=4h) : [Voir le CM n°2]
3 : semaine du lendi 2 fébrier 2009
 TD n°2 (Cumul=4h) : [Voir le TD n°2]
 Cours n°3 (Cumul=6h) : [Voir le CM n°3]
4 : semaine du lendi 9 fébrier 2009
 TD n°3 (Cumul=6h) : [Voir le TD n°3]
 Cours n°4 (Cumul=8h) : [Voir le CM n°4]
5 : semaine du lendi 16 fébrier 2009
 TD n°4 (Cumul=8h) : [Voir le TD n°4]
6 : semaine du lendi 2 môrs 2009
 TD n°5 (Cumul=10h) : [Voir le TD n°5]
7 : semaine du lendi 9 môrs 2009
 TD n°6 (Cumul=12h) : [Voir le TD n°6]
8 : semaine du lendi 16 môrs 2009
 TD n°7 (Cumul=15h) : [Voir le TD n°7]
9 : semaine du lendi 23 môrs 2009
 TD n°8 (Cumul=18h) : [Voir le TD n°8]
Dernière modification : 25/8/2016