www.facultedegenie.net
SITE INDEPENDANT (non-officiel)
Koliet al-Handassah
FACULTE DE GENIE (LIBAN)
Faculty of Engineering (Lebanon)

SPECIAL... Cliquer ici... Click here...
(Ad/info)

Zone PROF - Zone INGENIEUR - Zone ETUDIANT - Zone VISITEUR

Next Page N.118

* Guest-Book *
* News-Group *
Suggest update

f
a
c
u
l
t
e
d
e
g
e
n
i
e
.
n
e
t

=

w
w
w
.
f
a
c
u
l
t
e
d
e
g
e
n
i
e
.
n
e
t

&

g
r
o
u
p
.
f
a
c
u
l
t
e
d
e
g
e
n
i
e
.
n
e
t

=

f
a
c
u
l
t
e
d
e
g
e
n
i
e
.
n
e
t

Dr.M.Z.

Informatique : PASCAL (Chapitre VIII)

FICHIERS TEXTES, FICHIERS BINAIRES
© Dr Mustapha ZIADE'

Dr.M.Z.

This text copyright = www.ziade.net
Ce texte vient de ©
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

VAR FICHE : TEXT ;

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

VAR
FICHER : FILE OF REAL ;
FICHA : FILE OF INTEGER ;

Les fichiers binaires sont compréhensibles seulement pour le compilateur.

© Dr Mustapha Ziade'

Dr.M.Z.

(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:
.DAT fichier contenant des données (en anglais: data),
.TMP fichier contenant des données temporaires (donc il faut utiliser *.TMP en T.P.),
.TXT fichier contenant un texte.

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

ASSIGN ( FICHE , 'C:\TP7\TEST.TMP' ) ;

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.

© Dr Mustapha Ziade'

Dr.M.Z.

(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

REWRITE( Fic1 ) ;

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 !!!

- cas 1 : si le fichier n'existe pas, alors il est créé vide.

- cas 2 : si le fichier existe, alors son contenu est perdu.

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

RESET( Fic2 ) ;

Cette procédure prédéfinie reçoit un seul paramètre: un identificateur d'une variable de type fichier.

Remarques:
- RESET équivaut à placer la tête de lecture au début du fichier.
- RESET ne modifie pas le fichier.

© Dr Mustapha Ziade'

Dr.M.Z.

(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:

IF EOF(Fic1) THEN writeln( ' La fin du fichier est atteinte ' )
ELSE writeln( ' La fin du fichier n''est pas atteinte ' ) ;

Remarque: pour mettre une apostrophe dans une chaîne de caractère, il faut la doubler.

© Dr Mustapha Ziade'

Dr.M.Z.

(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:

WRITE( Fic1, ' X = ' , X , ' Y = ' , Y ) ;

WRITELN( Fic1, X , Y , Z ) ;

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:

READ( Fic2, X ) ;

READLN( Fic2, X , Y , Z ) ;

Action: le compilateur va lire dans le fichier FIC2 au lieu de lire au clavier.

© Dr Mustapha Ziade'

Dr.M.Z.

(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:

WRITE( Fich1, X , Y ) ; { avec... Var Fich1 : File of real ; X, Y : real ; }

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:

READ( Fich2, M , N ) ; { avec... Var Fich2 : File of integer ; N , M : integer ; }

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 …)
DONC il est impossible d'utiliser WRITELN ou READLN avec un fichier binaire.

© Dr Mustapha Ziade'

Dr.M.Z.

(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

CLOSE( Fic1 ) ;

Cette procédure prédéfinie reçoit un seul paramètre: un identificateur d'une variable de type fichier.
Il est évident qu'il est impossible d'écrire ou de lire dans un fichier fermé.

© Dr Mustapha Ziade'

Dr.M.Z.

(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:

PROCEDURE POSSIBLE( var Fic1:TEXT ) ;

-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 ;
VAR Fic1 : TEXT ;

PROCEDURE PROC2 ;
VAR Fic2 : TEXT ;
BEGIN
assign( Fic2, 'MZ2000.TMP') ;
REWRITE( Fic2 ) ;
close( Fic2 ) ;
END ;

BEGIN {principal}
assign( Fic1, 'MZ2000.TMP') ;
REWRITE( Fic1 ) ;
write( Fic1, ' essai ' ) ;
close( Fic1 ) ;
{ ici le fichier MZ2000.TMP n'est pas vide }
PROC2 ; { après l'exécution de PROC2, le fichier MZ2000.TMP sera vide }
END.

(Pour vérifier que le fichier MZ2000.TMP est vide, il suffit de l'ouvrir avec un éditeur de textes.)

© Dr Mustapha Ziade'

Dr.M.Z.

(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.
Par exemple, la ligne suivant implique que FIC1 ne pourra contenir que des réels:

VAR Fic1 : FILE OF REAL ;

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;

TYPE TROC : RECORD
nom : string[52] ;
semestre : integer ;
note : array[1..12] of integer ;
END ;
{fin du record}

VAR
Fic1 : FILE OF TROC ;
ROC : TROC ;

BEGIN
{…}
ROC.nom := 'NOM Prénom' ;
ROC.semestre := 5 ;
ROC.note[1] := 95 ; ROC.note[2] := 75 ;
{…}

ASSIGN( Fic1, 'exemple1.tmp' ) ;
REWRITE( Fic1 ) ;
WRITE( Fic1, ROC ) ;
{ Rappel: pas de WRITELN dans un fichier binaire }
{…}
CLOSE( Fic1 ) ;
{…}

ASSIGN( Fic1, 'exemple1.tmp' ) ;
RESET( Fic1 ) ;
READ( Fic1, ROC ) ;
{ Rappel: pas de READLN dans un fichier binaire }
{…}

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
TROC = RECORD
NOM : string[52] ;
NOTE : array [1..12] of integer ;
END ;
{fin du record}

VAR
Fic1 : FILE of TROC ;
ROC : TROC ; i : integer ;

BEGIN {principal}
ASSIGN( Fic1, 'exemple1.tmp' ) ; REWRITE( Fic1 ) ;

REPEAT
write( ' Donner le nom de 1 étudiant ' ) ; readln( ROC.NOM ) ;
if ROC.NOM <> '' then
BEGIN
for i := 1 to 12 do
begin writeln( ' Donner la note de la matière ', i ); readln( ROC.NOTE[i] ) ;
end ;
END;
WRITE( Fic1, ROC ) ;
UNTIL NOM = '' ;
{ '' est une chaîne vide, donc il faut 2 apostrophes successives }

CLOSE( Fic1 ) ;

END.

© Dr Mustapha Ziade'

Dr.M.Z.

(I) Introduction Générale

(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

(V) Structure d'un programme

(VI) Affectations, Tests, Boucles

(VII) Fonctions, Procédures, Récursivité

(VIII) Fichiers Textes, Fichiers Binaires

(IX) Pointeurs

© Dr Mustapha Ziade'

Dr.M.Z.

(i) FACULTE DE GENIE, Liban. Faculty of Engineering, Lebanon. Faculté de Génie, Université (i) Faculté de Génie, Liban

Zone VISITEUR -
Zone ETUDIANT -

- Zone INGENIEUR
-
Zone PROF...

News, FACULTE DE GENIE, Liban. Faculty of Engineering, Lebanon. Faculté de Génie, Université
Faculté de Génie NEWS


ßáíÉ ÇáåäÏÓÉ - áÈäÇä


Faculty of Engineering
Leban
on

FACULTE DE GENIE
(Génie) LIBAN

Arabic...

1995-2010 (c) Dr M. ZIADE'

SITE INDEPENDANT (non-officiel)
www.facultedegenie.net

E-mail:_webmaster©facultedegenie.net

liste index (liste)
Home (p.1)
Admissions
Examen d'entrée

Départements
Tronc Commun
Génie Civil
Génie Electricité &...
Génie Mécanique

Equipements
Laboratoires
Bibliothèques
Centres informatiques
Photos

Divers
Autres Liens/Links
Histoire des Sciences
Liban / Lebanon
fumer=non, smoke=no

Contacts
Les C.V.
Branche 1
Branche 2 , Branche 3
Organigrammes

Arabic Ar.
English
Francais

Débouchés
Masters (DEA)
News-Group

PC-GENIE
Langage Pascal
Design ZIADEM

Logos+Sites Etudiants
Blog ...
Guest-Book

Suggest update (10a)

>> Next Page N.118 >>

Dr.M.Z.

SPECIAL... Cliquer ici... Click here... (net sponsor)