You are on page 1of 13

ROYAUME DU MAROC

Office de la Formation Professionnelle et de la Promotion du Travail

Initiation la manipulation de fichiers

DIRECTION RECHERCHE ET INGENIERIE DE FORMATION SECTEUR NTIC

Initiation la manipulation de fichiers

Sommaire
1. 2. 3. 4. 5. Introduction ____________________________________________________________ 2 Un petit peu dhistoire____________________________________________________ 2 Organisation du stockage _________________________________________________ 3 Les diffrentes mthodes daccs ___________________________________________ 5 Les fichiers texte ________________________________________________________ 6
5.1. Les caractristiques du stockage et des enregistrements _________________________ 6
Le codage ASCII ____________________________________________________________ 6 Le codage UNICODE _________________________________________________________ 6 Le stockage _________________________________________________________________ 7 Ouverture __________________________________________________________________ Oprations sur les donnes _____________________________________________________ Fermeture __________________________________________________________________ Tester lexistence du fichier ____________________________________________________ 7 8 8 9 5.1.1. 5.1.2. 5.1.3.

5.2.

La manipulation des donnes _______________________________________________ 7

5.2.1. 5.2.2. 5.2.3. 5.2.4.

6.

Les fichiers accs alatoire ______________________________________________ 9


6.1. 6.2. 6.3. 6.4. 6.5. Les caractristiques du stockage et des enregistrements _________________________ 9 La dfinition dune structure ______________________________________________ 10 Ouverture ______________________________________________________________ 11 Manipulation des donnes ________________________________________________ 11 Fermeture ______________________________________________________________ 12

OFPPT @

Document
C-E-001.doc

Millsime
mars 12

Page 1 - 13

Initiation la manipulation de fichiers

1. Introduction
Ce document prsente dans une premire partie les notions de base relatives aux fichiers, les mthodes daccs et les types de fichiers, puis dans une deuxime partie, les instructions qui nous seront utiles pour manipuler les donnes sous cette forme.

2. Un petit peu dhistoire


Dans les annes 1960, les supports magntiques (disques durs, disquettes, ...) taient encore trs chers. D'autres supports taient alors utiliss pour stocker les informations fournies aux ordinateurs. Quen est-il donc ? Et bien les donnes, tout comme les programmes, taient fournis sous forme de cartes perfores qui contenaient les instructions ou la description des donnes.

Figure 1 : Carte perfore

De telles cartes comportaient 80 colonnes dans lesquelles on pouvait coder les valeurs 0 et 1 en perforant la carte ou en la laissant intacte. Sur une carte perfore, on pouvait donc enregistrer 80 octets. Cela vous parat tre lge de pierre de linformatique ? Cest vrai mais sachez aussi que si vous lisez un programme crit en RPG (GAP), langage utilis pour le codage de programmes sur des AS 400 vous trouveriez cette structure pour reprsenter vos instructions ! Ainsi, nous trouvons des enregistrement de type I qui correspondent la description des donnes en entre de programme et des instructions de type O qui reprsentent la description des donnes en Sortie.

OFPPT @

Document
C-E-001.doc

Millsime
mars 12

Page 2 - 13

Initiation la manipulation de fichiers Pour enregistrer des quantits plus grandes d'informations, il suffisait alors d'utiliser un grand nombre de ces cartes. On obtient alors un paquet de fiches plus ou moins pais qui constitue un "fichier informatique" plus ou moins volumineux !

Figure 2 : un fichier "prhistorique"

Ces fichiers contenaient donc les donnes faire traiter par l'ordinateur ou les programmes faire excuter. Quand les supports magntiques ont t utiliss plus frquemment, lappellation fichier informatique a perdur, fichier informatique reprsentant tous les paquets d'informations enregistres. Nous nous intresserons bien sr seulement la notion de fichiers de donnes par la suite.

3. Organisation du stockage
Quand les supports magntiques ont t utiliss plus frquemment, on a continu d'appeler fichier informatique tous ces paquets d'informations enregistres sur support numrique. Le disque dur d'un ordinateur pouvant supporter des milliers de fichiers, il doit pouvoir retrouver chacun d'eux trs rapidement. Pour ce faire, il a besoin d'un systme d'organisation efficace de ces fichiers. Il doit pouvoir, sur demande de lutilisateur, charger lun de ces fichiers trs rapidement. Ce travail didentification et de classement est pris en charge par le systme dexploitation. Lutilisateur na pas besoin de ce soucier o se trouve stock physiquement le fichier. Il existe plusieurs faons, pour les systmes d'exploitation, de grer l'accs aux fichiers. Il existe de nombreux systmes diffrents de gestion de fichiers, fonction des systmes dexploitation devant les prendre en charge. Nous pouvons citer FAT, NTFS, Ext2, FAT, dont lacronyme signifie "File Allocation Table", utilise un catalogue des fichiers stocks sur les disques durs de lordinateur. Lorsquun fichier fait lobjet dune demande daccs, le systme consulte le catalogue et identifie sa position physique sur le disque. Le catalogue contient le numro de piste et le secteur o se trouve chaque fichier. Ce catalogue est stock un endroit rserv par le systme. Ainsi, cest presque instantanment que vous avez accs au fichier.

