Section courante

A propos

Section administrative du site

 Langage  Installation  Elément  Tutoriel  Programmation  Plateforme  Web  IDE  Annexe  Aide 
ABAP/4
Ada
Assembleur
Assembly & bytecode
ASP (Active Server Pages)
Basic
C
C++
C# (C Sharp)
Cobol
ColdFusion
Fortran
HTML
Java
JavaScript
LISP
Logo
LotusScript
Oberon
Pascal
Perl
PHP
PL/1
Prolog
Python
Rebol
REXX
Ruby
Rust
SAS
NoSQL
SQL
Swift
X++ (Axapta)
GNAT
SMALLAda
VHDL
Assembleur 370
Assembleur 1802
Assembleur 4004
Assembleur 6502
Assembleur 6800
Assembleur 68000
Assembleur 8080 et 8085
Assembleur 8089
Assembleur 80x86
Assembleur AGC4
Assembleur ARM
Assembleur DPS 8000
Assembleur i860
Assembleur Itanium
Assembleur MIPS
Assembleur PDP-11
Assembleur PowerPC
Assembleur RISC-V
Assembleur SPARC
Assembleur SuperH
Assembleur UNIVAC I
Assembleur VAX
Assembleur Z80
Assembleur Z8000
Assembleur z/Architecture
ASSEMBLER/MONITOR 64
Micol Assembler
GFA Assembler
A86
MASM (Macro Assembler)
TASM (Turbo Assembler)
CIL
Jasmin
LLVM
MSIL
Parrot
P-Code (PCode)
SWEET16
G-Pascal
ASP 1.0
ASP 2.0
ASP 3.0
ASP.NET
ASP.NET Core
ABasiC (Amiga)
Adam SmartBASIC
Altair BASIC
AmigaBASIC (Amiga)
AMOS Basic (Amiga)
Atari Basic (Atari 400, 600 XL, 800, 800XL)
Basic Apple II (Integer BASIC/APPLESOFT)
Basic Commodore 64 (CBM-BASIC)
Basic Commodore 128 (BASIC 7.0)
Basic Commodore VIC-20 (CBM-BASIC 2.0)
Basic Coco 1 (Color Basic)
Basic Coco 2 (Extended Color Basic)
Basic Coco 3 (Extended Color Basic 2.0)
BASICA (PC DOS)
Basic Pro
BBC BASIC
Blitz BASIC (Amiga)
DarkBASIC
Dartmouth BASIC
GFA-Basic (Atari ST/Amiga)
GWBASIC (MS-DOS)
Liberty BASIC
Locomotive BASIC (Amstrad CPC)
MSX-Basic
Omikron Basic (Atari ST)
Oric Extended Basic
Power Basic
Quick Basic/QBasic (MS-DOS)
Sinclair BASIC (ZX80, ZX81, ZX Spectrum)
ST BASIC (Atari ST)
Turbo Basic
Vintage BASIC
VBScript
Visual Basic (VB)
Visual Basic .NET (VB .NET)
Visual Basic pour DOS
Yabasic
BeckerBASIC
SIMONS' BASIC
Basic09 d'OS-9
Disk Extended Color Basic
Basic09 d'OS-9
Disk Extended Color Basic
Access
Excel
Visual Basic pour Windows
Visual Basic .NET pour Windows
C Shell Unix (csh)
C pour Amiga
C pour Atari ST
C pour DOS
C pour Falcon030
C pour GEMDOS (Atari ST)
C pour Linux
C pour PowerTV OS
C pour OS/2
C pour Unix
C pour Windows
Aztec C
CoCo-C
GNU C
HiSoft C
IBM C/2
Introl-C
Lattice C
Microsoft C
MinGW C
MSX-C
Open Watcom C
OS-9 C Compiler
Pure C
Quick C
Turbo C
HiSoft C for Atari ST
HiSoft C for CP/M (Amstrad CPC)
C++ pour OS/2
C++ pour Windows
Borland C++
C++Builder
IBM VisualAge C++
Intel C++
MinGW C++
Open Watcom C++
Symantec C++
Turbo C++
Visual C++
Visual C++ .NET
Watcom C++
Zortech C++
C# (C Sharp) pour Windows
Apple III Cobol
Microsoft Cobol
BlueDragon
Lucee
OpenBD
Railo
Smith Project
Microsoft Fortran
WATFOR-77
CSS
FBML
Open Graph
SVG
XML
XSL/XSLT
LESS
SASS
GCJ (GNU)
JSP
Jython
Visual J++
Node.js
TypeScript
AutoLISP
ACSLogo
LotusScript pour Windows
Amiga Oberon
Oberon .NET
Apple Pascal
Delphi/Kylix/Lazarus
Free Pascal
GNU Pascal
HighSpeed Pascal
IBM Personal Computer Pascal
Lisa Pascal
Maxon Pascal
MPW Pascal
OS-9 Pascal
OSS Personal Pascal
Pascal-86
Pascal du Cray Research
Pascal/VS
Pascal-XT
PURE Pascal
QuickPascal
RemObjets Chrome
Sun Pascal
THINK Pascal
Tiny Pascal (TRS-80)
Turbo Pascal
UCSD Pascal
VAX Pascal
Virtual Pascal
Turbo Pascal for CP/M-80
Turbo Pascal for DOS
Turbo Pascal for Macintosh
Turbo Pascal for Windows
CodeIgniter (Cadre d'application)
Drupal (Projet)
Joomla! (Projet)
Phalanger (PHP .NET)
phpBB (Projet)
Smarty (balise)
Twig (balise)
Symfony (Cadre d'application)
WordPress (Projet)
Zend (Cadre d'application)
PL360
PL/M-80
PL/M-86
Turbo Prolog
CPython
IronPython
Jython
PyPy
AREXX
Regina REXX
JMP
Btrieve
Cassandra
Clipper
CouchDB
dBASE
Hbase
Hypertable
MongoDB
Redis
Access
BigQuery
DB2
H2
Interbase
MySQL
Oracle
PostgreSQL
SAP HANA
SQL Server
Sybase
U-SQL
Borland Pascal
HighSpeed Pascal
QuickPascal
Turbo Pascal 5
Turbo Pascal 5.5
Turbo Pascal 6
Turbo Pascal 7
Introduction
Les remarques
Les opérateurs
Les instructions conditionnelles
Les instructions de boucle
Définition de procédures et fonctions
Références de mots réservés (mots clefs)
Référence de procédures et fonctions
Référence des directives de compilation
Notation : symboles et séparateurs
Les ensembles
Types de fichier
Types de pointeurs
Entrée et sortie de fichier texte
Bonjour
Astronomie
Biochimie
Conversion
Finance
Géométrie
Histoire
Mathématique
Médicale
Météorologie
Océanographie
Sport
Temps
Trigonométrie
Validation
Phase lunaire
Calcul du calcium corrigé
Calcul le taux d'alcoolémie
Bin,Hex,Base62,...
IPaymt/Interet
NPer
PPaymt/Principal
Aire d'un cercle
Aire d'une surface de prisme rectangulaire
Aire d'un triangle
Distance entre deux points
Chiffre romain
Ackermann
Exp
Factoriel
Fibonacci
Log
Nombre premier
Odd
Random
Sqrt
Triangle Pascal
Hauteur utérine
Unité de mesure
Fréquence des vagues
Hockey
Année bissextile
Date de la Pâque
FirstDayOfMonth
ArcCos
ArcSin
Atn/ATan/ArcTan/ArcTangente
Cos
Sin
Courriel
Pascal pour Amiga
Pascal pour Apple II
Pascal pour Atari 8 bits
Pascal pour Atari ST
Pascal pour CoCo
Pascal pour Commodore 64
Pascal pour DOS
Pascal pour Linux
Pascal pour Macintosh
Pascal pour .NET
Pascal pour OS/2
Pascal pour Solaris
Pascal pour TRS-80
Pascal pour Windows
Pascal pour Windows 3
Pascal Server Pages (PSP)
CodeTyphon Studio
Free Pascal IDE
Lazarus
Pascal XE
SET's Editor
WDSibyl
Téléchargement
Bibliographie
Préface
Notes légal
Dictionnaire
Recherche

Types de fichier

À bien des égards, la méthode de structuration la plus simple est la séquence. Dans la profession informatique, le terme généralement accepté pour décrire une séquence est un fichier séquentiel. Le Pascal utilise simplement le mot FILE pour spécifier une structure constituée d'une séquence de composantes - ayant tous le même type. Un fichier de type spécial appelé fichier texte est constitué en une séquence de lignes de caractères de longueur variable et constitue la base de communications lisibles entre les personnes et les systèmes informatiques.

La structure des fichiers

Un ordre naturel des composantes est défini par la séquence, et en tout cas, une seule composante est directement accessible. Les autres composantes sont accessibles en progressant séquentiellement dans le fichier. Le nombre de composantes, appelé la longueur du fichier, n'est pas fixé par la définition du type de fichier. C'est une caractéristique distinguant clairement le fichier du tableau. Un fichier sans composantes est dit vide. Un type de fichier, par conséquent, diffère des types tableau, enregistrement et ensemble car il s'agit d'une structure à accès séquentiel dont les composantes ont tous le même type.

file of type
packed file of type

La déclaration de chaque variable de fichier F introduit automatiquement une variable tampon, notée que F↑ est de type composante. Il peut être considéré comme un accès au fichier à travers lequel on peut soit inspecter (lire) la valeur des composantes existantes, soit générer (écrire) de nouveaux composantes, et étant automatiquement avancé par certaines opérations sur les fichiers. L'affectation n'est pas possible à des variables de fichier entières. La variable tampon est plutôt utilisée pour ajouter des composantes un par un, de manière unidirectionnelle (séquentielle). La variable tampon devient indéfinie si le fichier est positionné au-delà de sa dernière composante.

Le traitement séquentiel, la longueur variable et l'existence d'une variable de tampon suggèrent que les fichiers peuvent être associés au entreposage secondaire et aux périphériques. La manière exacte dont les composantes sont alloués dépend de la mise en oeuvre, mais nous pouvons supposer que seuls certains des composantes sont présents dans l'entreposage principal à tout moment et que seul la composante indiqué par F↑ ou F^ est directement accessible. Lorsque la variable tampon F↑ ou F^ est déplacée au-delà de la fin d'un fichier F, la fonction booléenne prédéclarée EOF(F) renvoie la valeur TRUE, sinon FALSE. Les procédures de base de gestion des fichiers sont :

Nom Description
Reset(F) Cette procédure lance l'inspection (lecture) de F en plaçant le fichier à son début. Si F n'est pas vide, la valeur de la première composante de F est affectée à F↑ et EOF(F) devient FALSE.
Rewrite(F) Cette procédure lance la génération (écriture) du fichier F. La valeur actuelle de F est remplacée par le fichier vide. EOF(F) devient TRUE, et un nouveau fichier peut être écrit.
Get(F) Cette procédure permet de faire passer le fichier aux composante suivante et affecte la valeur de cette composante à la variable tampon F↑. Si aucune composante suivante n'existe pas, alors EOF(F) devient TRUE et F↑ devient indéfini. L'effet de GET(F) est une erreur si EOF(F) est TRUE avant ou avant son exécution ou si F est généré.
Put(F) Cette procédure permet d'ajouter la valeur de la variable tampon F↑ au fichier F. L'effet est une erreur sauf si avant l'exécution le prédicat EOF(F) est TRUE. EOF(F) reste TRUE, et F↑ devient indéfini, Put(F) est une erreur si F est inspecté.

En principe, toutes les opérations de génération et d'inspection de fichiers séquentiels peuvent être entièrement exprimées en termes des quatre opérateurs de fichiers primitifs et du prédicat EOF. En pratique, il est souvent naturel de combiner l'opération d'avancement de la position du fichier avec l'accès à la variable tampon. Nous introduisons donc les deux procédures Read et Write comme suit :

Read(F,X)

(pour X, une variable) équivaut à :

Begin
 X:=F↑; Get(F)
End

ou :

Begin
 X:=F^; Get(F)
End

Et la procédure Write :

Write(F,E)

(pour E, une expression) équivaut à :

Begin
 F↑:=E; Put(F)
End

Les procédures Read et Write sont en fait des procédures spéciales étendues pour accepter un nombre variable de paramètres réels (V1...Vn sont des variables et E1...En sont des expressions) :

Read(F,V1,...,Vn)

équivaut à la déclaration :

Begin
 Read(F,V);...;Read(F,Vn);
End;

Et la procédure Write :

Write(F, E1,...,En);

équivaut à la déclaration :

Begin
 Write(F,E1);...;Write(F,En);
End;

L'avantage de l'utilisation de ces procédures réside non seulement dans la brièveté, mais aussi dans la simplicité conceptuelle, car l'existence d'une variable tampon F↑, parfois indéfinie, peut être ignorée. La variable de tampon peut, cependant, être utile en tant que dispositif d'anticipation. Exemple de déclaration :

Var
 Donnees:File of Integer;
 A:Integer;

Var
 FichierTrace:File of Record
  Couleur:Color;
  Longueur:Natural;
 End;

Var
 Club:File of Personne;
 P:Personne;

Exemple d'instructions avec fichiers :

A:=Donnees↑; Get(Donnees);
Read(Donnees,A);
FichierTrace↑.c:=Red;
FichierTrace↑.Len:=17; Put(FichierTrace);
Club↑:=P; Put(C1ub);
Write(Club,P);

Les fichiers peuvent être locaux pour un programme (ou locaux pour une procédure), ou ils peuvent déjà exister en dehors du programme. Ces derniers sont appelés fichiers externes. Les fichiers externes sont passés en tant que paramètres dans l'entête du programme dans le programme.

Fichiers texte

Les fichiers texte sont des fichiers constitués d'une séquence de caractères subdivisée en lignes de longueur variable. Le type prédéfini Text est utilisé pour déclarer des fichiers texte. On peut considérer le type Text comme étant défini sur le type de base Char étendu par un terminateur de ligne (hypothétique) ou un marqueur de fin de ligne. Par conséquent, le type Text est équivalent à (Packed) file of Char. Ce marqueur de fin de ligne peut être à la fois reconnu et généré par les procédures et fonctions spéciales de fichier texte suivantes :

Nom Description
Writeln(F) Cette procédure permet de terminer la ligne courante du fichier texte F.
Readln(F) Cette procédure permet de passer au début de la ligne suivante du fichier texte F (F↑ devient le premier caractère de la ligne suivante).
Eoln(F) Cette fonction booléenne permet d'indiquer si la fin de la ligne courante dans le fichier texte F a été atteinte. (Si elle vrai, alors F↑ correspond à la position d'un séparateur de ligne, mais F↑ est un blanc.)

Si F est un fichier texte et Ch une variable de caractère, alors :

Write(F,Ch);

est une abréviation de :

Begin
 F↑:=Ch; Put(F)
End

Pour la lecture :

Read(F,Ch);

affecte le caractère à la position actuelle du fichier F ou la valeur de F↑ à Ch, suivi d'un Get(F). Le choix dépend de la mise en oeuvre.

Les Input et Output sont les noms de deux variables de fichier texte standard utilisées comme paramètres de programme pour la lecture et l'écriture lisibles de texte. Elles peuvent être utilisés par des procédures Read, Write, Readln et Writeln.

Le schéma de programme suivant utilise les conventions ci-dessus pour illustrer certaines opérations typiques effectuées sur des fichiers texte. Premièrement, l'écriture d'un fichier texte Y. Supposons que P(C) calcule un caractère (suivant) et l'affecte au paramètre C. Si la ligne courante doit se terminer, une variable booléenne B1 est mise à TRUE; et si le texte doit être terminé, B2 est mis à TRUE.

  1. Var
  2.  Y:Text;
  3.  C:Char;
  4.  B1,B2:Boolean;
  5.  
  6. Procedure P(C:Char);Begin
  7.  { ... }
  8. End;
  9.  
  10.  
  11. BEGIN
  12.   { ... }
  13.  Rewrite(Y);
  14.  Repeat
  15.   Repeat
  16.    P(C);
  17.    Write(Y,C)
  18.   Until B1;
  19.   WriteLn(Y)
  20.  Until B2;
  21. END.

Deuxièmement, lire un fichier texte X. Supposons que Q(C) désigne le traitement d'un caractère (suivant) C. Le R désigne une action à exécuter lors de la rencontre de la fin d'une ligne.

  1. Var
  2.  X:Text;
  3.  C:Char;
  4.  
  5. Procedure Q(C:Char);Begin
  6.  { ... }
  7. End;
  8.  
  9. Procedure R;Begin
  10.  { ... }
  11. End;
  12.  
  13. BEGIN
  14.   { ... }
  15.  Reset(X);
  16.  While Not Eof(X) do Begin
  17.   while not Eoln(X) do
  18.   Begin
  19.    Read(X,C); Q(C)
  20.   End;
  21.   R; ReadLn(X)
  22.  End;
  23. END.

Troisièmement, copie d'un fichier texte X dans un fichier texte Y tout en préservant la structure de ligne de X :

  1. Var
  2.  X,Y:Text;
  3.  C:Char;
  4.  
  5. BEGIN
  6.   { ... }
  7.  Reset(X); Rewrite(Y);
  8.  While Not Eof(X) do Begin
  9.   While Not Eoln(X) do Begin
  10.    Read(X,C); Write(Y,C)
  11.   End;
  12.   Readln(X);WriteLn(Y);
  13.  End;
  14. END.

Remarque



PARTAGER CETTE PAGE SUR
Dernière mise à jour : Dimanche, le 11 novembre 2020