Projet
de Programmation en Langage C
module I22, mai 2007.
Au final, il s'agit d'écrire une commande :
./genea nom prenom fichier
qui affiche la généalogie d'une personne.
L'objectif pédagogique est d'approfondir les notions de pointeur, liste chainée et fichier texte et gestion des ensembles
représentés par des listes chainées. Vous disposez de 6
séances de 3H pour implanter votre code. Les types,
procédure et fonctions sont décrites dans le sujet [ projet_I22.pdf ]. Les
plus rapides pourront utiliser la commande dot pour produire une généalogie sous forme graphique. Vous consulterez le .man de dot comprendre comment transformer un fichier .dot en une image de format quelconque.
[ graphe.dot ]
[ graphe.ps ]
Vous trouverez dans cette page des
éléments pour vous aider à démarrer votre
projet : un fichier Makefile,
un fichier de données data.txt, et deux sources preprojet.c (donnée à titre indicatif) et projet.c. Commencez par faire
une copie de ces quatre fichiers dans un répertoire vide, puis
lancez la commande make.
Vérifiez la présence de nouveaux fichiers...
La commande projet.exe pend un nom de fichier en argument et construit l'ensemble de toutes les personnes définies dans ce
fichier. Le programme termine par l'affichage de l'ensemble dans
un format text. Prenez le temps de faire quelques essais...
Cliquez sur L'image pour obtenir la représentation complète
de l'ensemble des personnes du fichier data.txt. L'image illustre les liens qui
sont construits dynamiquement sur le tas (zone mémoire) au moyen de la fonction void* malloc() pour implanter la structure d'ensemble. L'ensemble est matérialisé par
le chainage rouge, chaque cellule pointe vers une personne, et
chaque personne pointe vers des parents.
Les figures ci-dessus, sont obtenues par la commande preprojet.exe fichier -e. Le deuxième argument permet d'afficher le graphe dans le langage de la (superbe) commande dot (projet graphviz) de sorte
à construire une représentation graphique. Le fichier
postscript data.ps
est l'image construite à partir du fichier data.txt par l'intermédiaire de la commande
make.
Ph. Langevin, mai 2007.