OFPPT @

Document
C-E-001.doc

Millsime
mars 12

Page 3 - 13

Initiation la manipulation de fichiers L'illustration ci-dessous reprsente le catalogue du disque. Le catalogue est figur sur la premire piste. Les codes couleur prsentent diffrents fichiers.

Figure 3 : Catalogue FAT

Lutilisateur o le programmeur naura jamais se soucier de lindexation des fichiers et de lorganisation de leur stockage physique. Ce quils voient est une vue logique, prsente sous la forme dune arborescence de rpertoires, leur permettant de saffranchir de toute la complexit sous-jacente cette organisation. Pour chaque fichier, les renseignements les plus importants indiqus dans la FAT sont le nom du fichier et la piste et secteur o le fichier commence. Il y a bien entendu de nombreuses autres informations, notamment les proprits du fichier, mais il nest pas ncessaire de rentrer dans ces dtails qui nont pas dintrt pour lobjectif poursuivi.

OFPPT @

Document
C-E-001.doc

Millsime
mars 12

Page 4 - 13

Initiation la manipulation de fichiers

4. Les diffrentes mthodes daccs


Nous distinguerons deux types daccs, laccs squentiel et laccs alatoire. Il existe des mthodes drives, comme le squentiel index, mais qui sont aujourdhui, lpoque de la gnralisation des bases de donnes relationnelles, tombes en dsutude. Nous verrons toutefois par la suite que les bases de donnes sappuient en interne sur la gestion squentielle indexe, mais point nest l notre propos. Pour comprendre trs simplement la distinction entre accs squentiel et accs alatoire (Random Access in English qui vous rappelle peut tre un acronyme clbre RAM : Random Access Memory), nous prendrons la parabole du choix de la robe (ou du pantalon pour les garons). Il y a deux faons de choisir une robe. Vous pouvez dune part assister un dfil de mode et choisir lun des modles qui vous a t prsent lissue de la reprsentation. Vous pouvez ventuellement choisir une robe avant mme la fin du dfil, mais vous devrez forcment assist la prsentation de lensemble des modles ayant prcd votre choix. Vous pouvez dautre part vous rendre dans un magasin spcialis et choisir une robe directement dans lun des rayons. Dans ce deuxime cas de figure, vous vous tes rendu directement la robe choisie. Il est possible denvisager que vous ayez aussi, partir dune premire robe, parcouru les diffrents modles pour en choisir un. La premire mthode en informatique se nomme accs squentiel : vous parcourez la liste des donnes depuis la premire jusqu la dernire mais pouvez, le cas chant, vous arrter avant si vous avez trouv linformation cherche. La deuxime mthode sappelle laccs alatoire, Random Access ou Accs direct. Cest une mthode somme toute plus rapide ds lors que nous sommes en mesure de localise linformation. Bien que les deux notions soient diffrentes, on utilise le plus souvent laccs squentiel pour stocker des donnes dans des fichiers texte et laccs alatoire, dont nous verrons les contraintes, pour des structures denregistrement prdfinies qui peuvent contenir des types de donnes spcifique (numrique, boolen, )

OFPPT @

Document
C-E-001.doc

Millsime
mars 12

Page 5 - 13

Initiation la manipulation de fichiers

5. Les fichiers texte


5.1. Les caractristiques enregistrements du stockage et des

A la diffrence des fichiers binaires, que nous verrons par la suite lors de linitiation la programmation, et qui stockent des octets non directement comprhensibles et souvent dans un codage propre une application ou langage, les fichiers texte stockent des caractres directement affichables. Ils peuvent tre cods selon diffrentes normes et standards. Nous traiterons ici des normes usuelles que sont lASCII et lUnicode.

5.1.1.

Le codage ASCII

Plusieurs dclinaisons de ces encodages existent. En fait, si nous prenons le cas de lencodage ASCII, un caractre est cod un octet. Nous avons donc 256 possibilits. Cela ne permet pas de prsenter lensemble des caractres des diffrents alphabets. Il existe donc un transcodage des caractres fonction dun code de page prdfini. Ainsi, un caractre ayant la mme valeur pourra avoir plusieurs reprsentations en fonction du code page qui servira pour sa translation. En fait, la table des caractres ASCII est constitu de deux parties. La premire partie prsente les caractres communs utiliss par tous : on trouvera dans cette partie les caractres spciaux (_ ;@,$ ;), les majuscules et minuscules de lalphabet europen non accentues. La deuxime partie prsentera les caractres qui peuvent, en fonction de la page de code utilise, avoir des reprsentations diffrentes. Il sagit notamment du jeu de caractres accentus. Voir table ASCII en annexe.

5.1.2.

Le codage UNICODE

Les applications ont aujourdhui besoin de disposer de jeu de caractres tendus et qui, pour des raisons de globalisation et dchanges internationaux, ncessitent de supprimer toute ambigit sur la nature du caractre stock. Ainsi est ne la norme Unicode. Un caractre Unicode sera stock sur 2 octets (16 bits), ce qui permet de reprsenter plus de 65000 caractres. La norme Unicode est donc adapte aux applications internationales multilingues et en simplifie les dveloppements. La norme Unicode intgre la premire partie de la table Ascii qui est commune l'ensemble des langues. Il existe aujourd'hui des mcanismes d'extension la norme Unicode qui permet par recours des paires de substitution d'tendre le nombre de caractres pouvant tre reprsents plus d'un million. Un substitut ou paire de substitution est une paire de valeurs de codage Unicode 16 bits qui reprsentent elles deux un seul caractre. Ce qu'il faut garder l'esprit est que chacune de ces paires correspond en fait un caractre 32 bits. Et l, on peut envisager de disposer dun Document Millsime Page OFPPT @ C-E-001.doc mars 12 6 - 13

Initiation la manipulation de fichiers alphabet particulirement riche, comme le jeu de caractres chinois par exemple.

5.1.3.

Le stockage

Dans un fichier texte, chaque enregistrement sera stock sur une ligne du fichier et un caractre de fin d'enregistrement dlimite celui-ci. Les enregistrements peuvent tre de longueur fixe ou de longueur variable, et les diffrentes zones de l'enregistrement isoles les unes des autres par un caractre de sparation appel couramment dlimiteur de texte. Le point virgule est couramment utilis pour les fichiers avec lextension CSV par exemple.

Figure 4 : Exemple de fichier texte avec sparateur

5.2.

La manipulation des donnes

Avant de pouvoir manipuler les donnes, il faut raliser une opration douverture de fichier. 3 modes sont disponibles qui permettront de louvrir en lecture, en criture ou en ajout. Votre programme ne communique pas directement avec le fichier physique stock sur le disque mais passe par une zone tampon intermdiaire dsign sous le terme de Buffer. Cest au moment de la rcriture sur disque que les donnes prsentes dans le buffer seront stockes sur le disque et le buffer vid. En fait pour tre manipules, les donnes doivent tre charges en mmoire RAM. Le buffer sera identifi par un N compris entre 1 et 255.

5.2.1.

Ouverture

Lors de louverture du fichier il faut prciser pour quelle opration celui-ci sera utilis, Entre, Sortie ou Ajout. On indiquera aussi par un n le buffer qui sera la reprsentation du fichier en mmoire. Dans notre pseudo-langage nous utiliserons :
OUVRIR nomdufichier POUR operation COMME NumBuffer

O : Nomdufichier : nom physique complet du fichier, exemple c:\monfichier.txt Operation : ENTREE, SORTIE ou AJOUT (INPUT, OUTPUT ou APPEND) NumBuffer : un numro de 1 255 prcd du caractre #

Ainsi, nous crirons pour lire les enregistrements dun fichier EcritureComptable.csv stock dans le rpertoire Compta du disque E.

OFPPT @

Document
C-E-001.doc

Millsime
mars 12

Page 7 - 13

Initiation la manipulation de fichiers OUVRIR E:\COMPTA\EcritureComptable.csv POUR LECTURE COMME #1 Le N de buffer doit tre unique. Ainsi, si plusieurs fichiers doivent tre manipuls par le mme programme, choisissez des rfrences diffrentes. Dans un fichier ouvert pour ajout, les enregistrements seront stocks la fin du fichier.

5.2.2.

Oprations sur les donnes

Deux oprations trs simples : la lecture depuis le buffer et lcriture dans le buffer :
MaVariable LIREFIC NumBuffer ECRIREFIC MaVariable NumBuffer

Lors dune opration de lecture les donnes sont consommes, cest dire que le programme se place juste avant lenregistrement suivant afin dtre prt le lire. Elles sont stockes dans une variable de type Chaine qui reoit les donnes lues. Dans le cas de lcriture, le contenu de la variable est plac la fin du buffer. Dtection de fin de fichier Une variable systme permet de dfinir que le programme a atteint la fin du fichier et quil ny a plus dlments lire. Cette variable sera nomme par un mot cl rserv EOF pour End Of File assigne par buffer.
EOF NumBuffer

Le code qui suit permet de lire lensemble des donnes dun fichier pour les afficher lcran.
OUVRIR c:\liste.xtx POUR LECTURE COMME #1 TANT QUE NON EOF #1 FAIRE VARTAMP LIREFIC #1 ECRIRE VARTAMP FTQ

5.2.3.

Fermeture

Pour terminer le traitement dun fichier, il faudra librer celui-ci pour quil puisse tre de nouveau utiliser par un autre programme. Lopration de fermeture, prcise sous le terme FERMEFIC permettra daccomplir cette action. Attention, lopration de fermeture provoque le transfert des donnes de la zone tampon, buffer, sur le disque dans le cas dun fichier ouvert pour

OFPPT @

Document
C-E-001.doc

Millsime
mars 12

Page 8 - 13

Initiation la manipulation de fichiers sortie ou ajout. Si vous oubliez de fermer le fichier, les donnes de celuici ne seront pas sauvegardes.
FERMERFIC NumBuffer

5.2.4.

Tester lexistence du fichier

Si vous ouvrez un fichier en sortie et que celui existe dj, les donnes quil contient seront remplacs par celles que vous venez dintroduire lors de la fermeture du fichier qui provoquera lcriture de la zone tampon sur le disque. De mme, lors dune ouverture pour lecture ou ajout, il faut sassurer de lexistence pralable du fichier. Nous introduisons donc ici une nouvelle fonction qui nous permet dobtenir la certitude de lexistence ou non dun fichier un emplacement donn sur le disque. Cette fonction est une fonction boolenne qui renverra vrai si le fichier existe ou faux sinon.
Cette fonction est valable quelle que soit la nature du fichier et le mode daccs retenu. Ainsi, vous pouvez la mettre en uvre avec des fichiers texte accs squentiels ou des fichiers accs alatoire.

EXISTEFIC NomFichier

NomFichier reprsente lemplacement physique et le nom du fichier comme lexemple ci-dessous lillustre.
SI EXISTEFIC c:\liste.xtx = VRAI ALORS OUVRIR c:\liste.xtx POUR LECTURE COMME #1 SINON ECRIRE Le fichier demand nexiste pas FSI

6. Les fichiers accs alatoire


6.1. Les caractristiques enregistrements du stockage et des

Dans un fichier accs alatoire, ou accs direct, nous allons nous dplacer directement un enregistrement demand du fichier. Pour accder un enregistrement, nous devrons prciser le N de celui-ci. Contrairement aux fichiers accs squentiel vus prcdemment, nous pouvons tout la fois lire et crire dans un fichier ouvert pour accs alatoire. Un fichier accs alatoire dispose dun enregistrement structur : nous connaissons la dfinition et la nature des donnes quils contiennent, sous la forme dune structure. Une structure est compose dune ou plusieurs zones reprsentes au sein du programme par des variables types. Ainsi, si nous considrons un enregistrement client, nous pourrions le dsigner sous la forme de 5 rubriques qui seront reprsenter

OFPPT @

Document
C-E-001.doc

Millsime
mars 12

Page 9 - 13

Initiation la manipulation de fichiers par 4 variables dans le programme : NumClient, NomClient, AdresseClient, CodePostalClient, VilleClient respectivement Entier, chaines de caractres de longueurs 20, 40, 5 et 25. La structure dun enregistrement tant donne, nous pouvons en dduire la taille. Le nombre denregistrements contenus dans le fichier sera donc le rsultat de la division de la taille du fichier par la longueur de lenregistrement, donc de la longueur de la structure. Nous aurons donc besoin, pour dterminer le nombre denregistrements, dintroduire une nouvelle proprit dsignant la taille du fichier.

6.2.

La dfinition dune structure

La description de la structure dun enregistrement, ou type, se dfinit entre deux mots cls qui borne la dfinition de celle-ci STRUCTURE et FINSTRUCTURE. Entre ces deux mots cls ne doivent figurer que les zones, reprsentes par des variables, qui composent lenregistrement. Nous allons ici introduire un nouveau type de donnes, les chaines. Les chaines sont des ensembles de caractres. Lorsque lon dfinie une chaine, on prcisera ventuellement sa longueur.
CHAINE Machaine CHAINE NomClient * 20

Les chaines sont gnralement de longueur variable. Mais, pour la dfinition dune structure, afin que la longueur de lenregistrement puisse tre fixe, elle sera prcise. Quel que soit la valeur dune chaine dont on a prcis la longueur, la place occupe sera toujours celle de la longueur dfinie. Une chaine dispose dune proprit LONGCHAINE et sapparente un tableau de caractres. Nous pourrons donc extraire les caractres dune chaine en ayant recours une valeur de chaine indice. Si nous voulons connatre la valeur du 3me caractre dune chaine Nomclient et lafficher, nous crirons :
AFFICHER NomClient(3)

Pour afficher lensemble des caractres dune chaine prcds du numro dordre dans la chaine, nous avons recours la proprit LONGCHAINE et un cycle POUR :
POUR i ALLANT DE 1 A LONGCHAINE Nomclient FAIRE AFFICHER N Ordre : AFFICHER i AFFICHER Caractre : AFFICHER Nomclient(i) FINPOUR

La structure de lenregistrement client sera donc ainsi dfinie :

OFPPT @

Document
C-E-001.doc

Millsime
mars 12

Page 10 - 13

Initiation la manipulation de fichiers


STRUCTURE NomStructure ENTIER Numclient CHAINE NomClient * 20 CHAINE AdresseClient * 40 CHAINE CodePostalClient * 5 CHAINE VilleClient * 25 FINSTRUCTURE

Dans lexemple prcdent, lenregistrement aura donc une longueur de 94 octets (4 + 20 + 40 + 5 + 25, un entier tant stock par convention sur 4 octets). Par convention, nous prcisons que les variables, selon leur type, prendrons les longueurs suivantes : BOOLEEN : 1 Octet CAR : 1 Octet ENTIER : 4 Octets REEL : 6 Octets CHAINE : fonction de sa longueur

6.3.

Ouverture

Lors de louverture du fichier, lopration prcise toujours quil sagit dun accs alatoire, donc RANDOMACCESS. On indiquera l encore par un n le buffer qui sera la reprsentation du fichier en mmoire. Dans notre pseudo-langage nous utiliserons :
OUVRIR nomdufichier POUR Operation COMME NumBuffer LONGUEUR LongEnregistrement

O : Nomdufichier : nom physique complet du fichier, exemple c:\monfichier.txt Operation : RANDOMACCESS NumBuffer : un numro de 1 255 prcd du caractre # LongEnregistrement : longueur de lenregistrement fonction de sa structure

6.4.

Manipulation des donnes

Les oprations sont de mme nature que prcdemment, lecture et criture. Dans notre pseudo-langage elles seront dsignes par LIREEENR et ECRIREENR. Pour lire un enregistrement et charges les valeurs dans la structure qui contient sa dfinition, nous indiquons :
LIREENR NumBuffer , NumEnregistrement, NomStructure

Les arguments de lopration LECTUREENR sont spars par une virgule.

OFPPT @

Document
C-E-001.doc

Millsime
mars 12

Page 11 - 13

Initiation la manipulation de fichiers Le numro denregistrement doit tre compris entre 1 et le nombre denregistrement calculs laide de la proprit LONGUEURFICHIER qui se calcule ainsi :
ENTIER NombreEnregistrements, LongEnregistrement, LongFichier ENTIER LongEnregistrement LongEnregistrement 94 LongFichier LONGUEURFICHIER NumBuffer NombreEnregistrements LongFichier / LongEnregistrement

Pour manipuler les valeurs de la structure, on utilise le nom de la variable prcde du nom de la structure et spars par un point. Pour afficher la valeur du nom client :
AFFICHER NomStructure.Nomclient

Pour charger la valeur de Nomclient on procdera de la mme manire.


NomStructure.Nomclient valeur

Pour lcriture, il faudra procder de manire analogue la lecture.


ECRIREENR NumBuffer , NumEnregistrement, NomStructure

6.5.

Fermeture

Le fichier sera ferm avec lordre FERMERFIC comme dans le cas des fichiers accs squentiel.
FERMERFIC NumBuffer

OFPPT @

Document
C-E-001.doc

Millsime
mars 12

Page 12 - 13

You might also like