Planification
Première partie, techniques de la programmation impérative (en C)
(4 semaines)
Semaine 40
Cours
Objectifs de l'apprentissage de programmation
- Maintenabilité, Lisibilité
(communication avec d'autres programmeurs)
Indentation
- Généralité (pas de limitation arbitraires),
Réutilisabilité
Différences entre C et Java:
- Généralisation de l'expression séquentielle
- Restrictions sur la position des déclarations
- Notion de pointeur
- Équivalence pointeur/tableau
- Chaînes de caractères
- Choix de manipulation de valeurs ou de références
en particulier pour le passage de paramètres
- Absence de classes, héritage, méthodes, paquetages
interfaces.
- Gestion manuelle de la mémoire avec malloc() et free()
- Notion d'exécutable et de programme principal
- Notion de module et unité de compilation
- Struct
- Fonctions
TD
- Le contenu du cours
- GCC, options -W -Wall -c -g -o -O
- Make élémentaire
- GDB
- Emacs C-mode, M-x compile, next-error, indentation, etc
Semaine 41
Cours
Techniques élémentaires de programmation
- Dictionnaires
tableau non trié, tableau trié,
liste non triée, liste triée,
tableau d'hachage,
arbre binaire
insertion, suppression, recherche,
utilisation de pointeurs sur champs pour la liste,
renversement de la liste
- Recursivité
cas de base en premier
TD
- Lecture de code simple de gestion de dictionnaires
- Écriture de code simple
- Compilation, débuggage, exécution depuis GDB avec
programme principal vide
- Pas de programmes interactifs
Semaine 42
Cours
Modularité et Généricité
- Portée des identificateurs
- Utilisation de static
- Séparation .h .c
- Notion de module client
- Généricité avec void *
- Préprocesseur, inclusion
- Utilisation d'en-têtes d'objet
- Sémantique par référence uniforme
TD
- Lecture de code d'une module générique
(par exemple, pile ou file)
- Écriture d'un module générique
(l'autre)
Semaine 43
Cours
Techniques avancées
- Utilisation du ramasse-miettes de Boehm
- Traitement d'erreurs, setjmp/longjump,
bibliothèque d'exceptions
TD
- Écriture d'un programme avec le RM de Boehm
- Écriture d'un programme avec exceptions
Deuxième partie, techniques de la programmation fonctionnelle et
symbolique (en Common Lisp) (8 semaines)
Semaine 44
Survol du langage
Introduction à la programmation fonctionnelle et symbolique
Objectifs
Semaine 45
Techniques de base
Récursivité, listes, cons, car, cdr, représentation des listes,
partage