Prototypage d`interfaces par langage de script Le Python, c

Prototypage d’interfaces par langage de script
Le Python, c’est bon
Cours 4 : Huffman et code coverage
1 Les graphes
Lors du dernier TD, vous avez du commencer `a cr´eer une classe graphe. Le
fichier graphs.py en montre une impl´ementation. Le fichier de test qui l’accompagne
est test graphs.py.
1.1 La classe Graph
Examinez de plus prˆet le fichier graphs.py. Il doit comporter quelques nou-
veaut´es :
des param`etres par d´efaut : lesquels ?
quelle est l’utilit´e de la fonction iter ? En quoi diff`ere-t-elle de la
m´ethode vertices() ?
`
A quoi correspond getitem et comment l’utilise-t-on ?
Que signifie la commande lambda ?
Trouver les r´eponses `a ces questions en googleant, en regardant la documen-
tation (en particulier le tutoriel) ou en analysant le code.
Le module graphs.py efinie ´egalement un algorithme BellmanFord et une
erreur CircuitError.`
A l’aide de Wikip´edia (par exemple) comprenez leurs
utilit´es.
1.2 Les tests
Le fichier test graphs.py comporte les tests de la classe graphe. Vous paraissent-
ils suffisant ? Pourquoi ?
1
1.3 Le code coverage
Lors de la cr´eation de tests, il est n´ecessaire que tout le code ´ecrit soit test´e.
Comme il peut ˆetre difficile (et fastidieux) de le v´erifier `a la main, des outils de
code coverage ont ´et´e d´evelopp´e. Allez l`a :
http://nedbatchelder.com/code/modules/coverage.html
et t´el´echarger le code. Vous le d´ecompresserez dans le r´epertoire contenant
les sources de votre TD.
Nous n’aurons besoin ici que du fichier coverage.py, nous n’installerons donc
pas le module `a proprement parler.
Lisez l’aide. . . Pour ce qui est de nos besoins, nous effectuerons dons l’ordre
les commandes suivantes :
1. coverage.py -e
2. coverage.py -x test graphs.py
3. coverage.py -r -m graphs.py
Explicitez et justifiez cette liste de commandes.
Jouez un peu avec coverage.py pur mieux le comprendre. En particulier,
on vous demande de cr´eer un fichier contenant les lignes de Graph.py test´ee et
celles qui ne le sont pas.
1.4 Objectif 100%
On vous demande que toutes les lignes de Graph.py soient test´ees. Utilisez des
tests judicieux. . .
Attention, il sera sans-doute n´ecessaire d’utiliser la commande coverage.py
-e de tant en temps. Pourquoi ?
1.5 Ajout de fonctionnalit´es `a Graph
Pour la suite de nos aventures, il va falloir ´etoffer un peu la classe graphe.
En particulier il vous est demand´e de coder et de tester les fonctionnalit´es
suitantes :
l’ajout et la suppression de sommets (un ou plusieurs en mˆeme temps),
l’ajout et la suppression d’arˆetes (une ou plusieurs en mˆeme temps),
le renommage de sommets.
2 Graphes et Code de Huffman
Nous allons utiliser notre classe graphe pour mettre en place une m´ethode
de compression conue sous le nom de codage de Huffman. Faites une petite
recherche sur le net pour comprendre le comment du pourquoi de cette m´ethode.
2
Une fois cette m´ethode comprise, on vous demande de la coder et de la
tester. On pourra utiliser la classe graphe en entier ou seulement des parties de
celle-ci. On vous demande en particulier d’obtenir les fonctions suivantes :
cr´eation d’un arbre de Huffman `a partir d’une liste de caract`eres et du
nombre de fois o`u ils apparaissent,
associer un nombre binaire `a un caract`ere `a partir de son arbre,
associer un caract`ere `a un nombre binaire `a partir de son arbre,
cr´eer un dictionnaire contenant le nombre d’occurrences de chaque car-
act`ere pour un texte donn´ee,
cr´eer un fichier compress´e `a partir d’un fichier texte donn´e.
3 Mesurer le temps d’ex´ecution
Nous n’utiliserons pas ici les module profile,cProfile ou hotshot fourni par
python pour mesurer le temps d’ex´ecution de vos programmes. Ceux qui seront
ineress´es pourront toujours aller regarder du cˆot´e du chapitre 25 du livre Python
Library Reference (http://docs.python.org/lib/profile.html).
Nous utiliserons le module timeit qui permet de mesurer le temps de petits
bouts de code.
3.1 Module timeit
Lisez la partie relative `a timeit dans le Python Library Reference et sa partie
dans le dive into python :
http://docs.python.org/lib/module-timeit.html
http://diveintopython.adrahon.org/performance_tuning/timeit.html
Comprenez son fonctionnement en :
´ecrivant des lignes de code testant ses diverses fonctionnalit´es,
en utilisant ses capacit´es en lignes de commandes.
3.2 `
A faire
Mesurer le temps d’ex´ecution moyen de vos encodage et d´ecodage de texte.
3
1 / 3 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !