Moteur de recherche – Bac théorique – Section informatique – 2017

Bac Info 09-01-26
22 0

Sujet (Algo et programmation - Bac 2017)

On se propose de réaliser un moteur de recherche local permettant de trouver, sur un ordinateur, tous les fichiers textes contenant un ensemble de mots saisis par l'utilisateur.

Pour cela, on dispose d'un fichier texte nommé "Chemin.txt" situé sur la racine du disque C et contenant les chemins d'accès des fichiers textes du disque local de l'ordinateur à raison d'un chemin par ligne, sachant que :

- un chemin d'accès est composé d'au maximum 80 caractères

- le nombre maximum de fichiers texte est égal à 100

Le procédé de recherche consiste à :

- saisir dans un tableau TM les N mots (0 < N < 11) à rechercher. Un mot est formé uniquement par des lettres, - remplir une matrice M par le nombre de lignes, contenant le mot à rechercher, dans chaque fichier tels que M[i][j] = nombre de lignes du fichier G contenant le mot à rechercher TM[i] Où G représente le fichier dont son chemin est indiqué dans la ligne numéro i du fichier "Chemin.txt" - afficher tous les mots à rechercher suivis par les chemins des fichiers qui les contiennent s'ils existent séparés par un espace.

Travail demandé :

1- Analyser le problème en le décomposant en modules.

2- Ecrire un algorithme solution pour chaque module envisagé. Chaque algorithme proposé doit être accompagné d'un tableau de déclaration des objets

 

Solution Algorithmique

Dans cet algorithme, On va utiliser quatre fonctions et cinq procédures:

- la fonction saisie()

- la fonction saisie_chemin()

- la procédure remplir_fichier_source()

- la fonction verif_ch()

- la fonction saisie_mot()

- la procédure remplir()

- la procédure remplir_matrice()

- la procédure afficher_matrice()

- la procédure afficher_resultats()

 

Algorithme du programme Principal

Déclaration des objets

Objet Type / Nature
nbr_lignes entier
n entier
tm tableau des chaînes
m matrice des entiers
tchemins tableau des chaînes

 

La fonction saisie

Cette fonction permet de demander à l’utilisateur de saisir un nombre entier représentant le nombre de lignes, en s’assurant que cette valeur appartient à l'intervalle [inf,sup].

1- Elle lit une valeur entière saisie au clavier.

2- Elle vérifie la validité de cette valeur.

3- Tant que le nombre saisi n’est pas dans l'intervalle [inf, sup], la saisie est redemandée.

4- Elle retourne finalement un entier valide, utilisable comme nombre de lignes du fichier source.

Déclaration des objets

Objet Type / Nature
n entier

 

La fonction saisie_chemin

Cette fonction permet de saisir une chaîne de caractères valide, dont la longueur est comprise entre 1 et 120 caractères.

1- Elle demande à l’utilisateur de saisir une chaîne.

2- Elle vérifie que la longueur de la chaîne respecte l’intervalle autorisé [1,80].

3- Tant que la chaîne est vide ou dépasse 120 caractères, la saisie est redemandée.

4- Elle retourne la chaîne correcte, prête à être utilisée par le programme.

Déclaration des objets

Objet Type / Nature
ch chaîne

 

La procédure remplir_fichier_source

Cette procédure permet de créer et remplir le fichier texte Source.txt avec n lignes de texte saisies par l’utilisateur.

1- Elle ouvre (ou crée) le fichier Chemin.txt en mode écriture.

2- Elle demande à l’utilisateur de saisir n chaînes de caractères, chacune représentant un chemin d'accès d'un fichier.

3- Chaque chaîne saisie est écrite dans le fichier suivie d’un retour à la ligne.

4- Elle ferme le fichier après la fin de l’écriture.

Déclaration des objets

Objet Type / Nature
f fichier
i entier
ch chaîne

 

La fonction verif_ch

Cette fonction permet de tester si une chaîne non vide est constituée uniquement de lettres alphabétiques (majuscule ou minuscule).

1- Si la chaîne est vide, la fonction retourne False.

2- Sinon :

Elle parcourt la chaîne caractère par caractère.

Chaque caractère est converti en majuscule avec la fonction Majus() afin d’accepter les lettres minuscules et majuscules.

