www.facultedegenie.net |
|
* Guest-Book * f = w & g = f |
Informatique : PASCAL (Chapitre VIII) FICHIERS
TEXTES, FICHIERS BINAIRES This
text copyright = www.ziade.net (VIII.1) Fichiers de type TEXT, fichiers binaires (VIII.1.a) Fichier de type TEXT Le type TEXT est un type prédéfini correspondant à un fichier contenant du texte. Donc pour déclarer une variable FICHE en tant que fichier de type TEXT, il suffit d'écrire
Les fichiers textes sont compréhensibles pour l'humain et pour le compilateur. (VIII.1.b) Fichier binaire Le type " FILE … " est un type prédéfini correspondant à un fichier binaire. Donc pour déclarer une variable FICHER en tant que fichier binaire de réels, il suffit d'écrire
Les fichiers binaires sont compréhensibles seulement pour le compilateur. (VIII.2) Système d'exploitation et Assignation d'un fichier (VIII.2.a) Nom physique d'un fichier Les fichiers sont enregistrés sur disque, donc il leur faut un nom physique (¹ nom de variable). Ce nom physique dépend du système d'exploitation c.-à-d. généralement du DOS (ou MS-DOS). Pour le DOS, un nom de fichier est une chaîne de 1 à 8 lettres (ou chiffres) suivie par un point (.) puis par 1 à 3 caractères (appelés extension). Exemples: GENIE.PAS , MZ2000.TXT , … L'extension a
pour but d'informer sur le contenu du fichier, en particulier: Le nom du fichier peut être complété par le nom de son chemin (en anglais: path), par exemple: C:\TP7\ESSAI_1.TMP signifie le fichier ESSAI_1.TMP dans le répertoire ou dossier C:\TP7 (il est sous-entendu que ce dossier doit exister sur le disque). (VIII.2.b) Assignation d'un fichier Avant d'utiliser un fichier il faut lui assigner un nom physique. Par exemple, après avoir déclaré la variable FICHE de type fichier, il faut (avant de l'utiliser) lui assigner un nom physique comme C:\TP7\TEST.TMP, cela s'écrit en (Turbo) Pascal grâce à l'instruction suivante
Cette instruction est une procédure prédéfinie qui doit avoir deux paramètres: le premier est un identificateur d'une variable de type fichier et le deuxième est une chaîne de caractères correspondant au nom physique du fichier (sur le disque). Remarque: le nom physique assigné à un fichier est unique. (VIII.3) Ouverture d'un fichier (VIII.3.a) Ouverture en mode écriture Une fois le nom du fichier assigné (avec ASSIGN(Fic1,'NOM1.TMP') par exemple), il est possible d'ouvrir ce fichier en mode écriture, cela se fait en (Turbo) Pascal grâce à l'instruction
Cette procédure prédéfinie reçoit un seul paramètre: un identificateur d'une variable de type fichier. Attention: REWRITE donne au fichier une taille égale à zéro !!!
En effet, dans les 2 cas, le fichier aura une taille nulle (après le REWRITE). (VIII.3.b) Ouverture en mode lecture Une fois le nom du fichier assigné {avec ASSIGN(FIC2,'NOM2.TMP') par exemple}, il est possible d'ouvrir ce fichier en mode écriture, cela se fait en (Turbo) Pascal grâce à l'instruction
Cette procédure prédéfinie reçoit un seul paramètre: un identificateur d'une variable de type fichier. Remarques: (VIII.4) Fonction prédéfinie EOF Avant de lire un élément dans un fichier, il faut savoir si la fin du fichier est atteinte ou pas. C'est le rôle de la fonction EOF (abréviation de End Of File) qui donne un résultat booléen. Exemple:
Remarque: pour mettre une
apostrophe dans une chaîne de caractère, il faut la
doubler. (VIII.5) Ecriture ou lecture dans un fichier de type TEXT (VIII.5.a) Ecriture dans un fichier TEXT Une fois le fichier ouvert en écriture (avec REWRITE(FIC1) par exemple), il est possible d'écrire dans ce fichier, cela se fait grâce à l'instruction WRITE(FIC1,…) ou WRITELN(FIC1,…), par exemple:
Action: le compilateur va écrire dans le fichier FIC1 au lieu d'écrire à l'écran. (VIII.5.b) Lecture dans un fichier TEXT Une fois le fichier ouvert en lecture (avec RESET(FIC2) par exemple), il est possible de lire dans ce fichier, cela se fait grâce à l'instruction READ(FIC2,…) ou READLN(FIC2,…), par exemple:
Action: le compilateur va lire dans le fichier FIC2 au lieu de lire au clavier. (VIII.6) Ecriture ou lecture dans un fichier binaire (VIII.6.a) Ecriture dans un fichier binaire Une fois le fichier ouvert en écriture (avec REWRITE(Fich1) par exemple), il est possible d'écrire dans ce fichier, cela se fait grâce à l'instruction WRITE(Fich1,…) seulement, par exemple:
Le compilateur va écrire dans le fichier Fich1 en code binaire (non compréhensible pour l'humain). (VIII.6.b) Lecture dans un fichier binaire Une fois le fichier ouvert en lecture (avec RESET(Fich2) par exemple), il est possible de lire dans ce fichier, cela se fait grâce à l'instruction READ(Fich2,…) seulement, par exemple:
Le compilateur va lire dans le fichier Fich2 en code binaire (non compréhensible pour l'humain). Important: IL N'Y A PAS DE
LIGNE DANS UN FICHIER BINAIRE (file of …) (VIII.7) Fermeture d'un fichier Quand tout le travail dans un fichier est terminé, il faut le fermer. Par exemple pour fermer le fichier FIC1 il suffit de faire
Cette procédure prédéfinie
reçoit un seul paramètre: un identificateur d'une
variable de type fichier. (VIII.8) Particularité des variables de type fichier ATTENTION: les fichiers sont gérés par le système d'exploitation, donc les fichiers ne sont pas des variables comme les autres. Par exemple: le contenu d'un fichier ne dépend que de son nom physique. -1- Tout fichier utilisé comme paramètre doit être toujours passé par adresse (par VAR). Par exemple:
-2- La notion de variable locale ne s'applique pas aux fichiers, car toute modification d'un fichier est globale car valable partout (dans le programme et dans toutes les procédures et fonctions). Exemple: PROGRAM
DEMONSTRATION ;
BEGIN {principal} (Pour vérifier que le fichier MZ2000.TMP est vide, il suffit de l'ouvrir avec un éditeur de textes.) (VIII.9) Variable de type RECORD D'après le paragraphe 1b, un
fichier binaire ne peut contenir qu'un seul type de
données.
Mais alors comment faire pour avoir un fichier binaire contenant le nom des étudiants et leurs notes ? Le type enregistrement ou RECORD permet de réunir des données de types différents. Voici un exemple: PROGRAM PROREC;
VAR BEGIN ASSIGN( Fic1,
'exemple1.tmp' ) ; ASSIGN( Fic1,
'exemple1.tmp' ) ; CLOSE( Fic1 ) ; END. (cet exemple est volontairement simplifié pour mieux se concentrer sur l'essentiel.) Il est possible d'utiliser les
données du RECORD comme n'importe quelle variable
simple. Mais le record n'est pas une variable simple (par
exemple WRITE(ROC) est impossible à l'écran). PROGRAM ENREGISTREMENT ; TYPE VAR BEGIN {principal} REPEAT CLOSE( Fic1 ) ; END. (II) Erreurs ou Limites des Calculs Numériques et informatiques ***** (III) Types, Opérateurs, Fonctions et Procédures prédéfinis (IV) Partie Déclarative d'un programme (VI) Affectations, Tests, Boucles (VII) Fonctions, Procédures, Récursivité |