Category Archives: Systèmes (HLIN303)

Contrôle Continu de Systèmes d’exploitation HLIN303

Compresseur/décompresseur de Huffman

Le sujet du contrôle continu : ccHuffman

Le contrôle continu est soumis à la règle du max , il n’est donc pas indispensable mais est fortement recommandé !

Les démos sur machine du projet « Code de Huffman » auront lieu fin décembre. Si vous désirez y participer, le binôme (groupe de deux étudiants) doit :
-  envoyer à Michel Meynard (meynard@lirmm.fr) et Pierre Pompidor (pompidor@lirmm.fr), une archive de vos codes 2 JOURS AVANT LA SOUTENANCE ;
-  en retour, nous vous enverrons un créneau plus précis de votre passage.

Veuillez dans votre archive (nommée par les noms des participants au projet), créer un petit fichier README qui indiquera l’état d’avancement de votre projet (et par exemple les bogues résiduels). Par ailleurs, TOUS les participants au projet devront être présents (les absents ne seront sinon pas notés).

Le jour de la soutenance, les participants doivent venir avec :
-  un micro rapport papier de 1 à 2 pages décrivant les choix importants effectués ;
-  les listings (fichiers sources) documentés (doxygen) ;
-  des réponses aux questions indiquées dans le CC ;

Chaque soutenance durera 12 à 15 minutes ! C’est extrêmement rapide, aussi soyez certain d’avoir les exécutables prêts à fonctionner sur votre compte Unix ainsi que les fichiers exemples. Une recompilation du projet durant la soutenance n’est pas envisageable !

Aides

Ci-après, des fichiers textes exemples qui devront passer au compresseur : unpeudetout , undechaque , quedes1 .

Vous pouvez également tester les exécutables suivants : huf le compresseur, dehuf le décompresseur. Enfin, un fichier compressé : unpeudetout.txt.huf .

Python express

python 2 != python3

  • par défaut, la cmd python lance l’un ou bien l’autre !  python --version pour vérifier
  • Utiliser python3 dans les scripts : #!/usr/bin/env python3
  • en ligne de commande, utiliser : ipython3 qtconsole

 

fonctions intégrées (surcharge)

>>> print (len("toto")) #string
4
>>> print (len (("toto",2,1.3))) #tuple
3
>>> print (len (["toto",2,1.3])) #list
3
>>> print (type({1:"toto", 2:"titi"})) #dict

fonction définie par l’utilisateur

{def nomDeLaFonction(liste de paramètres):
"commentaire sur la fonction"
...
bloc d'instructions
...
return resultat
}

Modules

>>> from os import path
>>> path.exists("toto.txt")
False
>>> import sys,os
>>> os.access(os.path.expanduser("~/.bashrc"),os.R_OK|os.W_OK)
True

Module re

permet d’utiliser les expressions régulières

#!/usr/bin/env python3
import os,re
for ligne in os.popen('ls -a'): # parcourt les lignes sorties par la cmd ls
  res=re.search('^[.]([a-z]+)(\.([a-z]*))?',ligne)
  if res:
    print(".",res.group(1),end="")
    if (res.group(2)):
      print(" d'extension ", res.group(2))
    else:
      print()