Elle vérifie que chaque caractère est compris entre 'A' et 'Z'.

3- La fonction retourne :

Vrai si tous les caractères sont des lettres,

Faux dès qu’un caractère non alphabétique est rencontré.

Déclaration des objets

Objet Type / Nature
i entier

 

La fonction saisie_mot

Cette fonction assure la saisie d’un mot valide, composé uniquement de lettres alphabétiques.

1- La fonction demande à l’utilisateur de saisir un mot.

2- Elle vérifie la validité du mot à l’aide de la fonction verif_ch.

Tant que le mot saisi est vide, ou contient des caractères non alphabétiques

l’utilisateur est invité à ressaisir le mot.

3- Une fois un mot valide saisi, la fonction le retourne.

Déclaration des objets

Objet Type / Nature
ch chaîne

 

La procédure remplir

Cette procédure permet de remplir un tableau avec n mots valides saisis par l’utilisateur, destinés à être recherchés dans des fichiers.

1- La procédure affiche un message indiquant le début du remplissage du tableau.

2- Elle parcourt les n premières cases du tableau tm.

À chaque itération : elle appelle la fonction saisie_mot pour obtenir un mot valide (composé uniquement de lettres), puis stocke ce mot dans le tableau tm.

Déclaration des objets

Objet Type / Nature
i entier

 

La procédure remplir_matrice

Cette procédure permet de remplir une matrice dont chaque élément représente le nombre d’occurrences d’un mot donné dans un fichier donné, à partir d’une liste de fichiers fournie dans Chemin.txt.

La procédure ouvre le fichier Chemin.txt, qui contient la liste des chemins des fichiers à analyser.

Chaque ligne de Chemin.txt correspond à un fichier  et l’indice i représente le numéro du fichier.

Pour chaque fichier :

1- elle lit toutes ses lignes,

2- puis, pour chaque mot recherché t[j] (avec j variant de 0 à n-1),

3- elle vérifie si le mot apparaît dans une ligne à l’aide de find.

4- À chaque occurrence trouvée, la case m[i][j] est incrémentée.

5- À la fin m[i][j] contient le nombre d’occurrences du mot t[j] dans le fichier numéro i.

Déclaration des objets

Objet Type / Nature
f_chemins chaîne
chemins chaîne
i entier
chemin chaîne
nom_fichier chaîne
lignes chaîne
mots chaîne
j chaîne

 

La procédure afficher_matrice

Cette procédure affiche à l’écran les éléments de la matrice de caractères ligne par ligne.

1- Elle parcourt la matrice selon le nombre de lignes l et de colonnes c.

2- Elle affiche chaque élément de la matrice avec un espace entre les éléments.

3- Elle passe à la ligne après l’affichage de chaque ligne de la matrice.

Déclaration des objets

Objet Type / Nature
i entier
j entier

 

La procédure afficher_resultats

Cette procédure permet de remplir une matrice dont chaque élément représente le nombre d’occurrences d’un mot donné dans un fichier donné, à partir d’une liste de fichiers fournie dans Chemin.txt.

La procédure ouvre le fichier Chemin.txt, qui contient la liste des chemins des fichiers à analyser.

Chaque ligne de Chemin.txt correspond à un fichier  et l’indice i représente le numéro du fichier.

Pour chaque fichier :

1- elle lit toutes ses lignes,

2- puis, pour chaque mot recherché t[j] (avec j variant de 0 à n-1),

3- elle vérifie si le mot apparaît dans une ligne à l’aide de find.

4- À chaque occurrence trouvée, la case m[i][j] est incrémentée.

5- À la fin m[i][j] contient le nombre d’occurrences du mot t[j] dans le fichier numéro i.

Déclaration des objets

Objet Type / Nature
f_chemins chaîne
chemins chaîne
i entier
chemin chaîne
j chaîne

 

Solution en Python

Exécution du programme

0 commentaire

laisser un commentaire

Veuillez noter s'il vous plaît*

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Passion de robotique

Atelier robotique

Construction des robots

Bras robotique

Maison intelligente

But de ce site web

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.

Coordonnées

Zaouiet Kontech-Jemmel-Monastir-Tunisie

+216 92 886 231

medaliprof@gmail.com

Photos des articles

Site robotique réalisé par Mohamed Ali Haj Salah - Prof Info