Démo IFT2035
Concepts des langages de programmation
automne 2009

Page du cours

La démo a lieu les mercredis de 8 h 30 à 10 h 30 dans la salle AA-1340.

Disponibilités

Démonstrateur Disponibilité
David Haguenauer mercredi 10 h 30

Les disponibilités sont données au local AA-3197 (à confirmer). Si l'horaire ne vous convient pas du tout, vous pouvez en négocier un autre. Note : je ne donnerai normalement la disponibilité du mardi que si vous m'indiquez votre intention d'y venir ; envoyez-moi un courriel ou venez me voir pendant la démo pour me prévenir.

Vous pouvez communiquer avec moi en dehors des heures de disponibilité en écrivant à : <dift2035 (at) iro.umontreal.ca>.

Démonstrations

Démo 1 (2009-09-09)
Énoncé : ASTs, pile, micro-évaluateur, etc.
Corrigé
Démo 2 (2009-09-16)
Énoncé : quicksort, micro-optimiseur, nombres de Church
Corrigé
Démo 3 (2009-09-23)
Énoncé : sans variable, fonctions pour table
Corrigé : pointless.hs, pourtable.hs
Démo 4 (2009-09-30)
Énoncé : structures infinies, évaluateur (portée et modes de passage)
Corrigé : structinf.hs, évaluateurs: eval3-nom+dyn.hs, eval3-val+dyn.hs, eval3-val+sta.hs, eval3-nom+sta.hs
Corrigé de l'exercice 3½ partie 1, partie 2
Démo 5 (2009-10-07)
Énoncé : RPN en Haskell
Corrigé succinct: type-step-rpn.txt
Démo 6 (2009-10-14)
Énoncé : modes de passage, fonctionnel en C, déterminer le passage
Corrigé, zlika.c determipass.txt
Démo 7 (2009-10-28)
Énoncé : raisonner, compteurs de références
Corrigé : refcount.c (à compiler avec une commande telle que gcc -ansi -Wall -O2 -o refcount refcount.c et à exécuter avec ./refcount ou même valgrind ./refcount pour tester la présence d'erreurs de gestion de mémoire.)
Démo 8 (2009-11-04)
Désolé.
Démo 8 (2009-11-11)
Exercice 7½ : Vous pouvez tester votre code en téléchargeant testlinkedlist.c (qui suppose que votre code se trouve dans des fichiers linkedlist.h et linkedlist.c) en compilant par la suite de commandes gcc -c -ansi -Wall -O2 linkedlist.c ; gcc -c -ansi -Wall -O2 testlinkedlist.c ; gcc -o linked testlinkedlist.o linkedlist.o et en exécutant ./linked voire valgrind ./linked pour rechercher des erreurs de gestion de mémoire (le code fourni en contient au moins une, puisqu'il ne libère pas la liste allouée).
Énoncé : macros C, Scheme
Démo 9 (2009-11-18)
Énoncé : macros en Scheme
Corrigé (pas trop testé) : case.scm postfix.scm
Démo 10 (2009-11-25)
Énoncé : redondance, famille, arithmétique

Travaux pratiques

Indications valables pour tous les travaux pratiques
Votre code sera plus agréable à corriger :
Autres recommandations générales :

TP 2

Vous pouvez compiler votre code avec une commande telle que gcc -c -pedantic -Wall -O2 stralloc.c qui, idéalement, ne devrait pas donner plus d'avertissements que le code fourni (i.e., aucun). Ensuite, vous pouvez compiler votre programme principal, e.g. main.c qui définit une fonction main avec une suite de commandes telle que gcc -c -pedantic -Wall -O2 main.c ; gcc -o main main.o stralloc.o.

Vous pouvez utiliser comme exemple le programme linesort pour tester votre code. Je fournis aussi un makefile (changez son nom en Makefile) pour compiler le tout. Ce programme imite la commande Unix sort. Exemple d'utilisation:

$ make
gcc -pedantic -Wall -O2 -g   -c -o linesort.o linesort.c
gcc -pedantic -Wall -O2 -g   -c -o stralloc.o stralloc.c
gcc   linesort.o stralloc.o   -o linesort

$ cat fruits
banane
pomme
orange
goyave
cerise
citron
mandarine
guarana
mangue

$ ./linesort <fruits
banane
cerise
citron
goyave
guarana
mandarine
mangue
orange
pomme

$ valgrind ./linesort <fruits
==1337== Memcheck, a memory error detector. [...]
banane
cerise
citron
goyave
guarana
mandarine
mangue
orange
pomme
==1337== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 4 from 1) [...]
==1337== All heap blocks were freed -- no leaks are possible.

Vous pouvez commencer par implémenter une version de stralloc.c qui utilise malloc au lieu de mmap à fins de tests, puis choisir un algorithme d'allocation et enfin le coder en allouant avec mmap.

TP 3

Quelques exemples d'expressions µPTS: tp3-ex.txt

Notes diverses

Sur Haskell

Sur Emacs

Sur C

Sur Prolog


$Id: index.html,v 1.72 2009/12/14 21:36:08 haguenad Exp $,