drik's wiki informatique Languages Turbo Pascal Abs-Copy.html

Abs

Fonction : Numérique 3, SYS : 4, 5, 6

Syntaxe

Abs (nbre)

nbre est une expression numérique valide de la version de Turbo Pascal utilisée.

Description

La fonction Abs renvoie la valeur absolue du nombre transmis par son argument. Elle accepte tous les types numériques connus par la version de Turbo Pascal avec laquelle on travaille, même les nombres non signés. Son résultat est du même type que l'argument transmis.

Exemples

Si res := Abs (25.8) alors res = 25.8
Si res := Abs (-25.8) alors res = 25.8

Absolute

Mot réservé 3, 4, 5, 6

Syntaxe

     identv1 : dentt1 Absolute n1 : n2;
ou   identv2 : identt2 Absolute identv3;

identv1, identv2 et identv3 sont des identificateurs de variables ; identt1 et identt2 sont des identificateurs de types ; n1 et n2 sont des entiers non signés.

Description

La clause Absolute permet, lors de la déclaration d'une variable, de définir de manière absolue son emplacement en mémoire ou de donner à une variable la même adresse que celle d'une autre variable définie précédemment. Le premier nombre donne l'adresse du segment (base), le second le déplacement par rapport à cette adresse de base (offset). L'adresse est habituellement donnée sous la forme hexadécimale et doit être comprise entre $0000 et $FFFF (pour rappel, on fait précéder les chiffres du symbole « $ » pour indiquer la notation hexadécimale).

Remarques

· Lors de l'emploi de Absolute, on ne peut spécifier qu'un seul identificateur à la fois. L'adresse spécifiée doit être comprise dans l'intervalle $0000 .. $FFFF, la variable de même adresse doit être déclarée préalablement. Les erreurs lors de l'emploi de la clause Absolute sont détectées lors de la compilation.

· La version 3 de Turbo Pascal permet d'utiliser les identificateurs CSeg (Code Segment) et DSeg (Data Segment) pour définir la partie segment de l'adresse. Cette possibilité n'existe plus avec les versions 4, 5 et 6.

Exemples

Var premier : Integer Absolute $0003:$00A3;

Une variable premier est déclarée et placée à l'adresse 0003:OOA3.

Var nom : String [25];
longueurnom : Word Absolute nom;

Une variable nom de type chaîne de 25 caractères est déclarée ainsi qu'une variable longueurnom de type Word qui a comme adresse le premier octet de la variable nom. C'est dans cet octet qu'est stockée la longueur effective de la chaîne nom.

Addr

Fonction : Pointer   3, SYS : 4, 5, 6

Syntaxe

Addr (x)

x peut être une variable, une fonction ou une procédure.

Description

La fonction Addr renvoie l'adresse en mémoire centrale de l'élément qui lui est donné comme argument. En Turbo Pascal 3, cet élément ne peut être qu'une variable. A partir de la version 4, il peut être une fonction ou une procédure. Plus précisément il s'agit de l'adresse du premier octet de l'élément. Cette adresse est codée sur 32 bits, le segment et l'offset.

Remarques

· A partir de Turbo Pascal 4, l'opérateur @ effectue exactement le même travail que l'opérateur Addr.

