Tristan Crolard - François Pottier
On désire écrire un module contenant les opérations sur les matrices décrites lors du TD précédent, puis un petit programme utilisant ce module.
Créer le fichier d'en-têtes matrices.h, en y plaçant nos déclarations de types et de fonctions:
typedef double elt; #define ROWS 3 #define COLS 3 typedef struct { elt array[ROWS][COLS]; } matrix; void identity (matrix* out_m); void transpose (matrix* inout_m); void add (matrix* in_m1, matrix* in_m2, matrix* out_m); void display (matrix* in_m);
Cela fait, implémenter ces fonctions (c'est-à-dire écrire leurs définitions) dans le fichier matrices.c.
Placer, dans le fichier test.c, le programme principal, c'est-à-dire une fonction dont le prototype est
int main (void)
. Ce programme aura pour tâche d'initialiser deux matrices à l'aide de valeurs constantes de
votre choix, puis de calculer la somme de leurs transposées et de l'afficher.
L'utilisation d'un gestionnaire de projets, comme make, est essentielle lorsqu'on travaille sur des projets de taille moyenne ou supérieure. On le programme en écrivant un Makefile, et il se charge ensuite automatiquement de compiler les fichiers appropriés, dans un ordre adéquat. Ce mécanisme est plus puissant qu'un simple script: en effet, make tient compte des dépendances entre fichiers. Cela lui permet, lorsque vous modifiez un fichier, de ne recompiler que les fichiers qui en dépendent, et non l'ensemble du projet.
Faites une copie du fichier ~pottier/TD-Systems-98-99/td2/code/Makefile
; si besoin est, modifiez-le pour
l'adpater à votre projet. Il est important d'en comprendre le contenu; tapez man make et man
makedepend pour en savoir plus.
Utiliser le débogueur pour effectuer une exécution pas-à-pas de votre programme. Cela demande que ce dernier soit compilé avec l'option -g; modifier le Makefile en conséquence.