Licence Sciences 2ème Année
Filière -- Mathématiques, Informatique et Applications aux Sciences 2009 - 2010
Programmation avancée
2eme semestre 2010
Projet 1 -- Implantation de l'examen du premier semestre de Licence 2eme annee
Auteur Marc Zipstein Deadline : Lundi 08 Fevrier 2010 a 18 heures 02 Fevrier 2010
Implantation de l'examen du premier semestre de Licence 2eme annee

Projet 2 -- Exploitation d'une file pour écrire un Nibbler
Auteurs Chan Ung et Florent Hivert Deadline : Lundi 01 mars 2010 à 18 heures 09 Fevrier 2010 et 23 Fevrier 2010
Exploitation d'une file pour écrire un Nibbler

Dans ce TD, on souhaite réaliser un programme de poursuite d'un ver s'allongeant au fur et à mesure qu'il consomme des proies. Au lancement du programme un quadrillage régulier est affiché et les proies, représentées sous forme de carrés pleins dans le damier, sont disséminées aléatoirement dans l'espace de jeu. Le ver est représenté par une tête (un disque noir) et une suite d'anneaux représentés par des cercles. Au lancement du jeu, le ver est sans anneau.
Pour jouer, l'utilisateur va « piloter » le ver en pointant avec la souris dans une case voisine de la tête (4-connexité). Le déplacement est simulé en déplaçant la tête dans la case pointée et en effaçant le dernier anneau de la queue. Lorsque la tête arrive sur une case contenant une proie, celle-ci est consommée et un anneau supplémentaire est ajouté à l'extrémité de la queue.

Afin de prendre de bonnes habitudes l'ensemble des fonctions programmées devront être commentées et testées. Nous rappelons aussi que les options appliquées lors de la compilation seront -Wall et -ansi et qu'il est très fortement déconseillé d'utiliser dans votre code des variables globales.

De plus il est conseillé de respecter une convention de présentation du code unique (pour exemple, la convention du langage C ou la convention du langage Java).

Projet 3 -- Structure de pile pour l'evaluation d'expressions en notation polonaise
Auteurs Chan Ung et Florent Hivert Deadline : Lundi 15 mars 2010 a 18 heures 09 mars 2010
Structure de pile pour l'evaluation d'expressions en notation polonaise

Dans ce TD, on souhaite evaluer des expressions donnees en notation polonaise ou prefixe. Pour realiser cette evaluation, on utilisera une nouvelle structure de donnee : la pile, dont nous implanterons les fonctions de manipulation de base. Nous verrons ensuite comment utiliser cette structure de donnee afin d'evaluer des expressions donnees en notation polonaise ou prefixe et nous realiserons une calculatrice qui prendra exemple sur la commande dc. Une fonction d'analyse syntaxique sera implantee permettant de decouper l'expression saisie par l'utilisateur et qui utilisera la fonction strtod a la place de la fonction atof. Cette derniere ne gerant pas les erreurs.

Afin de prendre de bonnes habitudes l'ensemble des fonctions programmee s devront etre commentees et testees. Nous rappelons aussi que les options appliquees lors de la compilation seront -Wall et -ansi et qu'il est tres fortement deconseille d'utiliser dans votre code des variables globales.

De plus il est conseille de respecter une convention de presentation du code unique (pour exemple, la convention du langage C ou la convention du langage Java).

La version a rendre est la version prefixe!

Projet 4 -- Compression par deplacement en tete de liste
Auteurs Florent Hivert et Marc Zipstein Deadline : 12 mai 2010 a 18 heures 16 et 23 mars 2010
Compression par deplacement en tete de liste

Nous decrivons et implantons dans ce TD une methode de compression de donnees (adaptee aux textes) qui va utiliser une liste chainee de mots. La position d'un mot dans la liste est un entier strictement positif (la position du mot en tete de liste est donc 1). Lors de la compression d'un texte, on va coder un mot deja present dans la liste par sa position courante puis on le deplace en tete de la liste. Si le mot n'est pas present dans la liste, on le code par l'entier 0 suivi du mot en clair dans le fichier et on l'ajoute a la fin de la liste.

Afin de prendre de bonnes habitudes l'ensemble des fonctions programmees devront etre commentees et testees. Nous rappelons aussi que les options appliquees lors de la compilation seront -Wall et -ansi et qu'il est tres fortement deconseille d'utiliser dans votre code des variables globales.

De plus il est conseille de respecter une convention de presentation du code unique (pour exemple, la convention du langage C ou la convention du langage Java).

Exemple d'utilisation de la fonction getopt.

Projet 5 -- Ecriture bits-a-bits
Auteurs Florent Hivert et Marc Zipstein Deadline : 12 mai 2010 a 18 heures 30 mars 2010
Ecriture bits-a-bits

Dans les algorithmes de compressions de donnees, on a souvent besoin de stocker des nombres dans un fichier. Nous allons implementer deux methodes pour le faire, le but etant de prendre le moins de place possible sur le disque. La premiere va ecrire sur un nombre variable d'octets, tandis que la seconde va ecrire sur un nombre variable de bits. Nous verrons la notion de fichier « bufferise » que nous implanterons et utiliserons pour l'ecriture et la lecture de nos donnees compressees precedemment.

Afin de prendre de bonnes habitudes l'ensemble des fonctions programmees devront etre commentees et testees. Nous rappelons aussi que les options appliquees lors de la compilation seront -Wall et -ansi et qu'il est tres fortement deconseille d'utiliser dans votre code des variables globales.

De plus il est conseille de respecter une convention de presentation du code unique (pour exemple, la convention du langage C ou la convention du langage Java).

Projet 6 -- Arbres syntaxiques
Auteurs Florent Hivert et Marc Zipstein Deadline : lundi 24 mai 2010 a 18 heures 11 et 18 mai 2010
Arbres syntaxiques

Dans ce TD, on souhaite representer les expressions arithmetiques a l'aide d'arbres syntaxiques. Ainsi, etant donne une expression arithmetique en notation polonaise inverse ou postfixe, nous souhaitons ecrire cette expression en notation habituelle ou infixe, il faudra faire attention au parenthesage (regle de priorite des operateurs). Dans un premier temps et par souci de simplification, on se limitera seulement aux expressions utilisant l'operateur d'addition et de multiplication.
Le programme permettant de repondre a cette problematique fonctionnera en deux temps. La premiere etape sera la saisie d'une chaine de caracteres et la creation de l'arbre syntaxique a partir de celle-ci. Puis, on affichera la formule en infixe a partir de l'arbre syntaxique construit precedemment (parcours dans l'arbre). Pour l'etape de creation de l'arbre, on reutilisera la structure de donnees pile implantee pour le programme de calculette en notation polonaise inverse.

Afin de prendre de bonnes habitudes l'ensemble des fonctions programmees devront etre commentees et testees. Nous rappelons aussi que les options appliquees lors de la compilation seront -Wall et -ansi et qu'il est tres fortement deconseille d'utiliser dans votre code des variables globales.
De plus il est conseille de respecter une convention de presentation du code unique (pour exemple, la convention du langage C ou la convention du langage Java).