Lycée La Martinière Monplaisir
Informatique Commune 2eannée TP 4 : Récursivité et piles
TP 4 : Récursivité et piles
Judicaël Courant 20 décembre 2017
Exercice 1 : Tracé d’arbres
Écrire une fonction arbre(n) dessinant un arbre. L’arbre sera dessiné en suivant un pro- cédé récursif. Voici un exemple de ce qui est attendu pour différentes valeurs den :
On rappelle que la fonction plot(u, v, color=c)du modulematplotlib.pyplot, où u et v sont des tableaux contenant cha- cun k réels, respectivement x0, . . . , xk−1 et y0, . . . , yk−1, trace une ligne brisée reliant les points A0(x0, y0), . . . , Ak−1(xk−1, yk−1) dont la couleur est donnée par la chaîne de carac- tèrec(’black’désigne le noir,’blue’le bleu, etc.).
La fonctionshow(), du même module, per- met d’afficher le dessin tracé.
Exercice 2 : Parcours d’un répertoire
Le but de cet exercice est d’écrire une fonction Python listing(d) prenant en argument un nom de fichier ou de répertoiredet affichant (à raison d’un nom par ligne)dainsi que les noms de chacun des fichiers ou répertoires contenus dansdsidest un répertoire, ainsi que les noms des fichiers ou répertoires contenus dans ces répertoires, etc. Vous pourrez afficher ces noms dans l’ordre de votre choix.
Pour cela, on pourra utiliser :
— la fonction listdir(d) du module os : elle retourne le nom des répertoires et fi- chiers contenus dans le répertoire appelé d;
— la fonction isdir(f) du module
os.path : elle retourne un booléen va- lantTrue si et seulement si la chaîne de caractèrefest le nom d’un répertoire.
— la fonction join du module os.path : elle prend en argument deux chaînes de caractères d, et f, la première représen- tant le chemin d’un répertoire (son nom) et la seconde le nom (court) d’un fichier et retourne la concaténation des deux, c’est-à-dire un chemin vers le fichier (sous Linux, cette fonction retourne es- sentiellementd + "/" + f).
1. Écrire la fonction demandée sous forme d’une fonction récursive.
2. Écrire la fonction demandée sous forme d’une fonction itérative. Vous aurez be- soin pour cela d’une structure de données pour garder la liste de tous les fichiers et répertoires qu’il reste à explorer. Vous uti- liserez une pile à cet effet.
En fait, il existe déjà un moyen en Py- thon de parcourir un répertoire et ses sous- répertoires avec la fonction walk(d) du mo- dule os. Utilisez-là pour écrire la fonction de- mandée (on fera notamment en sorte que la fonction continue à marcher si l’argument dé- signe un fichier qui n’est pas un répertoire).
Judicaël Courant - 20 décembre 2017 1/1 Document sous licence Art Libre (http://artlibre.org)