Vous êtes sur la page 1sur 3

Année universitaire : 2019/2020

Département d’informatique Trimestre 1


Master GLP
Programmation Python
TP n°4
Exercice 1 : Gestion d’une fiche

Question1.1: Créez avec votre éditeur (au choix) un fichier exo1.txt où figurera
uniquement votre prénom puis votre nom et votre filière séparés.

Ecrire un programme en langage Python qui permet de :

Question1.2: Copier ce fichier texte dans un autre, tester le programme en


vérifiant après exécution la présence du fichier copié dans le directory.

Question1.3: Écrivez en langage Python une fonction compte_c(f) qui renvoie le


nombre de des caractères du fichier exo1.txt.

Question1.4: Écrivez en langage Python une fonction compte_m(f) qui renvoie le


nombre de ses mots . Deux mots sont séparés par un espace ou un retour à la ligne.

Question1.5: Écrivez en langage Python une fonction compte_l qui renvoie le


nombre de lignes.

Question1.6: Ajouter les instructions en langage Python permettant de lire un


fichier texte, avec un contrôle d'erreur: L'utilisateur saisit le nom du fichier, la
machine retourne le listing du fichier s'il existe et un message d'erreur s'il n'existe
pas.

Question1.7: Faites les modifications en langage Python tel que le programme


prend en argument sur la ligne de commande le nom d'un fichier, et une lettre (c,m
ou l) et renvoie selon cette lettre soit le nombre de caractères, de mots ou de lignes
du fichier.

Question1.8: Écrivez en langage Python une fonction prenom(f) qui lit le prenom
sur le canal f censé pointer vers exo1.txt, et l'affiche à l'écran. Lancez-la deux fois de
suite dans le shell. Que se passe-t'il ?

Question1.9: Créer une structure nom, prénom, âge. Ecrire les instructions
Python de gestion de fichier (texte) avec menu d'accueil: possibilité de créer le
fichier, de le lire, d'y ajouter une fiche, d'en rechercher une.

Exercice 2 : Fichier matrice binaire

Question2.1: Créer avec votre éditeur un fichier ayant la forme suivante :

la première ligne contient le nombre de lignes d’une matrice binaire, la deuxième ligne son
nombre de colonnes ; les lignes suivantes correspondent aux coefficients binaires.

Dans un programme en langage Python :

Question2.2: Créer un tableau à deux dimensions contenant les coefficients d'une


matrice lue dans un fichier. La matrice sera décrite dans un fichier ayant la forme
décrite ci-dessus :

Page: 1/3
Question2.3: Ajouter les instructions Python qui affiche toutes les combinaisons
linéaires des lignes de cette matrice. Pour énumérer les 2k combinaisons linéaires
des lignes de la matrice à k lignes, on se servira de la méthode suivante utilisant le
code de Gray.

Cet algorithme permet d'énumérer tous les vecteurs de F 2K en ne modifiant qu'une seule
coordonnée à chaque étape. Les vecteurs de F 2K sont représentés par k bits, (g0,...,gk-1).
On ajoute à ce vecteur une composante gk vérifiant à tout moment gk = g0 + g1 + ... + gk-1
mod 2.

Initialisation :

g0 = g1 = ... = gk-1=gk =0 .

A chaque étape :

o Si gk = 0, modifier g0.
o Sinon :
 i  le premier indice tel que gi  0.
 si i != k-1, modifier gi+1.
 si i = k-1, modifier gk-1.

Remettre à jour gk.

Ainsi, les vecteurs de F22 seront énumérés dans l'ordre suivant : (0,0) - (1,0) - (1,1) - (0,1)

On peut utiliser cette méthode pour énumérer toutes les combinaisons linéaires de
k lignes. L'indice de la coordonnée à modifier à chaque étape de l'algorithme précédent
correspond à l'indice de la ligne à ajouter à la combinaison linéaire précédente. Par
exemple, pour k=2, on énumérera les combinaisons linéaires dans l'ordre suivant :
vecteur nul, ligne 1, ligne 1 + ligne 2 , ligne 2.

Exercice 3 : Fichier d’impression

L’impression des documents nécessite une gestion de la part du logiciel


d’impression pour passer cette opération dans l’ordre souhaité. Ce logiciel
d’impression utilise le principe d’une file d’attente ; ainsi le premier document lancé
en impression sera le premier imprimé et ainsi de suite. La fenêtre suivante
montre qu’un document dans la file attend son impression ou bien il sera supprimé au
cas d’échec.

Page: 2/3
On va programmer en langage Python une méthode pour l’impression de
plusieurs documents. Chaque document lancé en impression possède les informations
suivantes :

- Le nom du document

- L’état du document (impression ou attente)

- Le nombre de pages du document

- La taille du document (en Ko)

La file d’attente d’impression sera enregistrée dans un fichier texte qu’on


va nommer « FichierImpression.txt ». Le premier document de la file sera en
cours d’impression et le reste des documents sera en attente. Une fois qu’on
imprime un document, on le supprime de la file et c’est le document suivant de la
file qui devient en cours d’impression.

Question3.1: Définir le type « docImprime » (class docImprime) de telle façon


qu’elle puisse contenir les informations concernant un document lancé en
impression.

Question3.2: Créer une file d’attente (FileImp) qui permettra de mémoriser


tous les documents qui sont en attente d’impression.

Question3.3: Ecrire une fonction d’en-tête LancerImpression(L) qui permet


d’ajouter un document dans la file d’attente d’impression.

Question3.4: Ecrire une fonction qui permet de supprimer de la file


d’attente un document qui vient d’être imprimé. La fonction aura l’en-tête
ImpressionTerminee(L).

Question3.5: Ecrire une fonction EcritureFichier(F) qui permet d’écrire les


données concernant les documents en attente d’impression dans un fichier «
FichierImpression.txt ».

Question3.6: Ecrire une fonction LectureFichier(F) qui permet de lire les données

du fichier « FichierImpression.txt » et de les afficher sur sortie standard.

Page: 3/3