đ Fichiers Textes
đ DĂ©finition clĂ© : Un fichier texte est une structure de donnĂ©es persistante stockĂ©e sur une mĂ©moire de masse, composĂ©e dâune suite de caractĂšres organisĂ©s en lignes. Chaque ligne se termine par un caractĂšre spĂ©cial de fin de ligne et son accĂšs est sĂ©quentiel.
đ Ouverture, Fermeture et Modes
| Opération | Déclaration en Algorithme | Déclaration en Python |
|---|---|---|
| Ouvrir / Fermer | Ouvrir(NPh, NL, Mode)Fermer(F) |
NL = open(NPh, Mode)F.close() |
â ïž Modes dâouverture disponibles : "w" (Ăcriture), "r" (Lecture), "a" (Ajout).
âïž Ăcriture et Lecture
| Opération | Algorithme | Python |
|---|---|---|
| Ăcriture | Ecrire(NL, chaine) / Ecrire_nl(NL, chaine) |
NL.write(chaine) / NL.write(chaine + "\n") |
| Lecture | Lire(NL, Variable) / Lire_ligne(NL, Variable) |
Variable = NL.read() / Variable = NL.readline() |
đ Exercice 1 : Programme « Ville »
đ ĂnoncĂ© : Ăcrire lâalgorithme dâun programme nommĂ© « Ville » qui permet de :
- Créer un fichier nommé physiquement
« villes.txt »et logiquementF. - Remplir le fichier
Fpar les noms de N villes non vides (2 †N †20), suivis du caractĂšre#et dâun entier reprĂ©sentant la quantitĂ© de pluie tombĂ©e. - Afficher le contenu du fichier ainsi que le nombre de villes ayant une quantitĂ© â„ 10.
Programme Principal & TDO Globaux (TDOG)
| Nom | Type / Nature |
|---|---|
N |
Entier |
F |
Fichier texte (ou Texte) |
Taille, Remplir, Afficher |
Procédure |
Algorithme :
Algorithme Programmation
Début
Taille(N)
Remplir(F, N)
Afficher(F, N)
Fin
Python :
N = taille()
remplir("villes.txt", N)
afficher("villes.txt", N)
Procédure Taille
| Objet Local (TDOL) | Type / Nature |
|---|---|
Aucun (passage par référence @N) |
â |
Algorithme :
Procédure Taille (@N : entier)
Début
Répéter
Lire (N)
JusquâĂ (2 †N †20)
Fin
Python :
def taille():
N = int(input("Donner N (2<=N<=20) : "))
while not (2 <= N <= 20):
N = int(input("Donner N (2<=N<=20) : "))
return N
Procédure Remplir
| Objet Local (TDOL) | Type / Nature |
|---|---|
i, qte |
Entier |
ch |
Chaine |
Algorithme :
Procédure Remplir (@F : Texte, N : entier)
Début
Ouvrir ("villes.txt", F, "w")
Pour i de 0 Ă N-1 Faire
Répéter
Ecrire ("Ville ", i)
Lire (ch)
JusquâĂ long(ch) â 0
Répéter
Ecrire ("quantité ")
Lire (qte)
JusquâĂ qte â„ 0
Ecrire_nl (F, ch + "#" + convch(qte))
Fin pour
Fermer(F)
Fin
Python :
def remplir(nph, N):
F = open(nph, "w")
for i in range(N):
ch = input(f"Ville {i} : ")
while len(ch) == 0:
ch = input(f"Ville {i} : ")
qte = int(input("Quantité : "))
while qte < 0:
qte = int(input("Quantité : "))
F.write(ch + "#" + str(qte) + "\n")
F.close()
Procédure Afficher
| Objet Local (TDOL) | Type / Nature |
|---|---|
i, Nb |
Entier |
ch, X |
Chaine |
Algorithme :
Procédure Afficher (@F : Texte, N : entier)
Début
Ouvrir ("villes.txt", F, "r")
Nb â 0
Pour i de 0 Ă N-1 Faire
Lire_ligne(F, ch)
X â souschaine(ch, pos('#', ch) + 1, long(ch))
Si valeur(X) â„ 10 Alors
Nb â Nb + 1
Fin si
Ecrire (ch)
Fin pour
Ecrire("Le nombre de villes est ", Nb)
Fermer(F)
Fin
Python :
def afficher(nph, N):
F = open(nph, "r")
nb = 0
for i in range(N):
ch = F.readline()
if len(ch) > 0 and ch[len(ch)-1] == '\n':
ch = ch[:len(ch)-1]
pos_hash = ch.find('#')
if pos_hash != -1:
x = ch[pos_hash+1:]
if int(x) >= 10:
nb += 1
print(ch)
print("Le nombre de villes est :", nb)
F.close()
đ Exercice 2 : Remplir un fichier depuis une Matrice
đ ĂnoncĂ© : Ăcrire lâalgorithme dâun programme qui permet de :
- Remplir une matrice M par L*C entiers (2 < L < C < 10) comme le montre lâexemple suivant :
| 1 | 2 | 3 | 4 | 5 |
| 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 |
- Copier chaque ligne de la matrice M dans une ligne du fichier texte nommé physiquement
« contenu.txt »en séparant les nombres par un seul espace.
Tableau de Déclaration des Objets Globaux (TDO Globaux) & TDNT
| Nom / Objet | Type / Nature |
|---|---|
Mat (TDNT) |
Tableau de 9 lignes * 9 colonnes dâentiers |
NPH |
Chaine |
M |
Mat |
L, C |
Entier |
RemplirM, RemplirF |
Procédure |
Programme Principal
Algorithme :
Algorithme Programmation
Début
NPH â "contenu.txt"
RemplirM(L, C, M)
RemplirF(L, C, M, NPH)
Fin
Python :
nph = "contenu.txt"
remplir_m(L,C,M)
remplir_f(L, C, M, nph)
Procédure RemplirM
| Objet Local (TDOL) | Type / Nature |
|---|---|
i, j, k |
Entier |
Algorithme :
Procédure RemplirM(@L, C : Entier, @M : Mat)
Début
Répéter
Lire (L)
Lire (C)
JusquâĂ (2 < L < 10) Et (L < C < 10)
K â 1
Pour i de 0 Ă L-1 Faire
Pour j de 0 Ă C-1 Faire
M[i,j] â k
K â K + 1
Fin pour
Fin pour
Fin
Python :
def remplir_m():
L = int(input("Donner L (2 < L < 10) : "))
C = int(input("Donner C (L < C < 10) : "))
while not (2 < L < 10 and L < C < 10):
L = int(input("Donner L (2 < L < 10) : "))
C = int(input("Donner C (L < C < 10) : "))
M = [[0]*9 for _ in range(9)]
k = 1
for i in range(L):
for j in range(C):
M[i][j] = k
k += 1
return L, C, M
Procédure RemplirF
| Objet Local (TDOL) | Type / Nature |
|---|---|
i, j |
Entier |
ch |
Chaine |
F |
Fichier texte |
Algorithme :
Procédure RemplirF(L, C : Entier, M : Mat, NPH : chaßne)
Début
Ouvrir (NPH, F, "w")
Pour i de 0 Ă L-1 Faire
ch â ""
Pour j de 0 Ă C-1 Faire
ch â ch + convch(M[i,j]) + " "
Fin pour
Ecrire_nl (F, souschaine(ch, 0, long(ch)-1))
Fin pour
Fermer(F)
Fin
Python :
def remplir_f(L, C, M, nph):
F = open(nph, "w")
for i in range(L):
ch = ""
for j in range(C):
ch += str(M[i][j]) + " "
if len(ch) > 0:
ch = ch[:len(ch)-1]
F.write(ch + "\n")
F.close()
đ Exercice 3 : Programme « eleve »
đ ĂnoncĂ© : Ăcrire lâalgorithme dâun programme nommĂ© « eleve » qui permet de :
- Créer un fichier nommé physiquement
« Listeeleve.txt »et logiquementF. - Remplir le fichier
Fpar les prĂ©noms des N Ă©lĂšves (5 †N †50) suivis dâun espace suivi de la moyenne M. - Afficher la liste des Ă©lĂšves admis (moyenne â„ 10).
- Afficher le nombre des élÚves admis.
Programme Principal & TDO Globaux (TDOG)
| Nom | Type / Nature |
|---|---|
N |
Entier |
F |
Fichier texte (ou Texte) |
Taille, Remplir, AfficherAdmis |
Procédure |
Algorithme :
Algorithme eleve
Début
Taille(N)
Remplir(F, N)
AfficherAdmis(F, N)
Fin
Python :
N = taille()
remplir("Listeeleve.txt", N)
afficher_admis("Listeeleve.txt", N)
Procédure Taille
| Objet Local (TDOL) | Type / Nature |
|---|---|
Aucun (passage par référence @N) |
â |
Algorithme :
Procédure Taille (@N : entier)
Début
Répéter
Lire (N)
JusquâĂ (5 †N †50)
Fin
Python :
def taille():
N = int(input("Donner N (5<=N<=50) : "))
while not (5 <= N <= 50):
N = int(input("Donner N (5<=N<=50) : "))
return N
Procédure Remplir
| Objet Local (TDOL) | Type / Nature |
|---|---|
i |
Entier |
prenom |
Chaine |
moy |
Réel |
Algorithme :
Procédure Remplir (@F : Texte, N : entier)
Début
Ouvrir ("Listeeleve.txt", F, "w")
Pour i de 0 Ă N-1 Faire
Répéter
Ecrire ("Prénom élÚve ", i)
Lire (prenom)
JusquâĂ long(prenom) â 0
Répéter
Ecrire ("Moyenne : ")
Lire (moy)
JusquâĂ (moy â„ 0) Et (moy †20)
Ecrire_nl (F, prenom + " " + convch(moy))
Fin pour
Fermer(F)
Fin
Python :
def remplir(nph, N):
F = open(nph, "w")
for i in range(N):
prenom = input(f"Prénom élÚve {i} : ")
while len(prenom) == 0:
prenom = input(f"Prénom élÚve {i} : ")
moy = float(input("Moyenne : "))
while not (0 <= moy <= 20):
moy = float(input("Moyenne : "))
F.write(prenom + " " + str(moy) + "\n")
F.close()
Procédure AfficherAdmis
| Objet Local (TDOL) | Type / Nature |
|---|---|
i, nb |
Entier |
ch, p |
Chaine |
m |
Réel |
Algorithme :
Procédure AfficherAdmis (@F : Texte, N : entier)
Début
Ouvrir ("Listeeleve.txt", F, "r")
nb â 0
Ecrire("--- Liste des élÚves admis ---")
Pour i de 0 Ă N-1 Faire
Lire_ligne(F, ch)
// Extraction du prénom et de la moyenne séparés par un espace
p â souschaine(ch, 0, pos(' ', ch) - 1)
m â valeur(souschaine(ch, pos(' ', ch) + 1, long(ch)))
Si m â„ 10 Alors
nb â nb + 1
Ecrire (p, " - Moyenne : ", m)
Fin si
Fin pour
Ecrire("Nombre total d'élÚves admis : ", nb)
Fermer(F)
Fin
Python :
def afficher_admis(nph, N):
F = open(nph, "r")
nb = 0
print("--- Liste des élÚves admis ---")
for i in range(N):
ch = F.readline()
if len(ch) > 0 and ch[len(ch)-1] == '\n':
ch = ch[:len(ch)-1]
pos_esp = ch.find(' ')
if pos_esp != -1:
p = ch[:pos_esp]
m = float(ch[pos_esp+1:])
if m >= 10:
nb += 1
print(p, "- Moyenne :", m)
print("Nombre total d'élÚves admis :", nb)
F.close()