· Le résultat étant de type pointeur au sens strict, il doit être assigné à une variable Pointer, c'est-à-dire un pointeur sans type. On ne peut affecter une adresse obtenue à l'aide de Addr ou @ à un pointeur typé (défini à l'aide du symbole « ^ »).

Exemple

Var adrreel, adrtabl : Pointer;
...
adrreel := Addr (longueur);
addtabl := @ (Mat[1, 2]);
...

L'adresse en mémoire de la variable longueur est stockée dans addreel, celle de Mat[1,2] dans asstabl.

And

Opérateur   3, 4, 5, 6

Syntaxe

exp1 And exp2

exp1 et exp2 sont des expressions booléennes ou entières.

Description

L'opérateur And correspond au " et " logique (expressions booléennes) et arithmétique (expressions arithmétiques). Dans le cas d'expressions booléennes, le résultat est True (vrai) si les deux expressions sont vraies, sinon le résultat est False (faux). Dans le cas d'expressions arithmétiques, une comparaison bit par bit est effectuée entre les deux entiers.

Remarques

· Les opérateurs doivent être tous les deux de type Integer ou Boolean. Les erreurs de type des opérateurs sont diagnostiquées à la compilation : Error 41 : Operand types do not match operator.

· La priorité des opérateurs booléens est plus grande que celle des opérateurs de comparaison. Une expression comme r < 34.76 And j = 45 donnera donc une erreur de compilation. L'emploi des parenthèses est indispensable dans ce genre de cas.

Exemples

While (r < 34.76) And (j = 45) Do ReadLn (r, j);

Une opération de lecture est effectuée tant que r est plus petit que 34.76 et que j est égal à 45.

Res := nbre And 3;

Si nbre = 2 alors res vaudra 2 :

nbre : 00000010
3 : 00000011
---------------
res  : 00000010

Append

Procédure 3, SYS : 4, 5, 6

Syntaxe

Append (varfich);

varfich est une variable de type fichier texte.

Description

La procédure Append permet d'initialiser un fichier texte en mode ajout. La fenêtre d'écriture est donc positionnée à la fin du fichier et la fonction Eof renvoie toujours True. La seule opération qui est alors possible est l'écriture sur le fichier.

Remarques

· Le fichier peut déjà avoir été ouvert à l'aide de Reset ou de Rewrite. Le fichier est alors fermé et les buffers vidés avant de l'ouvrir à l'aide de Append.

· Il est impératif que la variable de type fichier soit associée à un fichier Ms-Dos à l'aide de Assign.

· Si Append est impossible, une erreur est renvoyée par l'intermédiaire de IoResult. Toutefois, pour éviter que le programme se termine prématurément, la directive de compilation {$I-} doit avoir été spécifiée.

Exemple

{SI-}
Assign (fich, 'C:\DATA\TEXTE');
Append (fich);
{SI+}

La variable fich est associée au fichier Ms-Dos C:\DATA\TEXTE, ensuite la variable fich est initialisée pour ajouter des informations à la fin du fichier.

Arc

Procédure GRAPH : 4, 5, 6

Syntaxe

Arc (x, y, angle_a, angle_b, r);

x et y sont des expressions de type Integer et angle_a, angle_b et r de type Word.

Description

La procédure Arc dessine un arc de cercle dont le centre est le point de coordonnées (x, y), de rayon r, compris entre l'angle angle_a et angle_b. Les angles sont donnés en degrés de la manière trigonométrique habituelle : dans le sens inverse des aiguilles d'une montre avec le zéro à 3 heures.

Le type du trait (continu, pointillé, etc.) et l'épaisseur de la ligne sont définis par SetLineStyle, la couleur par SetColor et le facteur de correction de l'allongement par SetAspectRatio. La procédure Circle ne modifie pas la valeur du pointeur courant. Suivant la définition de la fenêtre active donnée par SetViewPort, le cercle peut ne pas être dessiné en entier.

Les extrémités de l'arc sont obtenues par GetArcCoords.

Remarque

Dans certains cas, il y a conflit entre Arc et SetWriteMode(1).

Exemple

Arc (100, 100, 90, 180, 50);

Dessine un arc du cercle de centre (100, 100) et de rayon 50, dont le départ est à 90 degrés et la fin à 180 degrés.

ArcTan

Fonction : Real   3, SYS : 4, 5, 6

Syntaxe

ArcTan (r)

r est une expression de type Real.

Description

La fonction ArcTan renvoie, en radians, le nombre dont la tangente vaut r.

Remarque

Comme dans la plupart des langages de programmation, les fonctions trigonométriques travaillent en radians et non en degrés.

Pour rappel :

angle en degrés = (180 / pi) * angle en radians

angle en radians = (pi / 180) * angle en degrés

Exemple

angle := (180 / Pi) * 2 * ArcTan(rayon / (p - long));

Grâce au facteur de conversion 180/Pi, angle contiendra, en degrés, 2 fois Arctg (rayon/(p-long)).

Array

Opérateur   3, 4, 5, 6

Syntaxe

Array [type_indice] Of type_de_base;

type_indice est un type scalaire, soit ShortInt, Integer, Byte, Word, Boolean, Char, énuméré (à l'exception de LongInt) ou un intervalle de ceux-ci et type_de_base le type de chaque élément du tableau. Attention, les crochets font partie de la syntaxe.

Description

Ce mot est utilisé dans la déclaration de variable (Var) ou de type (Type) tableau. Une variable de ce type est un ensemble de taille préalablement définie d'éléments de même type, accessibles par l'intermédiaire de leur indice. En Pascal le nombre de dimensions des tableaux n'est pas limité par la définition du langage. Lorsqu'il y a plus d'une dimension, les différents indices sont séparés par une virgule.

Remarques

· En réalité, en Turbo Pascal, la taille d'un tableau, comme celle des autres variables structurées, ne peut dépasser 64 Ko. Si le tableau est trop important, le dépassement de taille est diagnostiqué lors de la compilation.

· Bien que syntaxiquement il serait possible de se servir du type Integer comme type d'indice, pratiquement, cela conduit à un dépassement de capacité et un intervalle d'entiers sera employé.

Exemple

Type matrice55 : Array [1..5, 1..5] Of Real;
ind   : 15.. 25;
Var tabl : Array [Byte] Of Char;
curo : Array [ind] Of Boolean;

Un type matrice55 est défini comme un tableau de 5x5 réels. Le type ind est défini comme un intervalle de 15 à 25 d'entiers. Une variable tabl est déclarée comme un tableau de caractères dont l'indice est de type octet. Une deuxième variable curo est déclarée comme un tableau de booléens dont l'indice est de type ind.

ASM

Mot réservé 6

Syntaxe

ASM
  instructasm1
  instructasm2
  ...
  instructasmn
End

instructasm1, instructasm2,... sont des instructions valides en assembleur.

Description

Depuis sa version 6 le compilateur Turbo Pascal propose une alternative intermédiaire aux instructions InLine et External. Il est en effet possible d'intégrer du code assembleur directement dans le programme pascal grâce à la présence d'un assembleur intégré : Basm.

Cette possibilité est considérablement plus souple que InLine puisque, d'une part, il n'est pas nécessaire d'entrer le code en hexadécimal et, d'autre part, l'ensemble ASM - End est considéré comme une simple instruction et ne doit donc pas être associé à une procédure entière.

Bien que la syntaxe soit légèrement plus limitée que celle de Turbo Assembler ou de Masm, il est nettement moins lourd d'intégrer directement le code assembleur dans le texte du programme Turbo Pascal que d'avoir recourt à un second environnement séparé de Turbo Pascal.

Remarque

A la différence de Turbo Pascal, la fin de ligne est un délimiteur de fin d'instruction. Il est également possible de se servir du caractère ; pour placer plusieurs instructions sur la même ligne. Les commentaires doivent être placés entre accolades, comme en Pascal, mais en fin de ligne et peuvent également servir de délimiteurs de fin d'instruction.

Exemple

ASM
  MOV CX, 1 {place la valeur 1 dans le registre CX}
  ADD AX, 4 {ajoute la valeur 4 au registre AX}
End

Assign

Procédure 3, SYS : 4, 5, 6

Syntaxe

Assign (var_fich, nom_fich);

var_fich est une variable de type fichier et nom_fich une variable ou une constante chaîne de caractères.

Description

La procédure Assign associe une variable déclarée de type fichier avec un nom de fichier au sens Ms-Dos du terme. Elle est rendue nécessaire car la syntaxe des noms de variables ne suit pas la syntaxe des noms de fichiers de différents systèmes opératoires. De plus, elle permet au cours du même programme ou au cours de programmes différents, d'associer la même variable à plusieurs fichiers différents.

Remarques

· La procédure Assign ne peut se dérouler correctement, une erreur est renvoyée par l'intermédiaire de IoResult. Toutefois, pour éviter que le programme ne se termine prématurément, la directive de compilation {$I-} doit avoir été spécifiée.

· La procédure Assign peut être employée pour créer de nouveaux fichiers ; il n'y a donc pas d'erreur si le fichier Ms-Dos n'existe pas encore.

· La spécification du nom de fichier Ms-Dos doit suivre les règles habituelles du système opératoire ; en particulier, elle peut comporter un nom d'unité et de répertoire.

Exemple

Nom_ms_dos := 'C:\DATA\TEXTE.TXT\';
Assign (fich, nom_ms_dos);

La variable fich est associées au fichier Ms-Dos C:\DATA\TEXTE.TXT.

AssignCrt

Procédure CRT : 4 , 5, 6

Syntaxe

AssignCrt (f);

f est une variable de type fichier de texte (déclarée Text).

Description

La procédure AssignCrt permet d'associer un fichier texte à l'écran. L'affichage obtenu après l'appel à AssignCrt est réputé beaucoup plus rapide qu'une écriture habituelle, obtenue sans préciser le nom du périphérique de sortie.

Exemple

AssignCrt (f);
Writeln (f, variable);

est plus rapide que

WriteLn (variable);

Bar

Procédure GRAPH : 4, 5, 6

Syntaxe

Bar (x_sup, y_sup, x_inf, y_inf);

x_sup, y_sup, x_inf et y_inf sont des expressions de type Integer.

Description

La procédure Bar dessine une surface rectangulaire depuis le point supérieur gauche (x_sup, y_sup) jusqu'au point inférieur droit (x_inf, y_inf). Par opposition à Rectangle, la surface est remplie avec le motif et la couleur définis à l'aide de SetFillStyle et éventuellement de SetFillPattern. Suivant la définition de la fenêtre active donnée par SetViewPort, le rectangle peut ne pas être dessiné en entier.

Exemple

SetFillStyle (4, 1);
Bar (100, 50, 200, 250);

Le style de remplissage est défini de type 4 (SlashFill = traits obliques épais) et de couleur 1. Une surface rectangulaire est dessinée entre les points de coordonnées (100, 50) et (200, 250).

Bar3D

Procédure GRAPH : 4, 5, 6

Syntaxe

Bar3D (x_sup, y_sup, x_inf, y_inf, prof, sommet);

x_sup, y_sup, x_inf et y_inf sont des expressions de type Integer, prof de type Word et sommet de type Boolean.

Description

La procédure Bar3D dessine une surface rectangulaire depuis le point supérieur gauche (x_sup, y_sup) jusqu'au point inférieur droit (x_inf y_inf) en simulant un effet tridimensionnel. Le paramètre prof indique l'épaisseur à donner exprimée en pixels et sommet détermine si une face supérieure doit ou non être dessinée.

Comme dans le cas de Bar, la surface est remplie avec le motif et la couleur définis à l'aide de SetFillStyle et éventuellement de SetFillPattern. Suivant la définition de la fenêtre active donnée par SetViewPort, le rectangle peut ne pas être dessiné en entier.

Exemple

SetFillStyle (4, 1);
Bar3D (100, 50, 200, 250, 10, True);

Le style de remplissage est défini de type 4 (SlashFill = traits obliques épais) et de couleur 1. Une surface rectangulaire est dessinée entre les points de coordonnées (100, 50) et (200, 250), 10 pixels sont utilisés pour donner un effet 3D et une surface supérieure est dessinée.

Begin

Mot réservé 3, 4, 5, 6

Syntaxe

Begin

Description

Ce mot réservé marque le début des instructions composées. Les instructions composées sont des suites d'instructions séparées par le symbole « ; » et encadrés par les mots réservés Begin et End. Les instructions sont de quatre types : affectations, appels de procédures, instructions de contrôle et instructions composées. La partie exécutable des programmes procédures et fonctions à elle-même la forme d'une instruction composée.

Remarques

· Les instructions Begin..End mal balancées sont repérées lors de la compilation, mais le message d'erreur n'est pas toujours explicite (exemple : Error 85 : '';'' expected ou Error 4 : ''.'' expected).

· Comme dans la grande majorité des cas, à un Begin correspond un End, une bonne manière de ne pas en oublier et d'avoir une structure de programme correcte est de les aligner verticalement.

Exemple

If a > 3 Then
Begin
j := Sqr (1);
r := r / a;
a := a - 1;
End;

Le bloc Begin - End indique au compilateur que trois instructions sont soumises à If.

BlockRead

Procédure 3, SYS : 4, 5, 6

Syntaxe

BlockRead (var_fich, var, enrs, enrs_lus);

var_fich est une variable de type fichier non typé, var une variable quelconque, enrs et enrs_lus des variables de type Integer en Turbo Pascal 3 et Word à partir de la version 4.

Description

La procédure BlockRead permet la lecture d'enregistrements sur des fichiers non typés. Le premier paramètre spécifie le nom du fichier, le second la variable en mémoire, le troisième le nombre d'enregistrements à lire, le dernier (optionnel) renvoie le nombre d'enregistrements effectivement lus. Lorsque l'on arrive à la fin du fichier le nombre d'enregistrements lus peut être plus petit que celui qui a été demandé.

Il est impossible, depuis la version 4, de ne pas lire un enregistrement en entier. D'une manière générale, il est conseillé de spécifier la taille des enregistrements à lire à l'aide de la syntaxe étendue de Reset ou de Rewrite. Soit celle-ci est connue et il n'y a pas de problème, soit elle est inconnue et on spécifiera 1 octet comme taille d'enregistrement.

Remarques

· Si BlockRead ne se déroule pas correctement, une erreur est renvoyée par l'intermédiaire de IoResult. Toutefois, pour éviter que le programme ne se termine prématurément, la directive de compilation {$I-} doit avoir été spécifiée.

· Avant toute opération de lecture, les fichiers non typés doivent être ouverts avec Assign et Reset ou Rewrite.

· Sur les fichiers non typés, les opérations autres que la lecture et l'écriture peuvent se faire avec les procédures et les fonctions habituelles des fichiers typés.

· La quantité lue en une fois ne peut dépasser 64 Ko, elle est donnée en multipliant le nombre d'enregistrements dont on demande la lecture par la taille de l'enregistrement spécifiée lors de Reset ou Rewrite. Si elle n'est pas spécifiée chaque enregistrement vaut 128 octets.

Exemple

Repeat
BlockRead (fich, mat, 1024, res);
Until res < 1024;

Lit le fichier fich, 1024 enregistrements à la fois jusqu'à la fin du fichier. mat aura été défini, par exemple, comme Array [1..1024] Of Byte et la taille des enregistrements aura été mise à 1.

BlockWrite

Procédure 3, SYS : 4, 5, 6

Syntaxe

BlockWrite (var_fich, var, enrs, enrs_ecrit);

var_fich est une variable de type fichier non typé, var une variable quelconque, enrs et enrs_ecrit des variables de type Integer en Turbo Pascal 3 et Word à partir de la version 4.

Description

La procédure BlockWrite permet l'écriture d'enregistrements sur des fichiers non typés. Le premier paramètre spécifie le nom du fichier, le second la variable en mémoire, le troisième le nombre d'enregistrements à écrire, le dernier (optionnel) renvoie le nombre d'enregistrements effectivement écrits. Il est clair que si ce paramètre est différent du nombre d'enregistrements dont l'écriture a été demandée c'est qu'une erreur est intervenue (Disque plein, par exemple).

D'une manière générale, il est conseillé de spécifier la taille des enregistrements à lire à l'aide de la syntaxe étendue de Reset ou de Rewrite. Soit celle-ci est connue et il n'y a pas de problème, soit elle est inconnue et on spécifiera 1 octet comme taille d'enregistrement.

Remarques

· Si BlockWrite ne se déroule pas correctement, une erreur est renvoyée par l'intermédiaire de IoResult. Toutefois, pour éviter que le programme ne se termine prématurément, la directive de compilation {$I-} doit avoir été spécifiée.

· Avant toute opération d'écriture, les fichiers non typés doivent être ouverts avec Assign et Reset ou Rewrite.

· Sur les fichiers non typés, les opérations autres que la lecture et l'écriture peuvent se faire avec les procédures et les fonctions habituelles des fichiers typés.

· La quantité écrite en une fois ne peut dépasser 64 Ko, elle est donnée en multipliant le nombre d'enregistrements dont on demande la lecture par la taille de l'enregistrement spécifié lors de Reset ou Rewrite. Sinon, chaque enregistrement vaut 128 octets.

Exemple

BlockWrite (fich, mat, SizeOf (mat), check);

Le contenu de la variable mat est écrit en entier dans le fichier fich. Si check est différent de SizeOf (mat), c'est qu'une erreur d'écriture s'est produite.

Boolean

Identificateur de type   3, 4, 5, 6

Syntaxe

     identv1, identv2,... : Boolean;
ou   identt1, identt2,... = Boolean;

identv1, identv2,... sont des identificateurs de variables et identt1, identt2,... sont des identificateurs de types.

Description

Ce mot est utilisé pour déclarer des variables logiques ou des types logiques (booléens). Les variables de ce type ne peuvent prendre que deux valeurs True (vrai) et False (faux). Les variables booléennes sont représentées en mémoire sous la forme d'un octet non signé. True étant représenté sous la forme de ''1'' et False sous la forme de ''0'', Pascal est un des rares langages de programmation dans lequel True soit plus grand que False.

Remarques

· Une variable booléenne peut recevoir le résultat d'une expression booléenne (faisant appel aux opérateurs Not, And, Or, XOr), d'une opération de comparaison (appel aux opérateurs : <, <=, <>,...), d'un appel à une fonction booléenne (comme Odd(n) ou Eof(f)) ou d'une combinaison des éléments précédents.

· Les erreurs d'affectation aux variables booléennes sont correctement diagnostiquées lors de la compilation.

Exemple

Type bascule = Boolean;
Var drapeau, flag : Boolean;

Le type bascule est défini comme synonyme du type booléen et les variables drapeau et flag sont déclarées de type booléen.

Byte

Identificateur de type   3, 4, 5, 6

Syntaxe

     identv1 identv2,... : Byte;
ou   identt1 identt2,... = Byte;

identv1, identv2,... sont des identificateurs de variables et identt1, identt2,... sont des identificateurs de type.

Description

Ce mot réservé est utilisé lors de la déclaration de variables Byte ou de types Byte. Le Byte (octet) est un intervalle d'lnteger dont le domaine est 0..255 ; les variables de ce type sont stockées en mémoire sous la forme d'un octet non signé. Le type Byte est compatible, dans son domaine, avec les autres types entiers.

Remarques

· La valeur des variables de ce type doit être comprise entre 0 et 255. Comme aucune vérification n'est effectuée au moment de l'exécution du programme, si le nombre à stocker dépasse l'intervalle de définition, il n'y pas d'erreur d'exécution et le programme peut avoir un comportement aberrant.

· Ce type est une extension au Pascal standard.

Exemple

Type mot, indice = Byte;
Var ind1, lot : Byte;

Les types mot et indice sont définis comme synonymes du type Byte et ind1 et lot sont des variables déclarées de ce type.

Case

Mot réservé 3, 4, 5, 6

Syntaxe

Case select Of
  et1 : instr1;
  et2 : instr2;
  ...
  etn : instrn;
Else
 instr;
End;

select est une expression (le sélecteur) d'un type scalaire dont les bornes doivent être comprises entre
-32768 et +32767 ; et1, et2,... sont des listes de constantes, du même type et instr1, instr2,... des instructions simples ou composées.

Description

Cette instruction conditionnelle composée permet de sélectionner une instruction simple ou composée en fonction de la valeur d'une variable de contrôle : le sélecteur. Les listes de constantes peuvent être de trois types : uniques, séparées par des virgules pour une énumération, séparées par le symbole «.. » pour un intervalle. Il est possible d'utiliser une option Else qui sera exécutée si le sélecteur ne correspond à aucune des possibilités énumérées. En l'absence de clause Else, aucune instruction ne sera exécutée.

Remarques

· Le sélecteur doit être d'un des types suivants : ShortInt, Integer, Byte, Boolean, Char ou un type énuméré par l'utilisateur, mais ni Word ni LongInt. En aucun cas de type Real !

· Si le sélecteur n'est pas de type scalaire, l'erreur est repérée à la compilation : Error 39 : Ordinal expression expected.

· Le fait qu'aucune instruction ne soit exécutée, en l'absence de clause Else, lorsque le sélecteur ne correspond pas à une valeur possible, est une extension au Pascal standard.

Exemple

Case i Of
1 : prix := prix * 0.95;
2, 3 : prix := prix * 0.90;
4 .. 10 : prix := prix * 0.85;
Else
prix := prix * 0.80;
End;

En fonction de la variable i, la variable prix prendra différentes valeurs. Une première si i est égal à 1, une deuxième si i vaut 2 ou 3, une troisième si i est compris entre 4 et 10 et enfin une cinquième dans les autres cas.

Char

Identificateur de type   3, 4, 5, 6

Syntaxe

     identv1, identv2,... : Char;
ou   identt1, identt2,... = Char;

identv1, identv2,... sont des identificateurs de variables et identt1, identt2,... sont des identificateurs de type.

Description

Ce mot est utilisé pour déclarer des variables caractères ou des types caractères au sens Pascal standard du terme. Le Pascal définissant le type Char comme l'ensemble des caractères accessibles sur l'ordinateur où l'on travaille au moment où l'on y travaille, il s'agit ici des 256 caractères du code ASCII étendu de l'IBM PC.

Une variable de ce type est habituellement représentée en entourant le caractère de guillemets
(exemple : 'A'). Le caractère guillemet étant représenté lui-même en le doublant et en l'entourant de guillemets soit quatre guillemets au total : "'. Les caractères de contrôle (code ASCII de 0 à 31) peuvent être représentés en utilisant Ctrl- ou ^ suivi d'une lettre (exemple : Ctrl-G ou ^G pour 7e caractère ASCII). Tous les caractères peuvent être représentés en faisant précéder leur code ASCII du symbole « # » (exemple : #7 est équivalent à Ctrl-G ou ^G).

Les variables de type caractère sont stockées sur un octet en mémoire centrale.

Remarque

Lorsqu'ils sont définis par leur code ASCII, les caractères doivent appartenir à l'intervalle 0..255. Dans les autres cas, il est pratiquement impossible, sur le PC, de sortir de leur domaine de validité. Si le code correspondant sort de l'intervalle, c'est le reste de la division par 255 qui est conservé.

Exemple

Type lettre = Char;
Var initiale, abreviation : Char;

Le type lettre est défini comme synonyme du type Char, les variables initiale et abreviation sont déclarées de type Char.

ChDir

Procédure 3, SYS : 4, 5, 6

Syntaxe

ChDir (rep);

rep est une variable ou une constante de type String.

Description

La procédure ChDir modifie le répertoire par défaut, c'est-à-dire celui qui est utilisé lorsqu'un nom d'unité ou de répertoire n'est pas donné dans un nom de fichier. L'argument utilisé est une chaîne de caractères spécifiant l'unité et le répertoire par défaut.

Remarques

· A la différence de Change Directory de Ms-Dos, la procédure ChDir permet également de changer d'unité par défaut.

· La syntaxe de l'écriture de l'argument doit suivre celle utilisée par Ms-Dos.

· Il n'est pas permis de spécifier un répertoire inexistant.

· Si le répertoire ou l'unité spécifiée n'existe pas, une erreur est renvoyée par l'intermédiaire de IoResult. Toutefois pour éviter que le programme se termine prématurément, utilisez la directive de compilation
{ $I}.

Exemple

ChDir ('C:\DATA' );

Donne, comme unité par défaut, l'unité C:, répertoire Data.

Chr

Fonction : Char 3, SYS : 4, 5, 6

Syntaxe

Chr(i)

i est une expression de type Integer en Turbo Pascal 3 et Byte à partir de la version 4.

Description

La fonction Chr renvoie le caractère auquel correspond le code ASCII transmis comme argument. En Turbo Pascal 3 l'argument doit être de type Integer, à partir de la version 4, il peut être de type Integer ou Byte.

Exemple

i := 65; 
WriteLn (Chr(i));

Ce morceau de programme écrit, à l'écran, la lettre A.

Circle

Procédure GRAPH : 4, 5, 6

Syntaxe

Circle (x, y, r);

x et y sont des expressions de type Integer et r de type Word.

Description

La procédure Circle dessine un cercle dont le centre est le point de coordonnées (x, y) et le rayon r. Le type du trait (continu, pointillé,...) et l'épaisseur de la ligne sont définis par SetLineStyle, la couleur par SetColor, le facteur de correction de l'allongement par SetAspectRatio.

La procédure Circle ne modifie pas la valeur du pointeur courant. Suivant la définition de la fenêtre active donnée par SetViewPort, le cercle peut ne pas être dessiné en entier.

Remarque

Dans certains cas, il y a conflit entre Circle et SetWriteMode (1).

Exemple

Circle (50, 100, 75);

Dessine un cercle dont le centre est le point (50, 100) et le rayon 75. Ce cercle n'est pas dessiné entièrement à l'écran.

ClearDevice

Procédure GRAPH : 4, 5, 6

Syntaxe

ClearDevice;

Description

La procédure ClearDevice vide entièrement l'écran et réattribue leur valeur par défaut à tous les paramètres d'affichage graphique :

- position du curseur : en haut à gauche de l'écran,

- police de caractères,

- style des caractères,

- justification du texte,

- taille des caractères,

- style de remplissage,

- couleur de remplissage,

- motif de remplissage,

- style de ligne,

- motif de ligne,

- couleur de fond,

- couleur du tracé de figure,

- palette,

- fenêtre graphique active.

Cette procédure doit être utilisée lorsqu'il est nécessaire de vider entièrement l'écran et de réinitialiser l'ensemble des paramètres graphiques. Pour réinitialiser uniquement la fenêtre d'affichage définie, on utilisera ClearViewPort.

Exemple

Randomize;
For i := 1 To 100 Do OutTextXY (Random (GetMaxX), Random (GetMaxY), Chr(Random(255)));
Readln;
ClearDevice;

Cent caractères sont écrits de manière aléatoire sur l'écran. Après une pause provoquée par Readln, l'écran entier est effacé.

ClearViewPort

Procédure GRAPH : 4, 5, 6

Syntaxe

ClearViewPort;

Description

La procédure ClearViewPort vide entièrement la fenêtre active et réattribue leur valeur par défaut à la plupart des paramètres d'affichage graphique :

- position du curseur : en haut à gauche de la fenêtre;

- police et style des caractères,

- justification du texte,

- taille des caractères,

- style de remplissage,

- couleur de remplissage,

- motif de remplissage,

- style de ligne,

- motif de ligne,

- couleur de fond,

- couleur de tracé de figure,

- palette.

Exemple

Randomize;
For i := 1 To 100 Do OutTextXY (Random (GetMaxX), Random (GetMaxY), Chr (Random ( 255)));
Readln;
SetViewPort ( 50, 50, 300, 300, True);
ClearViewPort;

Cent caractères sont écrits de manière aléatoire sur l'écran. Après une pause provoquée par Readln, une fenêtre est définie, et ensuite effacée.

Close

Procédure 3, SYS : 4, 5, 6

Syntaxe

Close (fich);

fich est une variable de type fichier.

Description

La procédure Close permet de fermer un fichier. Cette opération devrait être réalisée dès que l'on n'a plus besoin d'un fichier. Elle met à jour le fichier en vidant les tampons créés par Ms-Dos. Il n'y a donc plus de risque de perte d'information en cas de fin anormale du programme. Elle libère l'identificateur Ms-Dos pour pouvoir ouvrir d'autres fichiers. Le nombre de fichiers pouvant être ouverts est défini par la commande Files du fichier Config.Sys. La même variable fichier pourra être associée à un autre fichier sur le disque.

Remarques

· Si la procédure Close ne se déroule pas correctement, une erreur est renvoyée par l'intermédiaire de IoResult. Toutefois, pour éviter que le programme ne se termine prématurément, utilisez la directive de compilation {$I}.

· La fin normale du programme a pour effet de fermer tous les fichiers ouverts par celui-ci. La procédure Close, si elle est bien utile, n'est pas indispensable.

· Cette procédure n'a aucun effet sur les organes logiques (Con, Lpt,...) utilisés comme des fichiers texte.

Exemple

Close (fich);

Cette instruction ferme le fichier disque associé à fich

CloseGraph

Procédure GRAPH : 4, 5, 6

Syntaxe

CloseGraph;

Description

La procédure CloseGraph est utilisée pour revenir en mode texte après une session graphique. Lorsque les opérations en mode graphique sont terminées, on devrait toujours appeler CloseGraph pour rétablir l'affichage texte et libérer la mémoire utilisée par le pilote graphique.

Remarque

Si le retour au mode texte est temporaire, il est possible d'utiliser à tout moment RestoreCrtMode pour revenir au mode graphique, sans devoir initialiser le mode graphique par SetGraphMode.

Exemple

pilote := EGA;
mode := EGAHI;
InitGraph (pilote, mode, 'C:\TP\BGI');
...
CloseGraph;

L'affichage graphique est initialisé par InitGraph, les opérations graphiques terminées un appel à CloseGraph permet de libérer la mémoire.

ClrEol

Procédure 3, CRT : 4, 5, 6

Syntaxe

ClrEol;

Description

La procédure ClrEol a pour effet d'effacer la partie de la ligne en cours comprise entre la position du curseur et les limites de la fenêtre qui est actuellement définie. S'il n'y a aucune fenêtre définie, la ligne est effacée depuis la position du curseur jusqu'au bord droit de l'écran (fenêtre par défaut). En fait, elle donne aux caractères la couleur du fond. Cette couleur peut être soit celle définie par défaut (Black en général), soit précisée par TextBackGround.

Après l'appel à ClrEol, la position du curseur n'est pas modifiée.

Exemple

GotoXY (10, 10);
ClrEol;

Efface la ligne 10 depuis le dixième caractère jusqu'au bord droit de l'écran si la fenêtre n'a pas été redéfinie à l'aide de Window.

ClrScr

Procédure 3, CRT : 4, 5, 6

Syntaxe

ClrScr;

Description

La procédure ClrScr a pour effet d'effacer l'écran. Plus précisément elle efface la fenêtre qui est actuellement définie. S'il n'y a aucune fenêtre définie c'est l'écran en entier qui sera effacé (fenêtre par défaut). De plus, elle donne aux caractère, la couleur du fond. Cette couleur peut être soit celle définie par défaut (Black en général), soit précisée par TextBackGround.

Après, l'appel à ClrScr le curseur est placé en haut à gauche de la fenêtre active.

Exemple

TextBackGround (5);
...
Window (5, 10, 15, 25);
ClrScr;

Donnera à la fenêtre comprise entre les colonnes 5 et 15 et les lignes 10 et 25 la couleur 5, c'est-à-dire le magenta. Le curseur sera placé au point (1, 1) de la fenêtre, c'est-à-dire à la coordonnée (5, 15) par rapport au coin supérieur gauche de l'écran.

Comp

Identificateur de type   4, 5, 6

Syntaxe

     identv1, identv2,... : Comp;
ou   identt1, identt2,... = Comp;

identv1, identv2,... sont des identificateurs de variables et identt1, identt2,... sont des identificateurs de type.

Description

Ce mot est utilisé lors de la déclaration de variables comparaison ou de types comparaison. Le type Comp est compatible avec le coprocesseur arithmétique. Les variables de ce type ne peuvent recevoir que des valeurs entières bien qu'il soit classé et traité comme un type de réels. Pour Turbo Pascal, le type est vu comme un réel, sans chiffre derrière la virgule. Une variable Comp est stockée en mémoire dans 8 octets, son domaine de validité est -2+63- 1..+2+63- 1, soit environ de -9 x 10+18 à +9 x 10+18 (près de 19 chiffres).

Remarques

· La valeur des variables de ce type doit être entière et comprise entre -9 x 10-18 et +9 x 10+18. Sur les nombres de type réel une vérification est effectuée en cas de dépassement de capacité (overflow) mais pas en cas de sous dépassement de capacité (underflow). Dans ce cas, il n'y a pas d'erreur d'exécution et le programme peut avoir un comportement aberrant.

· En Turbo Pascal 4 vous devez posséder un coprocesseur au moment de la compilation pour accéder au type Comp. Dans les versions 5 et 6, vous pouvez utiliser une émulation logicielle, mais celle-ci sera plus lente que les opérations sur les Real et que si le coprocesseur est physiquement présent (directive de compilation $N).

· Ce type est une extension au Pascal standard.

Exemple

Type mesure = comp;
Var longueur, largeur : Comp;

Le type mesure est défini comme synonyme du type Comp et les variables longueur et mesure sont déclarés de type Comp.

Concat

Fonction : String 3, SYS : 4, 5, 6

Syntaxe

Concat (ch1, ch2,...)

ch1, ch2,... sont des expressions de type String.

Description

Cette fonction est équivalente à l'addition de l'ensemble des chaînes de caractères qui lui sont transmises comme argument. Par extension au Pascal standard, l'opérateur + peut donner le même résultat que Concat, cette dernière fonction ayant été conservée dans un but de compatibilité avec d'autres versions de Pascal.

Remarque

Si la chaîne qui reçoit le résultat est plus courte que celui-ci le résultat sera tronqué à droite. En conséquence, si le résultat fait plus de 255 caractères, seuls les 255 premiers seront retenus.

Exemple

nom := 'Dupont';
prenom := 'Jean';
entete := Concat ('Monsieur', nom, , ' ', prenom);

La variable entete contiendra, 'Monsieur Dupont Jean' si elle a été au moins déclarée comme String [20]. Le même résultat aurait été obtenu par :

Entete := 'Monsieur' + nom +' ' + prenom;

Const

Mot réservé 3, 4, 5, 6

Syntaxe

    Const  ident1 = val1;
           ident2 = val2;
ou  Const ident3 : type3 = val3;
  ident4 : type4 = val4;

ident1, ident2,... sont les identificateurs de constante, val1, val2,... les valeurs prises par les constantes et type1, type2,... les types de ces constantes.

Description

Ce mot réservé est utilisé pour délimiter la partie définition de constantes des programmes, des procédures et des fonctions. Dans la version Pascal standard, elle associe un identificateur à une valeur qui ne pourra par la suite être altérée. Dans sa version étendue par Turbo Pascal, une déclaration de type est ajoutée à la version de base; on parlera alors de constante typée. La notion de constante typée est plus proche de celle de variable initialisée que de celle de constante au sens Pascal standard du terme, puisque la valeur de celle-ci peut être modifiée pendant le déroulement du programme.

Remarques

· L'utilisation des constantes facilite largement la maintenance des programmes puisqu'en cas de modification d'une valeur, il est plus facile de modifier une déclarative que de faire la chasse à cette valeur dans l'ensemble du programme.

· L'ordre des déclaratives du Turbo Pascal est plus souple que celui du Pascal standard. En effet, la seule règle applicable est : il est interdit de se servir d'un objet avant de l'avoir déclaré. En pratique, cela signifie que les définitions de constantes n'ont pas une position particulière par rapport aux autres déclarations et que l'on peut trouver plusieurs rubriques de définitions de constantes.

· Les constantes typées sont une extension au Pascal standard.

Exemple

Const  nom = 'Goliath';
tva = 1.19;
diviseur : Real = 0.02;

Deux constantes simples sont définies : nom et tva ; une constante typée est déclarée : diviseur de type Real et de valeur initiale 2 x 10-02.

Copy

Fonction : String 3, SYS : 4, 5, 6

Syntaxe

Copy (ch, pos, nbre)

ch est une expression de type String, pos et nbre de type Integer.

Description

La fonction Copy renvoie une sous chaîne de caractères. Elle est constituée de nbre caractères de la chaîne ch à partir du caractère pos.

Remarques

· Si le paramètre pos est plus grand que la longueur de la chaîne ch, une chaîne vide est renvoyée.

· Si le paramètre pos additionné de nbre est plus grand, que la longueur de la chaîne ch seuls les caractères à partir de pos jusqu'à la fin de ch sont renvoyés.

· Si les paramètres pos et nbre sortent de l'intervalle 1..255, on aura une erreur d'exécution.

Exemple

ch := 'Ceci est un exemple';
ss1 := Copy ( ch, 6, 3);
ss2 := Copy ( ch, 11, 20);

La variable ss1 vaudra 'est' et ss2 vaudra 'n exemple'.

copy, informatique, languages, pascal, turbo, drik, html, wiki, clearviewport, cleardevice, blockwrite, closegraph, blockread, assigncrt, absolute, boolean, clrscr, concat, clreol, circle, assign, arctan, append, array, close, begin, chdir, const, comp, addr, byte, char, case, description, syntaxe, exemple, remarques, remarque, exemples