4. Les fichiers à accès indexé
et leurs traitements en pascal


4. Fichiers à accès indexé

4.1 Instructions Pascal/Delphi
4.2 Exercice sur l'accès direct
4.3 Fonctionnement de l'assistant


Retour au thème fichiers


4. Fichiers à accès indexé

'est un mode d'accès semi-direct dans lequel l'on recherche en premier la valeur de la clef dans une table (nommée table d'index), puis ensuite on accède directement à l'enregistrement.

Par rapport à l'accès direct ou nous disposons d'une fonction permettant de calculer immédiatement (directement) la position du pointeur de fichier, dans l'accès indexé la fonction associe généralement par une recherche dans la table d'index une clef avec une valeur de position du pointeur de fichier. C'est pourquoi l'on parle d'adressage associatif.
 



4.1 Instructions Pascal/Delphi

n Pasca/Delphi il n'existe pas de procédure spéciale pour l'accès indexé, il suffir d'utiliser une structure de tableau pour la table d'index, la fonction d'adressage associatif implantera un algorithme de recherche dans cette table (recherche séquentielle, dichotomique si la table est triée, etc...).



4.2 Exercice sur l'accès direct

n propose un fichier de 9 enregistrements sur le disque 'C:\FicheCarac' :

Chaque enregistrement est de taille fixe (comportant 4  caractères), tous les enregistrements ont le même format : XYZT (où X,Y,Z,T est un caractère ASCII quelconque).

Nous nous proposons pour définir une clef d'accès à un enregistrement, d'utiliser le premier caractère de l'enregistrement (ce qui autorise un fichier d'au plus 256 enregistrements). Nous supposons pour limiter l'exemple à peu de valeurs que les caractères ne sont que des lettres  (26 enregistrements au plus). Une clef d'accès sera une chaîne de caractère contenant par exemple en troisième position le même caractère que celui qui est le premier dans l'enregistrement.

Nous décidons que la fonction de conversion de la clef (notée RechercheIndex) est chargée de fournir en pascal à partir du troisième caractère de la clef, le numéro de l'enregistrement et de le passer à la procédure Seek.

Nous construisons une table d'index où par exemple nous mettrons ensembles dans une même cellule abstraite toutes les clefs rencontrées ayant le même troisième caractère, l'autre cellule contiendra le numéro de l'enregistrement associé :

Si nous prenons l'enregistrement suivant 't o i t' de rang 20, les mots bateau, total, site, mythe, sont chacun d'entre eux des clefs permettant d'accéder à ce même enregistrement.


 
 



4.3
Fonctionnement de l'assistant

'assistant permet de simuler la recherche et l'association dans une table d'index par un click de souris dans une case contenant un clef (simulation de la sélection) et surlignage de l'enregistrement associé. Ci-dessous se trouve un détail des icônes de l'interfaces de l'assistant.
 

1°) Soit le programme pascal suivant comprenant une fonction RechercheIndex d'association d'une clef de type string en un entier qui est le rang de l'enregistrement asocié à cette clef  :

travaillant sur le fichier var Fichier : file of  string :

et proposant une table d'index déjà construite :

 

2°) Si vous voulez accéder à un des 9 enregistrements il vous suffit d'effectuer un click simple sur l'une des cases bleues de la table d'index, l'index de la clé se situe dans la case orangée associée et le logiciel vous indique l'enregistrement concerné dans le fichier :

 
 

3°) Afin de tester votre bonne compréhension du mécanisme, l'assistant autorise la saisie d'une nouvelle clef dans une case bleue par  un click simple prolongé sur la case  (ci-dessous, on tente de remplacer la clef  'VYBNHLO' de l'enregistrement n°1 par une clef personnalisée associée à ce même enregistrement) :


 

Si votre clef est correcte, elle est mémorisée et utilisable maintenant dans la table (simple click), dans le cas d'une saisie incorecte l'assistant vous signale que la clef n'est pas du bon type (ci-dessous tentative de changement incorrece de la clef  'VYBNHLO' de l'enregistrement n°1):


l'assistant vous indique comment construire une bonne clef (ici le troisième caractère doit être un 'B')
 
 

L'assistant engendre à chaque fois une configuration totalement différente de la précédente.