Creative Commons License

Année: 2018-2019

Travaux pratiques 4

Objectifs

Exercice 4.1

Une fonction récursive est une fonction qui s'appelle elle-même. Par exemple, la fonction suivante calcule la factorielle d'un entier naturel.

int factorielle (int num) {
  if (num == 0) {
    return 1;
  }
  else {
    return (num * factorielle (num-1));
  }
}

Testez la fonction factorielle avec différents entiers naturels.

Exercice 4.2

Écrivez un programme en créant deux fichiers repertoire.h et repertoire.c qui utilisent l'interface en ligne de commande et prennent le nom du répertoire.

Ajoutez la déclaration suivante en repertoire.h

void lire_dossier(char *);

Implémentez cette fonction en repertoire.c qui parcourt le répertoire saisi par l'utilisateur et affiche les noms de tous les fichiers (et répertoires, si aucun) dans ce répertoire. Vous pouvez utiliser opendir, readdir pour parcourir un répertoire.

Exercice 4.3 ★★

Ajoutez la déclaration suivante en repertoire.h

void lire_dossier_recursif(char *);

Implémentez la fonction en repertoire.c qui parcourt le répertoire saisi par l'utilisateur en récursif et affiche tous les noms de tous les fichiers et répertoires, sous-répertoires et tous les fichiers dans les sous-répertoires. Pour mieux comprendre cette question, testez

$ ls -R

sur la ligne de commande. Testez votre code. Utilisez le principe de la fonction récursive.

Exercice 4.4 ★★★

Ajoutez la déclaration suivante en repertoire.h

void lire_dossier_iteratif(char *);

Implémentez cette fonction en repertoire.c qui parcourt le répertoire saisi par l'utilisateur en mode itératif et affiche tous les noms de tous les fichiers et répertoires, sous-répertoires et tous les fichiers dans les sous-répertoires. Mais cette fois, utilisez for (ou while ou do..while) pour implémenter cette fonction. Testez votre code.

Exercice 4.5 ★★★

En réutilisant les fichiers couleurs.h et couleurs.c (TP 2), écrivez un programme en créant deux fichiers liste.c et liste.h.

Ajoutez les déclarations suivantes en liste.h

struct liste_couleurs {
// Remplissez ça pour gérer une liste (simplement chainée) de
couleurs.
}
void insertion (struct couleur *, struct liste_couleurs *);
void parcours (struct liste_couleurs *);

Implémentez ces fonctions en liste.c. insertion prends deux entrées: pointer d'une couleur RGB et pointeur d’une liste de couleurs et insérez la couleur dans la liste. La fonction parcours prend le pointeur d'une liste de couleurs et affiche les couleurs dans la liste. Créez une liste de 10 couleurs et testez votre code en ajoutant dix couleurs en utilisant insertion(..) et parcourez votre liste en utilisant parcours(..). (BONUS pour implémenter une liste doublement chainée)

Fichiers

repertoire.h, repertoire.c, couleurs.h, couleurs.c, liste.h, liste.c

Instructions