READ |
Lecture |
IBM Personal Computer Pascal |
Syntaxe
Procedure READ(PI, P2, ... Pn);
|
Procedure READ(VAR F, PI, P2, ... Pn);
|
Paramètres
Nom |
Description |
F |
Ce paramètre permet d'indiquer l'identificateur de fichier. |
PI, P2, ... Pn |
Ce paramètre permet d'indiquer la liste de variable recevant les données. |
Description
Cette procédure permet de lire différentes données à partir d'une périphérique, d'un fichier ou de la console.
Remarques
- Le paramètre F désigne un fichier texte (type TEXT) et P1, P2, ... Pn désignent des variables (avec des valeurs M et N facultatives) de
type CHAR (ou une sous-intervalle), INTEGER (ou une sous-intervalle) ou REAL.
- Avec la fonction d'entrée/sortie étendue, les variables peuvent également être de type WORD (ou une sous-intervalle), un type énuméré (y compris BOOLEAN), un type de
pointeur, STRING ou LSTRING.
- Lorsqu'une variable d'un type de sous-intervalle est lue, la valeur lue doit être dans l'intervalle ou une erreur se produit, quel que soit le paramètre de $RANGECK.
- Le processus READ offre des types formatés (tout sauf CHAR, STRING et LSTRING) en lisant d'abord les caractères dans un LSTRING interne, puis
DECODE la chaîne de caractères pour obtenir la valeur. Deux points importants s'appliquent aux lectures formatées :
Le premier point, les espaces, les tabulations, les sauts de page et les marqueurs de ligne sont ignorés. Par exemple, lorsque vous effectuez READLN(I, J, K) où I, J et
K sont des nombres entiers, les nombres peuvent tous être sur la même ligne ou répartis sur plusieurs lignes.
Le deuxième point, les caractères sont lus tant qu'ils se trouvent dans l'ensemble de caractères valide pour le type souhaité, en utilisant la procédure
READSET. Par exemple, "-1-2-3" est lu comme la chaîne de caractères d'un seul INTEGER, mais donne une erreur dans
DECODE. Cette situation signifie que les éléments doivent être séparés par des espaces, des tabulations, des marqueurs de ligne ou un caractère non autorisé
dans le format.
- La procédure «READ(P1, P2, ... Pn)» est équivalent à la procédure «READ(INPUT, P1, P2,...Pn)».
- La procédure «READ(F, P1, P2, ... Pn)» est équivalent à «BEGIN READ(F, PI); READ(F, P2); ... READ(F, Pn);END;».
- Les valeurs M et N dans READ sont ignorées, sauf indication contraire pour une valeur N avec des types énumérés.
- Si P est de type CHAR, alors : «READ(F, P);» est équivalent à «BEGIN P:=F^; GET(F) END;».
- Si P est de type INTEGER (ou WORD) ou une sous-intervalle de celui-ci, alors READ(F, P) implique la lecture d'une séquence de caractères de F
formant un nombre selon la syntaxe Pascal normale et l'attribution du nombre à P. La notation non-décimale (16#C007, 8#74, 10#19,2#101, #Face) est acceptée pour INTEGER
et WORD. Si le paramètre P est un type INTEGER, un signe + ou - en tête est accepté. Si P est un type WORD, les nombres décimaux jusqu'à MAXWORD
sont acceptés (c'est-à-dire de 32768 à 65535).
- Si P est de type REAL, alors READ(F, P) implique la lecture d'une séquence de caractères de F formant un nombre du type approprié et attribuer le nombre à
P. La notation non décimale n'est pas acceptée. Lors de la lecture d'une valeur REAL, un nombre avec un point décimal en tête ou en fin (pas les deux bien sûr) est accepté,
même si ce format donne un avertissement s'il est utilisé comme constante dans un programme.
- Si P est un type énuméré ou BOOLEAN, un nombre est lu comme une sous-intervalle WORD et une valeur affectée à P telle que le nombre est la fonction ORD
de la valeur du type énuméré. De plus, si P est de type BOOLEAN, la lecture de l'une des séquences de caractères «TRUE» ou «FALSE» entraîne respectivement
l'affectation de TRUE et de FALSE à P. Le nombre lu doit être dans l'intervalle des valeurs ORD de la variable d'identifiants.
- Si P est un type de pointeur, un nombre est lu en tant que WORD et attribué à P, d'une manière définie par la mise en oeuvre de telle sorte que l'écriture d'un
pointeur et sa lecture ultérieure donnent la même valeur de pointeur. Les types d'adresse doivent être lus comme des WORD en utilisant la notation .R ou .S.
- Si P est une STRING(n), les n caractères suivants sont lus séquentiellement dans P. Marqueur de ligne précédent : les espaces, les tabulations ou les
sauts de page ne sont pas ignorés. Lorsque le marqueur de ligne est rencontré avant la lecture de n caractères, les caractères restants dans P sont définis sur des blancs et
la position du fichier reste au marqueur de ligne. Si la chaîne de caractères est remplie de n caractères avant que le marqueur de ligne ne soit rencontré, la position du fichier
reste au caractère suivant. Le paramètre P peut être le type de SUPER ARRAY de STRING (par exemple, un paramètre de référence ou une variable référent de pointeur).
La procédure READ(STRING) est pratique lors de la lecture de nombres regroupés sans espaces; par exemple, la lecture d'une ligne au format FORTRAN en tant que "(2014)" peut être
effectuée en lisant à plusieurs reprises dans une STRING(4) puis en appelant DECODE pour obtenir la valeur entière de la STRING.
- Si P est un LSTRING(n), alors les n caractères suivants sont lus séquentiellement dans P, et la longueur du LSTRING est définie sur n. Les marqueurs
de ligne, les espaces, les tabulations ou les sauts de page précédents ne sont pas ignorés. Lorsque le marqueur de ligne est rencontré avant la lecture de n caractères, la longueur de
LSTRING est définie sur le nombre de caractères lus et la position du fichier reste au marqueur de ligne. Si le LSTRING est rempli de n caractères avant que le marqueur de
ligne ne soit rencontré, la position du fichier reste au caractère suivant. Le paramètre P peut être le type de SUPER ARRAY de LSTRING (par exemple, un paramètre de référence
ou une variable référent de pointeur). La procédure READ(LSTRING) est pratique lors de la lecture de lignes entières à partir d'un fichier texte, en particulier lorsque la longueur de la
ligne est nécessaire. Par exemple, la façon la plus simple de copier un fichier texte est d'utiliser READLN et WRITELN avec une variable LSTRING.
Dernière mise à jour : Dimanche, le 19 avril 2020