Laporte S. Les fichiers séquentiels DAIGL BTS 1 IG 1 Chap 8: Les fichiers séque

Laporte S. Les fichiers séquentiels DAIGL BTS 1 IG 1 Chap 8: Les fichiers séquentiels I. Généralités sur les fichiers Toutes les informations que nous avons jusqu'à présent traitées étaient saisies à partir du clavier et stockées en mémoire (la RAM). Or la mémoire centrale est volatile : les informations qui y sont stockées sont détruites à la fin de l'exécution du programme et ne peuvent donc pas être réutilisées ultérieurement. A la fin de l'exécution du programme, il ne reste aucune trace de cette exécution et des résultats générés. Par ailleurs, la mémoire centrale a l'inconvénient d'être bien plus chère que la mémoire non volatile des disques durs, disquettes ou bandes magnétiques. La taille de la mémoire centrale est par conséquent très inférieure à la taille de la mémoire non volatile. Pour mémoriser de gros volumes d'information, la mémoire centrale ne suffit pas. Ainsi, dans la plupart des applications d'entreprises pour lesquelles un gros volume d'informations doit être mémorisé plus longtemps que la durée de vie du programme, les informations sont récupérées et mémorisées sur un support non volatile (disques, disquettes, bandes magnétiques…). Les informations y sont enregistrées de manière permanente dans des fichiers. Les informations ne sont plus seulement communiquées via le clavier et l'écran, m ais aussi via des fichiers de support non volatiles. Il est alors possible qu'un programme ne communique avec son environnement qu'au travers des fichiers et n'utilise ni la saisie, ni l'affichage. écran mémoire centrale support non volatile fichiers 7 clavier Un fichier est un regroupement d'informations sur un support non volatile tel que le disque Il existe de nombreux types de fichiers, qui différent en outre selon les langages. Nous distinguerons les fichiers de type « texte » et les fichiers structurés. - Les fichiers structurés permettent d’enregistrer des données de même nature. Ils sont composés d’enregistrements (ou articles) contenant les mêmes champs (ou rubrique). Généralement, chaque enregistrement correspond à une ligne, et les rubriques sont séparées par un séparateur qui peut être par exemple un point-virgule (format csv). - Les fichiers non structurés permettent quant à eux d’entasser des informations de natures diverses. Ils ne sont pas obligatoirement structurés en enregistrements, mais ils ne peuvent être lus que de manière séquentielle. Ex : un fichier word. Laporte S. Les fichiers séquentiels DAIGL BTS 1 IG 2 Il existe deux grandes familles de supports pour les fichiers: - les supports adressables, sont capables de fournir l'adresse d'un emplacement de stockage. C'est le cas des disques et les disquettes. Ils permettent un accès direct (non séquentiel) à leur contenu. - les supports non adressables qui ne peuvent être accédés que de manière séquentielle. C'est le cas des bandes magnétiques, qui sont encore utilisées pour stocker les données très volumineuses (les archives) car elles sont peu chères. On appelle mode d'accès à un fichier la façon de retrouver une donnée dans ce fichier. Il existe deux modes d'accès principaux: - l'accès séquentiel: possible sur tous les types de support et avec tous les types de fichiers Pour accéder à un article particulier, on doit avoir parcouru tous les articles précédents sur le support. - l'accès direct: possible seulement sur support adressable avec des fichiers structurés On peut se positionner directement sur l'enregistrement voulu à partir de son emplacement sur le support (ou à partir d’une clé). Un fichier à accès direct peut être vu en quelque sorte comme un énorme tableau stocké sur support non volatile. II. Les fichiers à accès séquentiel Un fichier séquentiel est un fichier dont les données ne sont accessibles que de manière consécutive sur le support. Leur accès est donc séquentiel. Contrairement aux éléments d'un tableau ou aux champs d'un enregistrement, les données d'un fichier séquentiel ne sont pas accessibles directement, ni par un indice, ni par un nom. Pour accéder à un enregistrement particulier, il faut parcourir le fichier séquentiel depuis le début jusqu'à trouver l'enregistrement recherché. On peut se représenter un fichier séquentiel comme une bande de papier contenant des articles cotes à cotes. Cette bande défile sous une tête de lecture qui ne peut lire qu’un seul article à la fois. Pour accéder à un article, on est obligé de positionner la tête de lecture sur cet article, en faisant défiler la bande en dessous. Benth Djaneh A. Déclaration Dans un programme, un fichier est désigné par une variable, qu'on déclare dans la section des variables1. Pour déclarer un fichier séquentiel structuré, il faut indiquer le type des articles (enregistrements) qui composent ce fichier. Le plus souvent les articles sont de type enregistrement, déclaré au préalable. Var: nom_fichier : fichier séquentiel de type_articles 1 C'est une variable particulière qui ne représente pas un espace de la mémoire mais qui représente un espace dans un périphérique de stockage. sens du défilement Tête de lecture Laporte S. Les fichiers séquentiels DAIGL BTS 1 IG 3 ex: Type temployé = enregistrement nom: chaine prénom: chaine fonction: chaine salaire: entier finenreg Var personnel: fichier séquentiel de temployé Remarque : Les fichiers texte sont aussi des fichiers à accès séquentiel. On ne déclare pas de type pour leurs données, car par définition les données d’un fichier texte peuvent être de nature différente. Nous n’étudierons pas ce type de fichier en algo. B. Ouverture et fermeture Comme un fichier ne se trouve pas en mémoire centrale (mais en périphérique), il n'est pas accessible directement par le programme (seule la mémoire centrale est accessible directement). Il est nécessaire de l'ouvrir avant de pouvoir l'utiliser2. L'ouverture permet la réservation d'une mémoire tampon en mémoire centrale pour les échanges entre le disque et la mémoire centrale 3. Il existe 4 modes principaux d'ouverture d'un fichier: - en lecture pour récupérer des données du fichier dans des variables de la mémoire centrale - en écriture pour créer un ficher dans lequel enregistrer des résultats. Si fichier existe déjà, son ancien contenu est détruit - en mode ajout pour pouvoir ajouter des articles à la fin d'un fichier déjà existant (dans un fichier séquentiel, il est impossible d'ajouter un article ailleurs qu'à la fin) Ouvrir nom_fichier en mode_ouverture ex: Ouvrir personnel en lecture Après utilisation, un fichier doit être fermé, de façon à libérer la mémoire tampon allouée lors de l'ouverture et ainsi enregistrer les dernières données du tampon non encore transférées. Fermer nom_fichier Remarque : Dans les fichiers à accès direct, il existe un autre mode d’ouverture : le mode mise à jour. Il permet de modifier un article existant, ou même d’ajouter un nouvel article au milieu du fichier. Ces opérations sont impossibles directement avec les fichiers à organisation séquentielle. C. Lecture et Ecriture La communication entre la mémoire centrale et le fichier peut se faire dans les deux sens: Ø de la mémoire au fichier : c'est l'écriture Ø ou du fichier vers la mémoire : c'est la lecture 2 L'ouverture permet d'effectuer la liaison entre le fichier logique (la variable du programme) et le fichier physique manipulé par le système d'exploitation. En programmation, notamment en C++, c'est à l'ouverture qu'on indique à quel fichier physique correspond le fichier logique. 3 Les transferts d'articles entre le support et la mémoire s'effectuent par blocs. Un bloc est l'ensemble des octets transférés par le système d'exploitation lors d'une opération d'entrée-sortie. Laporte S. Les fichiers séquentiels DAIGL BTS 1 IG 4 En algorithmique, toute opération de communication (écriture ou lecture) s'effectue sur un article entier, et se fait par l'intermédiaire d’une variable enregistrement en mémoire centrale (le plus souvent un enregistrement). ECRITURE: ENREGISTREMENT EN RAM copie ARTICLE DU FICHIER LECTURE: ARTICLE DU FICHIER copie ENREGISTREMENT EN RAM " Application: Supposons que le clavier et l'écran soient comme des fichiers. A quoi correspondent les instructions Saisir et Afficher: lecture ou écriture? - SAISIR ~ Lecture - AFFICHER ~ Ecriture Ø LIRE L'instruction Lire permet de transférer des articles d'un fichier existant dans une (ou plusieurs) variable du programme. La variable lue doit obligatoirement être de même structure (c'est-à-dire du même type) que les articles du fichier. Le fichier lu doit obligatoirement exister. Si un seul fichier est ouvert, on peut omettre d'indiquer le nom du fichier sur lequel on lit. En revanche, si plusieurs fichiers sont ouverts simultanément, il faut obligatoirement préciser sur quel fichier on lit Lire (nom_fichier, nom_variable) Ou Lire nom_variable s’il n’y a qu’un seul fichier ouvert *la variable est du même type que les articles ex: Recopier dans la variable ouvrier les informations contenues dans l'article suivant /* ouvrier est un enregistrement de type temployé*/ Lire (Personnel, ouvrier) Si on essaye de lire après la fin du fichier, il va y avoir une erreur d'exécution. Pour éviter cela, il existe une fonction booléenne appelée EOF( ) (pour end of file) qui renvoie vrai lorsque la tête de lecture est en face une marque de fin de fichier. Eof ( ) devient Vrai lorsqu'on lit après le dernier article. Si plusieurs fichiers sont ouverts, on passe en paramètre le nom du fichier pour lequel on veut tester la fin. Donc avant toute opération de lecture, uploads/Litterature/ cours-fichier.pdf

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