Prof :SLIMANI Akram 4SI - Programmation Les Fichiers 1- Présentation du problèm

Prof :SLIMANI Akram 4SI - Programmation Les Fichiers 1- Présentation du problème Les structures de données utilisées jusqu’à présent (………………………………………………… …………………………………………………………..) ne peuvent pas garder les données de façon permanente c’est-à-dire une fois on redémarre l’ordinateur les données seront ……………………… Pour garder les données de façon permanente, il faut utiliser une nouvelle structure qui s’appelle …………………………………… 2- Définition : Un Fichier Un Fichier est un ensemble d'informations enregistrées sur un support physique (disquette, disque dur, etc.) Est une structure de données pouvant sauvegarder les données de façon permanente (≠temporaire). 1 ;En programmation, on distingue deux types de fichiers : • Les fichiers ………textes……………………………….. • Les fichiers …………typés(binaires)…………………………….. 2. Un fichier possède deux noms : un nom …logique………………… et un nom physique…………………….. 3. Chaque fichier doit être enregistré sur un support de stockage physique (disque dur, flash, …) 3- Les fichiers texte : 3.1 / Déclaration algorithmique d’un fichier texte: En algorithmique Tableau de Déclaration des Objets Objet Type / nature Nom_logique Texte 3.2 / Commandes de manipulation d’un fichier texte: • Ouverture : Exemple TDO Objet Type / nature F Texte Mode d’ouverture : • "r" : Ouverture d'un fichier texte en lecture seulement(read only) • "w" : Ouverture d'un fichier texte en écriture (write).si le fichier existe déjà, il sera écrasé. sinon sera crée. • "a" : Ajouter des donnés (append), càd ouvrir en écriture à la fin du fichier. le fichier est crée s'il n'existe pas. En algorithmique En python Ouvrir("chemin\nom_physique", nom_logique,"mode") nom_logique=open(" chemin\nom_physique ", "mode") Exemple : Exemple : Ouvrir("travail.txt", F ,"w") f=open(("travail.txt",f,"w") • Fermeture : En algorithmique En python Fermer(nom_logique) nom_logique.close() Exemple : Fermer(f) Exemple :f.close() …………………………….. 1 Prof : A SLIMANI 4SI - Programmation • Lecture : En algorithmique En python Lire (nom_logique, ch) ch=nom_logique.read() Exemple : Exemple : Lire(F, ch) Lecture de la totalité d’un fichier En algorithmique En python Lire_ligne (nom_logique, ch) ch=nom_logique.readline() Exemple : Exemple : Lire_ligne(F, ch) …………………..……………………………… Lecture d’une seule ligne du fichier et placer le curseur sur la ligne suivante • Ecriture : En algorithmique En python Ecrire (nom_logique, ch) nom_logique.write(ch) Exemple : Exemple : Ecriture de la chaine ch sans retour à la ligne Ecrire(F, ch) F.write(ch) Ecriture de la chaine ch puis retour à la ligne F.write(ch + "\n") Après la lecture ou l’écriture d’une ligne le pointeur interne (curseur) du fichier …………….…. automatiquement vers la ligne suivante. • Test de Fin de fichier : Retourne Vrai si le pointeur est à la fin du fichier sinon elle retourne Faux. En algorithmique En python Fin_fichier (nom_logique,) Exemple : Pas de correspondance Fin_fichier(F) 2 Prof : A SLIMANI 4SI - Programmation Algorithmique Rôle Python Ouvrir("Chemin\ Nom_physique", Nom_logique , "Mode") Exp: Ouvrir("fich.txt", F , "wt") Ouverture d’un fichier  Mode d’ouverture : o "r" : Lecture o "w" : Ecriture (création) o "a" : Ecriture à la fin du fichier F= open("fich.txt","wt") Lire (Nom_logique, ch) Exp: Lire (F, ch) Lecture de la totalité d’un fichier var= f.read() Lire_ligne (Nom_logique, ch) Exp: Lire_ligne (F, ch) Lecture d’une ligne depuis un fichier texte var = f.readline() Ecrire (Nom_logique, ch) Exp: Ecrire (F, ch) Ecriture dans un fichier texte f.write(Objet+"\n") Fin_fichier (Nom_logique) Exp: Tantque non Fin_fichier (F) faire Traitement FinTantque Retourne Vrai si le pointeur est à la fin du fichier sinon elle retourne Faux var= f.readline() while var != "" : traitement var= f.readline() Fermer (Nom_logique) Exp: Fermer (F) Fermeture d’un fichier f. .close() Application1 : 1- Ecrire un programme en algorithme et en python qui per permet de lire le nom, le prénom, la classe et la note de DS de cinq étudiants et les enregistrer dans un fichier texte nommé notes.txt dans le répertoire courant. 2- Écrire un programme python qui permet d'afficher le contenu de fichier notes.txt selon la forme ci- dessus. donner plus de solutions. Solution algorithmique : Algorithme app1 Debut N=5 Remplir(f,n) Affiher(f) Fin procédure remplir(@f :texte ; n :entier) début ouvrir("notes.txt",f,"wt") pour i e 0 à n-1 faire écrire("eleve",i+1,":") écrire ("le nom:") lire(nom) T.D.O.L objet Type/nature i nom prénom classe note entier chaine chaine chaine réel T.D.O. G objet Type/nature N F Remplir affiher entier texte procédure procédure écrire ("le prenom:") lire(prénom) écrire ("la classe:") lire(classe) écrire ("la note de DS :") lire(note) fin pour écrire (f,nom+" "+prenom+" "+classe+ " " +convch(note) +"\n") fermer(f) fin Procédure afficher(f :texte): debut ouvrir("notes.txt",f,"rt") écrire("nom prenom classe note") lire(f,h) erire(h) fermer(f) fin T.D.O.L objet Type/nature h chaine Solution python: 1) Question1 : def remplir(n): f=open("notes.txt","wt") for i in range(n): print("eleve",i+1,":") nom=input("le nom:") prenom=input("le prenom:") classe=input("la classe:") note=float(input("la note de DS :")) f.write(nom+" "+prenom+" "+classe+" "+str(note)+"\n") f.close() return f n=5 f=remplir(n) 2) Question 2 : def affiher(f): f=open("notes.txt","rt") print("nom prenom classe note") h=f.readline() while h!="": print(h) h=f.readline() f.close() affiher(f) def affiher(f): f=open("notes.txt","rt") print("nom prenom classe note") h=f.read () print(h) f.close() affiher(f) def affiher(f): f=open("notes.txt","rt") print("nom prenom classe note") for h in f: print(h) f.close() affiher(f) Application2 : Écrire un programme qui permet :  Remplir un fichier « Fnom.txt » par les noms des élèves, un nom commence par lettre majuscule suivit par es lettres minuscules. L’arrêt de remplissage se fait par la réponse par « N » de la question « ajouter ? »  Saisir une lettre majuscule puis calculer et afficher le nombre des élèves dont le nom se commence par le caractère saisi Afficher le fichier. Solution algorithmique : Algorithme app2 Debut Remplir(f) Xsaisir() print("le nombre des élèves dont le nom se commence par",x, calcul(x)) afficher(f) Fin T.D.O.G Objet Type/nature x F Remplir saisir afficher calcul caractère texte procédure procédure procédure fonction fonction saisir() : caractere début répéter ecrire("donner une lettre majuscule:") lire(x) jusqu’à x €["A".."Z"] fin procédure remplir (@f :texte ) début ouvrir("Fnom.txt",f,"wt") répéter répéter ecrire("le nom:") lire(nom) jusqu’à verif(nom) ecrire(f,nom+"\n") écrire ("Ajouter? ") lire(rep) jusqu’à rep= ‘’N’’ fermer(f) fin fin T.D.O.L objet Type/nature nom vérif rep chaine fonction chaine fontionverif(ch :chaine):booléen début test←vrai pour i de 1 à long(ch)-1 faire si non(ch [i] € ['a'..'z'] alors test ← faux fin si retourner test et ch [0]€ ['A'..'Z'] fin T.D.O.L objet Type/nature Test i Booléen entier fonction calcul (f :texte; x :caractere ): entier début ouvrir("Fnom.txt",f,"rt") Lire_ligne (f, h) nb←0 tant que h≠"" faire si h[0]=x alors nb=nb+1 fin si Lire_ligne (f, h) Fin tant que Fermer(f) Retourner(nb) fin T.D.O.L objet Type/nature h nb Chaine entier Procédure afficher (f :texte) debut ouvrir("Fnom.txt",f,"rt") écrire("la liste des noms") lire(f,h) écrire(h) fermer(f) fin T.D.O.L objet Type/nature h chaine Solution Python: def verif(x): test=True for i in range(1,len(x)): if not('a'<=x[i]<='z'): test =False return test and 'A'<=x[0]<='Z' def remplir(): f=open("Fnom.txt","wt") rep='' while rep.upper()!="N": while 1: nom=input("le nom:") if verif(nom): break f.write(nom+"\n") rep=input("Ajouter? ") f.close() return f def calcul(f,x): f=open("Fnom.txt","rt") h=f.readline() nb=0 while h!="": if h[0]==x: nb+=1 h=f.readline() f.close() return nb def saisir(): while 1: x=input("donner une lettre majuscule: ") if 'A'<=x<='Z': break return x def affiher(f): f=open("Fnom.txt","rt") print("La liste des noms:") h=f.read() print(h) f.close() f=remplir() x=saisir() print("le nombre des élèves dont le nom se commence par",x,calcul(f,x)) affiher(f) Application3 : On désire faire un programme intitulé PALINDROME qui permet de: 1. Remplir « mots.txt » par N chaines de caractères à raison d‘une chaine par ligne (avec 3<N<20). Sachant que chaque chaine de caractères doit être non vide, de longueur maximale égale à 15 et formée uniquement par des lettres alphabétiques. 2. Afficher tous les chaines palindromes qui se trouvent dans le fichier mots.txt Exemple de chaines palindromes : RADAR, AzizA, 20+02, …. Solution algorithmique : Algorithme PALINDROME Debut saisir(n) Remplir(f,n) afficher(f) Fin T.D.O.G Objet Type/nature n F saisir Remplir afficher entier texte procédure procédure procédure procédure saisir(@x:entier) début répéter ecrire("donner un entier:") lire(x) jusqu’à x € [4..19] fin procédure remplir (@f :texte, n :entier ) début ouvrir ("mots.txt ",f,"wt") pour i de 0 à n-1 faire répéter ecrire("donner une chaine :") lire(h) jusqu’à verif(h) ecrire(f, h+"\n") fin pour fermer(f) fin T.D.O.L objet Type/nature i H vérif entier chaine fonction fontion verif( x:chaine):booléen début test←vrai pour i de 0 à long(x)-1 faire si non(majus(x[i]) € ['’A’'..’'Z’'] alors test ← faux fin si retourner test et long(x)€ [1..15] fin T.D.O.L objet Type/nature Test i Booléen entier Procédure afficher (f :texte) debut ouvrir("mots.txt ",f,"rt") Lire_ligne (f, h) tant que h≠"" faire si palindrome(h) alors ecrire(h) fin si Lire_ligne (f, h) Fin tant que Fermer(f) fin T.D.O.L objet Type/nature h palindrome Chaine fonction fonction palindrome (x :chaine ): booléen début h←"" pour i de 0 à long(x)-2 faire h←h+x[i] fin pour retourner (h=x) fin T.D.O.L objet Type/nature h i chaine entier Solution Python: Exercice 1 (Création, remplissage et affichage du fichier texte) On demande de faire l’algorithme d’un programme nommé Zoo qui permet de : • Créer un fichier nommé physiquement « animaux.txt » et logiquement F • Remplir le fichier F par les noms de N animal sachant que 2<N<30 à raison d’un animal par ligne. • Afficher à l’écran le contenu du fichier. (Le nom de chaque animal sur une ligne) Travail demandé: 1- Faire l’algorithme du programme principal. 2- Faire les algorithmes des modules envisagés. 3- Traduire votre programme en Python. 1- Lorsque les opérations sur un fichier sont terminées, il uploads/Philosophie/ 4si-les-fichiers.pdf

  • 47
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager