On dispose d'un fichier texte intitule phrases.txt comportant une suite de phrases. Une ligne de ce fichier contient une seule phrase.
On se propose d'apporter aux phrases de ce fichier les corrections suivantes:
On enlève les espaces en plus pour n'en garder qu'un seul entre deux mots successifs, on enleve eventuellement le ou les espaces au debut et a la fin de chaque phrase, et on ajoute un point final a chaque phrase s'il en manque.
Ensuite, on compte et on affiche le nombre de phrases et de mots de ce fichier ainsi que la moyenne des nombres de mots par phrase.
Exemple :
la phrase : "L'infonnatique est une science " sera corrigee comme suit : " L'infonnatique est une science ." et elle compte 4 mots.
Questions:
Ecrire un programme qui remplit un fichier "phrases.txt" par une suite de phrases puis l'ouvre pour réaliser les actions mentionnées ci-dessus. La correction des ces phrases sera sauvegardée dans un deuxième fichier intitule phr_cor.txt.

Cet algorithme permet de saisir des phrases, de les corriger en supprimant les espaces inutiles, puis de créer un deuxième fichier contenant :
1- la phrase corrigée (avec un seul espace et un point final),
2- le nombre de mots qu’elle contient.
En résumé, il réalise :
- Lecture et enregistrement d’un ensemble de phrases dans un fichier phrases.txt.
- Nettoyage des phrases : suppression des espaces au début, à la fin, des doubles espaces, ajout d’un point final.
- Comptage du nombre de mots dans chaque phrase.
- Écriture d’un fichier corrigé phr_cor.txt contenant la phrase propre + le nombre de mots.
Dans cet algorithme, On va utiliser deux fonctions et deux procédures :

|
1 2 3 4 5 |
Algorithme conversion_nombres Debut remplir_fichier_phrases() remplir_fichier_ph_cor() Fin |
Cette fonction sert à corriger et nettoyer une phrase en supprimant tous les espaces inutiles et en s’assurant qu’elle se termine correctement.
Plus précisément, elle :
- supprime les espaces au début de la chaîne.
- supprime les espaces à la fin de la chaîne.
- remplace tous les doubles espaces par un seul espace à l’intérieur de la phrase.
- ajoute un point final si la phrase ne se termine pas déjà par un « . ».
- Elle retourne ensuite la phrase propre et bien formatée.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
Fonction supprimer_espaces(ch:chaine): chaine def supprimer_espaces(ch) : # Supprimer tous les espaces au début de la chaîne tant que (ch[0] = ' ') faire ch <- Sous_chaine(ch, 1, long(ch)) fin tant que # Supprimer tous les espaces à la fin de la chaîne Tant que (ch[long(ch)-1] == ' ') faire ch <- Sous_chaine(ch, 0, long(ch)-1) fin tant que # Remplacer tous les doubles espaces par un seul Tant que (Pos(ch, ' ') > 0) faire ch <- ch.remplacer(" ", " ") fin tant que # Ajouter un point final si la phrase n’en contient pas Si ch[long(ch)-1] != '.' alors ch <- ch + '.' Fin si retourner ch fin |
Cette fonction sert à compter le nombre de mots dans une chaîne de caractères (une phrase).
Comment elle fonctionne ?
Elle parcourt la phrase caractère par caractère.
Chaque fois qu’elle rencontre :
un espace → cela signifie qu’un mot vient de se terminer ;
la fin de la phrase → cela signifie que le dernier mot est terminé.
À chaque fin de mot détectée, il augmente le compteur nbr.
À la fin, il retourne le nombre total de mots contenus dans la phrase.
|
1 2 3 4 5 6 7 8 9 10 11 12 |
fonction nbr_mots(ch:chaine):entier nbr <- 0 i <- 0 # Parcourir toute la chaîne caractère par caractère Pour i de 0 à long(ch) faire # Si on rencontre un espace ou la fin de la phrase → un mot terminé Si ch[i] = ' ' ou i = long(ch)-1 alors nbr <- nbr + 1 Finsi Fin pour retourner nbr fin |
Déclaration des objets
| Objet | Type / Nature |
|---|---|
| nbr | entier |
| i | entier |
Cette procédure permet de créer un fichier contenant plusieurs phrases saisies par l’utilisateur.
Plus précisément, elle :
1- demande à l’utilisateur combien de phrases il veut ajouter.
2- ouvre (ou crée) le fichier phrases.txt en mode écriture.
3- demande à l’utilisateur de saisir chaque phrase.
4- écrit chaque phrase dans le fichier, une par ligne.
|
1 2 3 4 5 6 7 8 9 10 11 |
Procédure remplir_fichier_phrases(): Ecrire('donner le nombre de phrases a ajouter: ') lire(n) Ouvrir("phrases.txt", f , "w") # Ouverture du fichier en écriture (création si n'existe pas) pour i de 0 à n-1 faire écrire('donner une phrase :') lire(phrase) Ecrire(f , phrase + '\n') # écrire chaque phrase sur une ligne fin pour fermer(f) fin |
Déclaration des objets
| Objet | Type / Nature |
|---|---|
| n | entier |
| f | fichier du phrase.txt |
| i | entier |
| phrase | chaine |
Cette procédure sert à créer un fichier contenant les phrases corrigées, accompagnées du nombre de mots dans chacune d’elles.
Plus précisément, elle réalise les actions suivantes :
1- Ouvre le fichier phrases.txt en lecture, qui contient les phrases saisies par l’utilisateur.
2- Ouvre le fichier phr_cor.txt en écriture, qui va contenir les phrases corrigées.
3- Lit toutes les phrases du fichier source.
Pour chaque phrase :
- Elle enlève le retour à la ligne \n.
- Elle applique la fonction supprimer_espaces() pour corriger la phrase (supprimer les espaces inutiles, ajouter un point…).
- Elle comptabilise le nombre de mots dans la phrase corrigée grâce à nbr_mots().
-Elle écrit dans phr_cor.txt : la phrase corrigée entre guillemets, suivie d’un message indiquant combien de mots elle contient.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
Procédure remplir_fichier_ph_cor():: Ouvrir("phrases.txt", f_phrases , "r") # Ouvrir le fichier source en lecture Ouvrir("phr_cor.txt", f_phr_cor , "w") # Fichier de sortie en écriture Lire ( f_phrases , phrases ) # Lecture de toutes les lignes Pour phrase dans phrases faire # Parcourir les lignes du fichier nombre.dat # Supprimer le retour à la ligne \n avant traitement phrase_corrigee = supprimer_espaces(phrase)) # Écrire la phrase corrigée + le nombre de mots Ecrire(f_phr_cor, "\"" + phrase_corrigee + "\"" + ' et elle compte ' + Convch(nbr_mots(phrase_corrigee)) + ' mots.\n' fin pour fermer(f_phrases) fermer(f_phr_cor) fin |
Déclaration des objets
| Objet | Type / Nature |
|---|---|
| f_phrases | fichier du phrases.txt |
| f_phr_cor | fichier du phr_cor.txt |
| phrases | chaine |
| phrase | chaine |
| phrase_corrigee | chaine |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
# Fonction qui supprime les espaces inutiles dans une chaîne def supprimer_espaces(ch) : # Supprimer tous les espaces au début de la chaîne while(ch[0] == ' '): ch = ch[1:len(ch)] # Supprimer tous les espaces à la fin de la chaîne while(ch[len(ch)-1] == ' '): ch = ch[0:len(ch)-1] # Remplacer tous les doubles espaces par un seul while (ch.find(' ') > 0): ch = ch.replace(" ", " ") # Ajouter un point final si la phrase n’en contient pas if ch[len(ch)-1] != '.' : ch = ch + '.' return ch # Fonction qui calcule le nombre de mots dans une chaîne def nbr_mots(ch): nbr = 0 i = 0 # Parcourir toute la chaîne caractère par caractère for i in range(len(ch)) : # Si on rencontre un espace ou la fin de la phrase → un mot terminé if ch[i] == ' ' or i == len(ch)-1 : nbr = nbr + 1 return nbr # Fonction pour remplir le fichier phrases.txt avec N phrases saisies par l'utilisateur def remplir_fichier_phrases(): n = int(input('donner le nombre de phrases a ajouter: ')) # Ouverture du fichier en écriture (création si n'existe pas) f = open("phrases.txt", "w") for i in range(n) : phrase = input('donner une phrase: ') f.write(phrase + '\n') # écrire chaque phrase sur une ligne f.close() # Fonction pour créer le fichier corrigé contenant : # - la phrase nettoyée # - le nombre de mots def remplir_fichier_ph_cor(): # Ouvrir le fichier source en lecture f_phrases = open("phrases.txt", "r") # Fichier de sortie en écriture f_phr_cor = open("phr_cor.txt", "w") # Lire toutes les phrases dans une liste phrases = f_phrases.readlines() for phrase in phrases: # Supprimer le retour à la ligne \n avant traitement phrase_corrigee = supprimer_espaces(phrase.rstrip('\n')) # Écrire la phrase corrigée + le nombre de mots f_phr_cor.write( "\"" + phrase_corrigee + "\"" + ' et elle compte ' + str(nbr_mots(phrase_corrigee)) + ' mots.\n' ) # Fermer les fichiers f_phrases.close() f_phr_cor.close() # Programme principal remplir_fichier_phrases() remplir_fichier_ph_cor() |
La robotique éducative joue un rôle important dans l'éducation des enfants et des jeunes en les aidant à acquérir des compétences en science et technologie.
Dans ce cadre notre site web représente une excellente ressource pour les parents, les enseignants et les enfants qui souhaitent découvrir la robotique.
Zaouiet Kontech-Jemmel-Monastir-Tunisie
+216 92 886 231
medaliprof@gmail.com
Site robotique réalisé par Mohamed Ali-Prof Info