UNIVERSITÉ DE SHERBROOKE DÉPARTEMENT D’INFORMATIQUE CQP 112 Laboratoire/Devoir #7 : Classes en Python Hiver 2017 Le but de ce laboratoire est de vous familiariser avec la lecture et l’écriture de scripts Python, utilisant les classes. Ce laboratoire devra être complété avant le 13 avril 2017 à 12h00. Chaque groupe doît m’envoyer par courriel à [email protected], les fichiers générés au cours de ce laboratoire. Exercice 1 : classe Pile Les piles et les files sont des structures de données classiques permettant de stocker des éléments pour les retirer ensuite dans un ordre dépendant de l’ordre de stockage. Une pile fonctionne suivant le principe LIFO (Last In First Out), ce qui signifie que les derniers éléments ajoutés seront les premiers à être retirés de la pile. À l’opposé, une file fonctionne suivant le principe FIFO (First In First Out), ce qui signifie que les premiers éléments ajoutés seront aussi les premiers à être retirés. Par exemple, si p est une objet de type pile, que les valeurs 1, puis 2, puis 3, sont stockées dans p, alors le premier élément retiré de p sera 3. Si après avoir retiré 3, on stocke la valeur 4 dans p, alors p contiendra les valeurs 1, 2 et 4, et le prochain élément retiré de p sera 4. Si l est une objet de type liste, que les valeurs 1, puis 2, puis 3, sont stockées dans l, alors le premier élément retiré de l sera 1. Si après avoir retiré 1, on stocke la valeur 4 dans l, alors l contiendra les valeurs 2, 3 et 4, et le prochain élément retiré de l sera 2. 1. Écrire un programme pile.py dans lequel est définie une classe Pile contenant les attributs et méthodes suivants : — elements : liste d’entiers. — ajouter_element(elem) : méthode permettant d’ajouter l’entier elem au début de la liste d’entiers. — retirer_element() : méthode retirant le premier élément de la liste d’entiers et retournant la valeur de l’élément retiré. — taille() : méthode retournant le nombre d’éléments contenus dans la liste d’entiers. — ajouter_Pile(autre_pile) : méthode retirant les éléments de autre_pile pour les ajouter au fur et à mesure dans l’objet Pile appelant. 1 2. Récupérer le programme utilisation_pile.py à partir du site Web du cours et le placer dans le même répertoire que le programme pile.py, puis exécuter le script utilisation_pile.py en écrivant le résultat dans un fichier sortie_pile.txt. Pour faire cela, taper au terminal la commande python utilisation_pile.py > sortie_pile.txt 3. Copier votre programme pile.py dans un fichier file.py et modifier le programme file.py pour définir une classe File contenant les attributs et méthodes suivants : — elements : liste d’entiers. — ajouter_element(elem) : méthode permettant d’ajouter l’entier elem à la fin de la liste d’entiers. — retirer_element() : méthode retirant le premier élément de la liste d’entiers et retournant la valeur de l’élément retiré. — taille() : méthode retournant le nombre d’éléments contenus dans la liste d’entiers. — ajouter_File(autre_file) : méthode retirant les éléments de autre_file pour les ajouter au fur et à mesure dans l’objet File appelant. 4. Récupérer le programme utilisation_file.py à partir du site Web du cours et le placer dans le même répertoire que le programme file.py, puis exécuter utilisation_file.py en écrivant le résultat dans un fichier sortie_file.txt. Pour faire cela, taper au terminal la commande python utilisation_file.py > sortie_file.txt Exercice 2 : Classe Rationnel Un nombre rationnel est un nombre qui peut s’exprimer sous la forme d’un fraction nd où n et d sont des nombres entiers (avec d non nul), n appelé le numérateur et d le dénominateur. 1. Récupérer le programme rationnel.py à partir du site Web du cours et y définir une classe Rationnel contenant les attributs et méthodes suivants : — num : entier. — den : entier. — additioner(autre_Rationnel) : méthode réalisant l’addition de l’objet Rationnel appelant avec autre_Rationnel, et stockant le résultat de l’addition dans l’objet Rationnel appelant. Rappel : ab + dc = a×d+c×b . b×d — multiplier(autre_Rationnel) : méthode réalisant la multiplication de l’objet Rationnel appelant avec autre_Rationnel, et stockant le résultat de la multiplication dans l’objet Rationnel appelant. Rappel : ab × dc = a×c b×d . — simplifier() : méthode réalisant la simplification de l’objet Rationnel appelant. Rappel : ab = a pgcd(|a|,|b|) b pgcd(|a|,|b|) . La fonction pgcd est déjà définie dans le programme rationnel.py. 2. Récupérer le programme utilisation_rationnel.py à partir du site Web du cours et le placer dans le même répertoire que le programme rationnel.py, puis exécuter utilisation_rationnel.py en écrivant le résultat dans un fichier sortie_rationnel.txt. Pour faire cela, taper au terminal la commande python utilisation_rationnel.py > sortie_rationnel.txt Exercice 3 : Soumission 1. Créer une archive nommée Labo7_NomEtudiant.tgz (remplacer NomEtudiant par votre nom) contenant tous les fichiers générés au cours de ce laboratoire : pile.py, file.py, rationnel.py, sortie_pile.txt, sortie_file.txt, sortie_rationnel.txt 2. M’envoyer l’archive par courriel à l’adresse [email protected]. 2