TD 2: Utilisation des outils Unix

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.

Module matrices

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.

Programme principal

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.

Utilisation de make

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.

Utilisation de gdb

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.



Jean-Baptiste Yunes
1999-02-05