Académique Documents
Professionnel Documents
Culture Documents
Le professeur WIRTH a conçu le langage PASCAL comme une aide à l'enseignement d'une
approche systématique de la programmation des ordinateurs. Cette approche est connue sous le
terme de programmation structurée.
PASCAL est reconnu aujourd'hui comme l'un des langages les plus performants que ce soit en
programmation professionnelle, éducative ou personnelle.
Dans les mains d'un programmeur expérimenté, il devient un outil de développement très
efficace en procurant des temps d'exécution et de compilation très courts.
DMSI/PROGRAMMATION -1-
Elements de base du langage
II.1.1 LETTRES
A..Z, a..z Aucune lettre accentuée sauf dans les commentaires
II.1.2 CHIFFRES
0..9
0..9 et les lettres A..F ou a..f pour les chiffres hexadécimaux
Les mots suivants constituent des directives de compilation. Ils peuvent donc être
redéfinis par l'utilisateur, bien que cela ne soit pas conseillé.
DMSI/PROGRAMMATION -2-
Elements de base du langage
Les identificateurs prédéfinis tels que les identificateurs de constantes (Ex : PI), de type
(Ex : INTEGER), de variables (Ex : MEM), de procédures (Ex : RESET) ou de
fonctions (Ex : SIN) standard peuvent également être redéfinis par l'utilisateur.
DMSI/PROGRAMMATION -3-
Les types de données
TYPE REEL
TYPE ENUMERE
IDENTIFICATEUR DE TYPE SCALAIRE
DMSI/PROGRAMMATION -4-
Les types de données
DMSI/PROGRAMMATION -5-
Les types de données
Remarque : Les dépassements de capacité dans les opérations arithmétiques ne sont pas
détectés. En particulier, les résultats partiels dans les expressions entières doivent être
compris dans l'échelle du type considéré.
DMSI/PROGRAMMATION -6-
Les types de données
DMSI/PROGRAMMATION -7-
Les types de données
Les deux constantes doivent être du même type scalaire et telles que min < max. Une
variable de type intervalle hérite de toutes les propriétés du type hôte, mais lors de
l'exécution, sa valeur doit rester dans l'intervalle défini.
Nota : Le type SCALAIRE ENUMERE et le type INTERVALLE seront étudiés plus
en détail dans le chapitre VIII.
Remarque : le type COMP ne peut recevoir que des valeurs entières (de –263 à 263-1).
Le dépassement de capacité pendant une opération arithmétique impliquant des réels
provoque l'arrêt du programme et l'affichage d'un message d'erreur.
Différences entre les réels et les autres types simples :
Les fonctions PRED, SUCC et ORD ne peuvent pas avoir d'arguments réels. Les réels
ne peuvent pas être utilisés pour l'indexation des tableaux, pour définir le type de base
d'un ensemble, dans les instructions For et Case. Les intervalles de type réel ne sont pas
autorisés.
III.1.3 AUTRES TYPES
Le type Chaîne de caractères, les types structurés et le type Pointeur feront l'objet des
chapitres IX, X, XI, XII, XIV et XVIII.
DMSI/PROGRAMMATION -8-
Les types de données
III.2 IDENTITE ET COMPATIBILITE DE TYPES
III.2.1 IDENTITE DE TYPE
L'identité de type n'est requise qu'entre les paramètres effectifs et formels des
procédures et fonctions (cf Chapitre VII).
Deux types T1 et T2 sont identiques si
• T1 et T2 représentent le même identificateur de type ou
• T1 est déclaré équivalent à un type identique à T2.
Deux variables déclarées dans la même déclaration sont de type identique.
EXEMPLES :
T1 = Integer ;
T2 = T1 ;
T1 et T2 sont de type identique
T3 = Set Of Char ;
T4 = Set Of Char;
T3 et T4 ne sont pas deux types identiques car Set Of Char n'est pas un
identificateur de type.
DMSI/PROGRAMMATION -9-
Les types de données
DMSI/PROGRAMMATION - 10 -
Elements du langage définis par l’utilisateur
IDENTIFICATEUR LETTRE
LETTRE
SOULIGNE
CHIFFRE
SOULIGNE
IV.2 NOMBRES
Les nombres sont des constantes de type entier ou de type réel. Les constantes entières sont
des nombres entiers exprimés soit en décimal soit en hexadécimal. Les constantes hexa-
décimales sont précédées par le signe $ et l'intervalle est de $0000 à $FFFF. La syntaxe est la
suivante :
IV.3 CHAINES
Une constante chaîne est une suite de caractères inclus entre deux apostrophes '
Une apostrophe peut être comprise dans une chaîne en écrivant deux apostrophes successives.
Les chaînes contenant un seul caractère sont du type char. Une chaîne étant assimilable à un
type tableau, les caractères sont accessibles comme les éléments d'un tableau.
DMSI/PROGRAMMATION - 11 -
Elements du langage définis par l’utilisateur
Exemples :
Les séquences de caractères de contrôle peuvent être concaténées en chaînes, en les écrivant
sans séparateur.
IV.5 COMMENTAIRES
Un commentaire peut être inséré n'importe où dans un programme où un délimiteur est
autorisé.
Les délimiteurs de commentaire sont:
(* et *)
ou
{ et }
Les accolades ne peuvent pas être imbriquées à l'intérieur d'autres accolades (de même pour
les séquences (* *) ). Cependant, les accolades peuvent être imbriquées à l'intérieur des
parenthèses et vice-versa.
DMSI/PROGRAMMATION - 12 -
Structure de base d’un programme Pascal
EN TETE BLOC .
CLAUSE USES
Le bloc est divisé en une partie DECLARATION dans laquelle sont définis tous les objets
locaux au programme et une partie INSTRUCTIONS qui spécifie les actions à exécuter sur ces
objets.
PROGRAM IDENTIFICATEUR ;
( IDENTIFICATEUR )
EXEMPLES :
Program circles;
Program accountant(Input,Output);
USES IDENTIFICATEUR ;
DMSI/PROGRAMMATION - 13 -
Structure de base d’un programme Pascal
IDENTIFICATEUR
BLOC
NOMBRE ENTIER
LABEL SANS SIGNE
LISTE DES
PROCEDURE IDENTIFICATEUR PARAMETRES
; BLOC ;
DMSI/PROGRAMMATION - 14 -
Structure de base d’un programme Pascal
V.4 PARTIE DECLARATION
La partie DECLARATION est divisée en cinq sections différentes:
Déclaration des étiquettes
Définition des constantes
Définition des types
Déclaration des variables
Déclaration des procédures et des fonctions
Remarque : le TURBO PASCAL permet à chacune de ces sections d'apparaître plusieurs fois
et dans n'importe quel ordre alors que le PASCAL STANDARD spécifie que chaque section
ne doit apparaître que zéro ou une fois dans l'ordre ci-dessus.
EXEMPLE :
label 10, error, 999;
Remarques :
En PASCAL STANDARD, les étiquettes sont limitées à des nombres de 1 à 4
chiffres.
L'emploi de l'instruction GOTO est contraire à l'esprit de la programmation
structurée. Aussi, en règle générale, on évite son utilisation.
DMSI/PROGRAMMATION - 15 -
Structure de base d’un programme Pascal
+ IDENTIFICATEUR
DE CONSTANTE
CONSTANTE
NOMBRE
-
SANS SIGNE
CHAINE
( IDENTIFICATEUR )
CONSTANTE .. CONSTANTE
DMSI/PROGRAMMATION - 16 -
Structure de base d’un programme Pascal
TYPE SIMPLE
T
^ IDENTIFICATEUR DE TYPE
PACKED
FILE OF TYPE
FILE
F
I
L
TEXT E
EXEMPLES :
Type
Number = Integer;
Day = (mon,tue,wed,thu,fri,sat,sun);
List = Array[1..20] of real;
DMSI/PROGRAMMATION - 17 -
Structure de base d’un programme Pascal
Remarque : la portée de cet identificateur est le bloc dans lequel elle est définie, et tout bloc à
l'intérieur de celui-ci. La syntaxe des variables est la suivante :
CLAUSE ABSOLUTE
,
Une variable peut être déclarée de manière à résider à une adresse mémoire spécifique, elle est
alors désignée variable absolue
Remarque : la liste de déclaration d'une variable absolute ne peut concerner plus d'un
identificateur.
CLAUSE ABSOLUTE
ENTIER ENTIER
ABSOLUTE NON SIGNE : NON SIGNE
IDENTIFICATEUR DE VARIABLE
EXEMPLES :
VAR
Resultat, Calcul, Moyenne : Real;
I, J, K, L : Integer;
Buffer : Array[0..127] of Byte;
ModeEcran : Byte Absolute $0040:$0049;
Chaine : String[15];
Longueur : Byte Absolute chaine;
{ = longueur dynamique de la chaîne }
DMSI/PROGRAMMATION - 18 -
Structure de base d’un programme Pascal
EXEMPLES :
Déclarations
Procedure essai1;
Begin
...
...
End;
Function essai2:integer;
Begin
...
...
End;
Activations
Program essai;
Var
resultat : integer;
Begin
...
...
essai1;
...
...
resultat := essai2;
...
End.
Remarques : La partie concernant les procédures et les fonctions sera détaillée au cours du
chapitre XIV.
V.5 PARTIE INSTRUCTION
La partie INSTRUCTION est la dernière partie d'un Bloc, elle spécifie les actions à exécuter
par le programme. La partie instruction prend la forme d'une séquence d'instructions suivie
d'un point ou d'un point virgule.
Une séquence d'instructions est constituée du mot réservé Begin, suivi par une liste
d'instructions séparées par des points virgules et se termine par le mot réservé End.
DMSI/PROGRAMMATION - 19 -
Les expressions
VI LES EXPRESSIONS
Les expressions sont des constructions algorithmiques spécifiant les règles pour le calcul de
valeurs. Elles sont constituées d'opérandes: variables, constantes, et identificateurs de
fonctions, combinés par le moyen d'opérateurs. La syntaxe des expressions est la suivante :
EXPR
ESSIO EXPRESSION
SIMPLE
N EXPRESSION
<
SIMPLE
<=
>=
>
<>
IN
EXPRESSION SIMPLE
TERME
-
+ - OR XOR
TERME
TERME
FACTEUR
FACTEUR
DMSI/PROGRAMMATION - 20 -
Les expressions
DMSI/PROGRAMMATION - 21 -
Les expressions
@ IDENTIFICATEUR DE PROCEDURE
IDENTIFICATEUR DE FONCTION
VARIABLE
( EXPRESSION )
NOT FACTEUR
[ ]
EXPRESSION .. EXPRESSION
,
,
TRANSTYPAGE DE VALEUR
DMSI/PROGRAMMATION - 22 -
Les expressions
Les opérateurs sont divisés en 5 catégories, dénotées par leur ordre de préséance :
Le moins unaire (- avec un seul opérateur)
Opérateur NOT
Opérateurs multiplicatifs : *, /, DIV, MOD, AND, SHL, SHR
Opérateurs additifs : +, -, OR, XOR
Opérateurs relationnels : =, <>, <, >, <=, >=, IN
Les séquences d'opérateurs ayant la même préséance sont évaluées de gauche à droite. Les
expressions entre parenthèses sont évaluées en premier et indépendamment des opérateurs
précédents et suivants.
DMSI/PROGRAMMATION - 23 -
Les expressions
NOT 0 = -1
NOT -15 = 14
NOT $2345 = $DCBA
EXEMPLES :
12 * 34 = 408
123 / 4 = 30.75
123 DIV 4 = 30
12 MOD 5 =2
True AND False = False
12 AND 22 =4
2 SHL 7 = 256
256 SHR 7 =2
DMSI/PROGRAMMATION - 24 -
Les expressions
EXEMPLES :
123 + 456 = 579
456 - 123.0 = 333.0
True or False = True
12 or 22 = 30
True xor False = True
12 xor 22 = 26
DMSI/PROGRAMMATION - 25 -
Les instructions fondamentales
Les affectations à des variables de tout type sont autorisées à condition que la variable ou la
fonction et l'expression soient de même type. Il existe une exception : si la variable est du type
Réel, le type de l'expression peut être Entier.
EXEMPLES :
Angle := Angle * Pi ;
Acces := False ;
Entry := Answer = Password ;
SurfSphere := 4 * Pi * R * R ;
DMSI/PROGRAMMATION - 26 -
Les instructions fondamentales
INSTRUCTION
ETIQUETTE :
VARIABLE := EXPRESSION
IDENTIFICATEUR DE FONCTION
CASE EXPRESSION OF
,
;
GOTO ETIQUETTE
DMSI/PROGRAMMATION - 27 -
Les instructions fondamentales
EXEMPLES :
Find(Name,Address);
Sort(Address);
EXEMPLES :
Begin End.
While Answer <> '' do ;
Repeat Until Keypressed ; { attendre qu'une touche soit frappée }
DMSI/PROGRAMMATION - 28 -
Les instructions fondamentales
EXEMPLE :
If Small > Big
then
Begin
Tamp := Small;
Small := Big;
Big := Tamp;
End;
Remarque : le point virgule précédent le mot End est facultatif car le End est considéré comme
un séparateur. Il est toutefois recommandé de l'utiliser afin de ne pas l'oublier en cas de rajout
d'instructions.
VII.2.2.1 L'INSTRUCTION IF
L'instruction IF indique qu'une instruction ne doit être exécutée que si une condition est vraie
(expression booléenne). Si elle est fausse aucune instruction n'est exécutée ou l'instruction
suivant le mot réservé Else est exécutée.
Remarques :
• il ne doit pas y avoir de point virgule avant le mot Else
• le Else est facultatif.
• Dans le cas de : IF condition1 THEN IF condition2 THEN Inst1 ELSE Inst2, le Else
est rattaché au IF le plus proche.
EXEMPLE:
If A <> B then
If A > B
then Writeln('A est plus grand que B')
else Writeln('A est plus petit que B');
DMSI/PROGRAMMATION - 29 -
Les instructions fondamentales
Une étiquette de cas est constituée de tout nombre de constantes ou d'intervalles séparés par
des virgules et terminés par le signe :. Un intervalle est écrit par deux constantes séparées par
le délimiteur d'intervalle .. . L'instruction suivant l'étiquette de cas est exécutée si la valeur du
sélecteur est égale à une des constantes ou tombe dans l'un de ces intervalles.
EXEMPLES :
Case Operator of
'+': Result := Answer + Result ;
'-': Result := Answer - Result ;
'*': Result := Answer * Result ;
End;
Case Year of
Min .. 1939 : Begin
Time := PreWorldWar2;
Writeln('The World at peace');
End;
1946 .. Max : Begin
Time := PostWorldWar2;
Writeln('Building a new world');
End
Else Begin
Time := WorldWar2;
Writeln('We are at war');
End;
End;
DMSI/PROGRAMMATION - 30 -
Les instructions fondamentales
For J := 1 to 50 Do
Begin
Readln(Nombre);
If Nombre < Max
Then
Petit := Petit + 1
Else
Grand := Grand + 1;
End;
Remarque : à la fin d'une instruction For, la valeur de la variable de contrôle est indéfinie, sauf
si la boucle a été interrompue par un GOTO.
EXEMPLES :
While Nom <> 'fin' Do Readln(nom);
DMSI/PROGRAMMATION - 31 -
Les instructions fondamentales
EXEMPLE :
Repeat
Write('Voulez-vous effacer ce texte O/N ');
Rep := ReadKey;
Until UpCase(Rep) in ['O','N'];
L’instruction Continue provoque le passage direct à l'itération suivante dans une boucle for,
while ou repeat englobante de plus haut niveau d'imbrication.
Si Continue est appelée en dehors de toute boucle for, while ou repeat, le compilateur signale
une erreur.
Exemples :
For I :=1 To MAX DO Begin
If Tablo[I]=0
Then Break ; { Sortie de la boucle si le contenu du tablo = 0 }
Writeln(Tablo[I]) ;
End ;
DMSI/PROGRAMMATION - 32 -
Types scalaires énumérés et intervalles
Les types de données de base du PASCAL sont les types scalaires. Un type scalaire est
constitué d'un ensemble fini et ordonné de valeurs.
EXEMPLES :
Type
Operateur = (plus, moins, multiplie, divise);
JourSemaine = (lun, mar, mer, jeu, ven);
Les variables du type JourSemaine peuvent prendre une des cinq valeurs définies ci-dessus.
Les opérateurs relationnels peuvent s'appliquer à tous les types scalaires tant que les deux
opérandes sont du même type (réels et entiers peuvent être mélangés). La comparaison se fait
sur l'ordre dans lequel les valeurs ont été introduites dans la définition du type. Dans l'exemple
JourSemaine, la condition suivante est vraie :
Les fonctions standard suivantes peuvent être utilisées avec des arguments de type scalaire
énuméré :
DMSI/PROGRAMMATION - 33 -
Types scalaires énumérés et intervalles
EXEMPLES :
Type
HemiSphere = (Nord, Sud, Est, Ouest);
Monde = Est..Ouest;
Majuscules = 'A'..'Z';
Minuscules = 'a'..'z';
Le type Monde est un intervalle de type scalaire Hemisphere appelé Type scalaire associé
Le type scalaire associé de Majuscules et de Minuscules est Char
Un type intervalle conserve toutes les propriétés du type scalaire associé et n'est restreint que
dans l'échelle de ses valeurs.
EXEMPLES:
Avec les exemples des paragraphes précédents :
Integer(mar) =1
Hemisphere(2) = Est
DMSI/PROGRAMMATION - 34 -
Types scalaires énumérés et intervalles
EXEMPLES:
Type
Digit = 0..9;
Var
Dig1, Dig2, Dig3 : Digit;
Begin
Dig1 := 5; valide
Dig2 := Dig1 + 3; valide tant que Dig1 + 3 <=
Dig3 := 47; erreur à la compilation
CONSTANT OUT OF RANGE
Dig3 := 8 ;
{$R-} Dig3 := Dig3 + Dig3; pas d'erreur à la compilation
ni à l'exécution
{$R+} Dig3 := 8;
Dig3 := Dig3 + Dig3; pas d'erreur à la compilation
erreur à l'exécution
RANGE CHECK ERROR
End.
Remarque : la directive R est également utilisée pour vérifier la validité des index des tableaux.
DMSI/PROGRAMMATION - 35 -
Type chaine
IX TYPE CHAINE
En TURBO PASCAL, le type chaîne (String) est pré-défini pour le traitement des chaînes de
caractères, c'est-à-dire toute séquence de caractères. Les types chaînes sont des types structurés
et ressemblent beaucoup aux types tableaux (voir chapitre X).
STRING
EXEMPLES :
Type
NomFichier = String[14];
LigneEcran = String[80];
LigneEdit = String;
Les variables chaînes occupent en mémoire la longueur maximum définie plus un octet qui
contient la longueur courante de la chaîne.
La directive d'extension de syntaxe ($X ) doit être activée pour pouvoir utiliser l'unité Strings
dans vos programmes.
DMSI/PROGRAMMATION - 36 -
Type chaine
EXEMPLES :
EXEMPLES :
EXEMPLES :
Age := 'quinze';
Ligne := 'Bon anniversaire pour vos ' + age + ' ans';
Si la longueur maximum de la variable chaîne est dépassée, les caractères en trop seront
éliminés.
DMSI/PROGRAMMATION - 37 -
Type chaine
St := 'ABCDEFG';
Delete (St, 2, 4); St a pour valeur 'AFG'
Delete (St, 2, 10); St a pour valeur 'A'
Insert Procedure Insert (Obj: String; Var Target: String; Pos: Integer);
Insert insère la chaîne Obj dans la chaîne Target, à la position Pos.
St := 'ABCDEFG';
Insert ('XX', St, 3); St a pour valeur 'ABXXCDEFG'
I := 1234;
Str (I, St); St a pour valeur '1234'
X := 2.5E4;
Str (X, St); St a pour valeur ' 2.5000000000E+04'
Str (X:10:0, St); St a pour valeur ' 25000'
DMSI/PROGRAMMATION - 38 -
Type chaine
St := '234';
Val (St, I, Code); I a pour valeur 234
Code a pour valeur 0 { = Conversion OK pas d’erreur }
St := '12X';
Val (St, I, Code); I a une valeur indéfinie
Code a pour valeur 3
St := ''; { chaîne vide }
Val (St, I, Code); I a une valeur indéfinie
Code a pour valeur 1
Remarque : si le contrôle du domaine de validité est activé ({$R+}, une valeur hors domaine
provoque toujours une erreur d'exécution.
St := 'ABCDEFG';
St1 := Copy (St, 3, 2); St1 a pour valeur 'CD'
St2 := Copy (St, 4, 10); St2 a pour valeur 'DEFG'
DMSI/PROGRAMMATION - 39 -
Type chaine
St := 'BONJOUR';
I := Length (St); I a pour valeur 7
St := 'ABCDEFG';
I := Pos ('DE', St); I a pour valeur 4
I := Pos ('H', St); I a pour valeur 0
DMSI/PROGRAMMATION - 40 -
Type chaine
DMSI/PROGRAMMATION - 41 -
Type chaine
DMSI/PROGRAMMATION - 42 -
Type chaine
DMSI/PROGRAMMATION - 43 -
Type tableau
X TYPE TABLEAU
Un tableau est un type structuré constitué d'un nombre fixe de composants qui sont tous du
même type appelé le type du composant ou le type de base. Chaque composant peut être
atteint individuellement par un index dans le tableau. Les index sont des expressions de tout
type scalaire.
EXEMPLES :
Type
Jour = (Lun, Mar, Mer, Jeu, Ven, Sam, Dim);
Var
HeuresTravail : Array[1..8] of Integer;
Semaine : Array[1..7] of Jour;
Type
Joueurs = (Joueur1, Joueur2, Joueur3, Joueur4);
Main = (Paire, DoublePaire, Brelan, Quinte, Couleur, Full, Carre, Quinte_Flush,
Poker);
Legales = 1..500;
Encheres = Array[Joueurs] of Legales;
Var
Joueur : Array[Joueurs] of Main;
Pot : Encheres;
Joueur[Joueur3] := Full;
Pot[Joueur3] := 100;
Une affectation étant permise entre deux variables de type identique, des tableaux entiers
peuvent être recopiés avec une seule instruction d'affectation.
DMSI/PROGRAMMATION - 44 -
Type tableau
EXEMPLE :
Type
Carte = (Deux,Trois,Quatre,Cinq,Six,Sept,Huit,Neuf,Dix,Valet,Dame,Roi,As);
Couleur = (Pique, Coeur, Carreau, Trefle);
Cartes = Array[Couleur] of Array[1..13] of Carte;
Var
C : Cartes;
Col : Couleur;
Begin
C[Col][5] := Valet;
...
End.
Un tableau multidimensionnel est défini plus simplement en spécifiant des index multiples.
Type
Cartes = Array[Couleur,1..13] of Carte;
Var
C : Cartes;
Col : Couleur;
Begin
C[Col,5] := Valet;
...
Une abréviation similaire peut être utilisée pour choisir le composant du tableau.
DMSI/PROGRAMMATION - 45 -
Type enregistrement
XI TYPE ENREGISTREMENT
Un enregistrement ou record est une structure constituée d'un nombre fixe de composants
appelés champs. Les champs peuvent être de différents types et chaque champ a un nom qui
est l'identificateur de champ et qui est utilisé pour le sélectionner.
TYPE
ENREGISTREMENT
RECORD END
LISTE DE CHAMPS
;
IDENTIFICATEUR : TYPE
IDENTIFICATEUR
CASE IDENTIFICATEUR : DE TYPE SCALAIRE OF
DMSI/PROGRAMMATION - 46 -
Type enregistrement
EXEMPLES :
Type
JourDuMois = 1..31;
Date = Record
Jour : JourDuMois;
Mois : (Jan,Fev,Mar,Avr,Mai,Juin,Juil,Aou,Sep,Oct,Nov,Dec);
Annee : 1900..1999;
End;
Var
Anniversaire : Date;
Jour, Mois et Annee sont les identificateurs de champ. Un champ est référencé par
l'identificateur de la variable et l'identificateur de champ séparé par un point.
DMSI/PROGRAMMATION - 47 -
Type enregistrement
EXEMPLES :
Anniversaire.Mois := Juin;
Anniversaire.Annee := 1953;
Comme pour les tableaux, les affectations sont autorisées entre deux enregistrements de même
type. Les composants d'un enregistrement peuvent être de tout type. Une construction
constituée d'enregistrement d'enregistrement ([d'enregistrement ...]) est possible.
Dans l'exemple précédent, à chaque fois que l'on souhaite accéder à un composant du
RECORD, il faut écrire Anniversaire suivi d'un point et de l'identificateur du champ.
WITH Anniversaire DO
Begin
Jour := 17;
Mois := Juin;
Annee := 1953;
End;
Les enregistrements peuvent être imbriqués à l'intérieur des instructions WITH, c'est-à-dire
que des enregistrements d'enregistrements peuvent être ouverts.
DMSI/PROGRAMMATION - 48 -
Type enregistrement
EXEMPLES :
Type
Nom = RECORD
Famille : String[30];
Prenom : Array[1..3] of String[10];
END;
Temps = RECORD
HeuresNormales,HeuresSupp,
HeuresNuit,WeekEnd : Integer;
END;
Date = RECORD
Jour : JourDuMois;
Mois :(Jan,Fev,Mar,Avr,Mai,Juin, Juil,Aou,Sep,Oct,Nov,Dec);
Annee : 1900..1999;
END;
Personne = RECORD
Id : Nom;
Time : Date;
END;
Gages = RECORD
Individuel : Personne;
Cout : Temps;
END;
Var
Salaire : Gages;
Begin
..
WITH Salaire, Individuel, Id DO
Begin
Famille := 'DUPONT';
Prenom[1] := 'Jules';
End;
WITH Salaire DO
WITH Individuel DO
WITH Id DO
Begin
Famille := 'DUPONT';
Prenom[1] := 'Jules';
End;
DMSI/PROGRAMMATION - 49 -
Type enregistrement
EXEMPLE :
Type
Forme = (Triangle,Rectangle,Cercle);
Objet = RECORD
X,Y: Integer;
Surface : Real;
CASE Contour : Forme OF
Triangle : (Cote : Integer;
Angle1,Angle2,Angle3 : 1..180);
Rectangle : (Cote1,Cote2 : Integer);
Cercle : (Diametre : Integer)
END;
END;
Var
Figure : Objet;
L'accès aux différentes parties du champ variant se fait comme pour un champ fixe.
IF Figure.Contour = Triangle
THEN
Begin
Figure.Cote := 5;
Figure.Angle1 := 45;
...
End;
La partie fixe d'un enregistrement doit toujours précéder la partie variante.
La mise à jour du sélecteur de champ est de la responsabilité du programmeur.
EXEMPLE :
Donner une structure de données décrivant un laboratoire comprenant 100 employés selon les
informations suivantes:
− son identité (nom, prénom)
− son adresse
− sa situation familiale
− son grade
− son indice
− sa position dans le laboratoire (cadre ou non)
DMSI/PROGRAMMATION - 50 -
Type enregistrement
Program Employe;
Const
Maxmot = 15 ;
Maxsigle = 6;
Maxenfant = 12 ;
Maxindividu = 100 ;
Maxcode = 5;
Type
Mot = String [maxmot];
Sigle = String [maxsigle];
Code = String [maxcode];
Situation = (Celibataire, Marie, Divorce, Veuf);
Adresse = RECORD
Numerorue : Integer;
Codepostal : Code;
Nomrue, Ville : Mot;
END;
Identite = RECORD
Nom,Prenom : Mot;
Age : Integer;
Sexe : (Masculin, Feminin);
END;
Famil = RECORD
CASE Situ : Situation OF
Celibataire : ();
Marie : (Nbenfant : Integer;
Enfant : Array [1..Maxenfant] Of Identite;
Conjoint : Identite);
Divorce,
Veuf : (Nbenfant : Integer;
Enfant : Array [1..Maxenfant] Of Identite)
END;
END;
Individu = RECORD
Identit : Identite;
Adres : Adresse;
Grade : Sigle;
Indice : Integer;
Posit : (Cadre, PasCadre);
Famille : Famil (* champ variant donc dernier champ *)
END;
Var
Laboratoire : Array [1..MaxIndividu] of Individu;
DMSI/PROGRAMMATION - 51 -
Type enregistrement
WITH Laboratoire[1] DO
Begin
WITH Identit DO
Begin
Nom := 'DUPONT';
Prenom := 'Jules';
Age := 30;
Sexe := Masculin;
End;
WITH Adres DO
Begin
Numerorue := 34;
Nomrue := 'SIAM';
Codepostal := '29200';
Ville := 'BREST';
End;
WITH Famille DO
Begin
WITH Conjoint DO
Begin
Nom := 'DUPONT';
Prenom := 'Chantal';
Age := 28;
Sexe := Feminin;
End;
Nbenfant := 3;
WITH Enfant[1] DO
Begin
Nom := 'DUPONT';
Prenom := 'Herve';
Age := 3;
Sexe := Masculin;
End;
etc ...
DMSI/PROGRAMMATION - 52 -
Type ensemble
EXEMPLES :
['T','U','R','B','O']
[X,Y]
['A'..'Z','a'..'z','0'..'9']
[]
Le dernier exemple montre l'ensemble vide qui n'a pas de type de base et qui est donc
compatible avec tous les types ensemble.
L'ensemble [1..5] est équivalent à [1,2,3,4,5].
Si X > Y, alors [X..Y] dénote l'ensemble vide.
DMSI/PROGRAMMATION - 53 -
Type ensemble
EXEMPLES :
Type
Chiffres = Set of 0..9;
Var
A,B,C : Chiffres;
Begin
A := [1,3,5,7];
B := [2,3,4];
C := A + B; C vaut [1,2,3,4,5,7]
C := A * B; C vaut [3]
C := A - B; C vaut [1,5,7]
Type
ASCII = Set of 0..127;
Var
NonImprimables,Imprimables,TousCaracteres : ASCII;
Begin
TousCaracteres := [0..127];
NonImprimables := [0..31,127];
Imprimables := TousCaracteres - NonImprimables;
End.
DMSI/PROGRAMMATION - 54 -
Constantes avec type
Les constantes avec type s'utilisent donc comme des variables initialisées, car la valeur d'une
constante typée est définie alors que la valeur d'une variable est indéfinie jusqu'à ce qu'une
affectation soit faite.
L'emploi d'une constante avec type permet d'économiser du code car la constante typée n'est
incluse dans le programme qu'une seule fois alors qu'une constante sans type est incluse
chaque fois qu'elle est utilisée.
Les constantes typées ne sont initialisées qu'une seule fois lors du démarrage du programme.
Les constantes avec type sont définies comme les constantes sans type. La définition spécifie
non seulement la valeur mais aussi le type de cette constante.
Const
Nombre : Integer = 1234;
Interet : Real = 10.5;
EnTete : String[7] = 'SECTION';
Xon : Char = ^Q;
Une constante avec type peut être utilisée à la place d'une variable comme paramètre pour une
procédure ou une fonction. Une constante avec type est en fait une variable avec une valeur
constante. Elle ne peut pas être utilisée dans la définition d'autres constantes ou types.
DMSI/PROGRAMMATION - 55 -
Constantes avec type
Const
Chiffres : Array [0..9] of char = ('0','1','2','3','4','5','6','7','8','9');
peut s'écrire
Const
Chiffres : Array [0..9] of char = '0123456789';
EXEMPLE :
Type
Cube = Array[0..1,0..1,0..1] of Integer;
Const
GrandCube : Cube =(((0,1),(2,3)),((4,5),(6,7)));
DMSI/PROGRAMMATION - 56 -
Constantes avec type
EXEMPLES :
Type
Point = Record
X, Y, Z : Integer;
End;
OS = (CPM80, CPM86, MSDOS, UNIX);
UI = (CCP, SomethingElse, MenuMaster);
Computer = Record
OperatingSystems : Array [1..4] of OS;
UserInterface : UI;
End;
Const
Origin : Point = (X:0; Y:0; Z:0);
SuperComputer : Computer =
(OperatingSystems : (CPM80, CPM86, MSDOS,UNIX);
UserInterface : MenuMaster);
Plane1 : Array [1..3] of Point =
((X:1;Y:4;Z:5),(X:10;Y:78;Z:45),(X:100;Y:10;Z:7));
Si une constante enregistrement contient une partie variable, le programmeur doit spécifier
seulement les champs de la partie valide. Si la partie variante contient un sélecteur de champ,
sa valeur doit être spécifiée.
EXEMPLES :
Type
Up = set of 'A'..'Z';
Low = set of 'a'..'z';
Const
UpperCase : Up = ['A'..'Z'];
Voyelles : Low = ['a','e','i','o','u','y'];
DMSI/PROGRAMMATION - 57 -
Procédures et fonctions
VAR ,
IDENTIFICATEUR IDENTIFICATEUR
( DU PARAMETRE : )
DU TYPE
DMSI/PROGRAMMATION - 58 -
Procédures et fonctions
Ces paramètres sont déclarés dans l'en-tête du sous-programme comme dans l'exemple suivant:
Les paramètres passés par référence sont déclarés précédés du mot réservé Var.
Les paramètres par valeur et les paramètres variables peuvent être utilisés ensemble dans la
même procédure.
PAR VALEUR
EFFECTIFS FORMELS
PAR VARIABLE
Lecture et écriture
Tous les calculs d'adresses sont faits à l'appel de la procédure. Si une variable est un
composant d'un tableau, ses expressions d'index sont calculées lorsque le sous-programme est
appelé.
Lorsque l'on veut passer une importante structure de données comme paramètre, par exemple
un tableau, l'utilisation d'un paramètre variable permet d'économiser de l'espace et du temps
car la seule information passée au sous-programme est l'adresse du paramètre réel.
DMSI/PROGRAMMATION - 59 -
Procédures et fonctions
Exemple :
Cette fonction peut être utilisée pour comparer deux variables de toute taille et de tout type.
Type
Proc = Procedure;
Echange = Procedure(Var X, Y : Integer);
Var
P : Proc;
Q : Echange;
DMSI/PROGRAMMATION - 60 -
Procédures et fonctions
EN TETE DE
PROCEDURE PROCEDURE IDENTIFICATEUR
LISTE DE
PARAMETRES
FORMELS
CORPS DE
PROCEDURE BLOC
INTERRUPT ; FORWARD
EXTERNAL
NEAR
DIRECTIVE INLINE
Une déclaration de procédure est constituée d'un en-tête de procédure, suivie d'un bloc
constitué d'une partie déclaration et d'une partie instruction.
DMSI/PROGRAMMATION - 61 -
Procédures et fonctions
L'en-tête de procédure est constitué du mot réservé Procedure suivi de l'identificateur de la
procédure et des paramètres éventuels.
La directive Interrupt insérée juste avant le début du corps de procédure transforme cette
dernière en procédure d'Interruption qui doit comporter la liste de paramètres suivante:
La partie déclaration d'une procédure a la même forme que celle d'un programme.
Tous les identificateurs déclarés dans la liste des paramètres formels et dans la partie
déclaration sont locaux à cette procédure et à toute procédure à l'intérieur de celle-ci.
La partie instruction indique l'action à exécuter lorsque la procédure est appelée, et elle a la
forme d'une instruction composée.
DMSI/PROGRAMMATION - 62 -
Procédures et fonctions
EXEMPLE DE PROCEDURE:
Program Parametre;
Var
A,B :Integer;
A l'exécution, on obtient : 1 1
0 1
DMSI/PROGRAMMATION - 63 -
Procédures et fonctions
EN TETE DE
FUNCTION IDENTIFICATEUR
FONCTION
LISTE DE
PARAMETRES
FORMELS
: TYPE DE RESULTAT
STRING
CORPS DE
FONCTION BLOC
NEAR ; FORWARD
EXTERNAL
FAR
BLOC ASM
DIRECTIVE INLINE
DMSI/PROGRAMMATION - 64 -
Procédures et fonctions
EXEMPLES DE FONCTIONS:
Program Puissance;
Var
A : Real;
N : Integer;
Begin
Write('Entrer un nombre : );
Readln(A);
Write('Entrer son exposant : ');
Readln(N);
Writeln(A:10:2,Puiss(A,N));
End.
Remarque : l'exemple suivant nécessite un examen approfondi pour sa bonne compréhension:
Program Test;
Var
A, Z : Integer;
Function Carre(X:Integer):Integer;
Begin
Z := Z - X;
Carre := Sqr(X);
End; { of Function Carre }
HeapPtr
Tas
HeapOrg ( croît vers le haut ) OvrHeapEnd
Tampon de recouvrement
des partiels OvrHeapOrg
Pile
SSeg:SPtr ( croît vers le bas )
Pile disponible
SSeg:0000
Variables globales
Constantes typées
DSeg:0000
Segment de code de Contenu
l’unité System
d’un
Segment de code de la
première unité
Segment de code des fichier
autres unités
Segment de code du .EXE
programme principal
Préfixe de segment de
PrefixSeg programme
Le Préfixe de Segment de Programme (PSP) est une zone de 256 octets créée par MS-DOS
lors du chargement du fichier .EXE.
Chaque module (programme principal et les unités) possède son propre segment de code. La
taille d'un segment de code ne peut dépasser 64 Ko.
DMSI/PROGRAMMATION - 66 -
Procédures et fonctions
Le segment de données (accessible par DS) contient toutes les constantes typées suivies par
toutes les variables globales. Le registre DS n'est jamais modifié pendant l'exécution du
programme. Sa taille maximale est de 64 Ko.
Les variables locales aux procédures et fonctions sont créées et stockées dans la pile
(accessible par SS). Les paramètres sont transmis aux procédures et fonctions par
l'intermédiaire de la pile. Avant l'appel, les paramètres sont placés sur la pile en suivant l'ordre
de leur déclaration. Avant de s'achever, la procédure ou la fonction supprime les paramètres de
la pile.
Les paramètres sont transmis par adresse ou par valeur. Quand un paramètre est transmis par
adresse (référence), un pointeur sur l'emplacement réel de stockage est placé sur la pile. Avec
une transmission par valeur, c'est la valeur réelle qui est placée sur la pile.
La taille du segment de pile ne peut dépasser 64 Ko, sa taille par défaut (16 Ko) est modifiable
grâce à la directive de compilation {$M}
Le Tas (Heap) stocke les variables dynamiques (voir chapitre XVIII). Il occupe tout ou partie
de la mémoire libre. La taille réelle dépend des valeurs minimale et maximale qui peuvent être
fixées par la directive de compilation {$M}.
DMSI/PROGRAMMATION - 67 -
Procédures et fonctions
XIV.6.2 PROCEDURES ET FONCTIONS D'ALLOCATION DYNAMIQUE DE
MEMOIRE
DISPOSE Dispose(Var P : Pointer);
Libération d'une variable dynamique.
DMSI/PROGRAMMATION - 68 -
Procédures et fonctions
DMSI/PROGRAMMATION - 69 -
Procédures et fonctions
PI Pi : Real
Valeur de Pi (3.1415926535897935385)
DMSI/PROGRAMMATION - 70 -
Procédures et fonctions
DMSI/PROGRAMMATION - 71 -
Procédures et fonctions
DMSI/PROGRAMMATION - 72 -
Procédures et fonctions
HI Hi(I) : Byte
Renvoie l'octet de poids fort de son argument. I est une expression de type entier ou mot.
LO Lo(I) : Byte
Renvoie l'octet de poids faible de son argument. I est une expression de type entier ou mot.
RANDOMIZE Randomize;
Initialise le générateur de nombre aléatoire avec une valeur aléatoire.
DMSI/PROGRAMMATION - 73 -
Procédures et fonctions
Inversion des octets de poids fort et de poids faible de l'argument. Num est une expression de
type entier ou mot.
Variables initialisées :
DMSI/PROGRAMMATION - 74 -
Procédures et fonctions
Si P appelle Q Déclaration de Q
-
-
Déclaration de P
Si un sous-programme P doit appeler un sous-programme Q qui doit lui-même appeler P, il est
nécessaire de préciser que le deuxième sous-programme est déclaré plus loin dans le
programme. Ceci est réalisé en spécifiant son en-tête séparément du bloc. L'en-tête du sous-
programme séparé est exactement comme une en-tête normale, sauf qu'elle se termine par le
mot réservé Forward.
Le bloc se trouve plus loin dans la même partie déclaration et commence par une copie de l'en-
tête spécifiant seulement le nom et sans paramètre ni type.
EXEMPLE:
Program Essai;
Var
I : Integer;
DMSI/PROGRAMMATION - 75 -
Procédures et fonctions
Remarques :
La partie déclaration descriptive d'une procédure FORWARD peut être une déclaration
EXTERNAL; il ne peut, en revanche, s'agir ni d'une déclaration INLINE ni d'une autre
déclaration FORWARD. Elle ne peut pas contenir non plus la directive INTERRUPT.
Les déclarations FORWARD sont interdites dans la partie INTERFACE d'une unité.
EXTERNAL
Le mot réservé External déclare des sous-programmes comme étant externes c'est-à-dire
permettant d'interfacer les programmes avec des procédures ou fonctions écrites en langage
d'assemblage (fichiers .OBJ).
Un sous-programme externe n'a pas de bloc, seule l'en-tête est spécifiée, suivie du mot réservé
External. Le fichier correspondant doit être lié au programme ou à l'unité par la directive {$L
Nom_de_Fichier}
EXEMPLE:
ASM
Les déclarations assembler permettent d'écrire des procédures entièrement en assembleur.
PARTIE INSTRUCTION
BLOC ASM ASSEMBLER ; DECLARATION ASM
EXEMPLE:
L'instruction ASM permet d'insérer une ou plusieurs instructions assembleur séparées par un
point-virgule, un saut de ligne ou un commentaire Pascal.
EXEMPLE:
If Inter_Autorise
Then
asm STI end
Else
asm CLI end;
DMSI/PROGRAMMATION - 76 -
Procédures et fonctions
INLINE
La directive INLINE permet d'insérer directement des instructions en code machine au sein
d'un flot d'instructions (l'effet de cette directive est proche des macro-instructions disponibles
en langage d'assemblage).
Ces directives ne contiennent ni déclaration locale ni bloc Begin..End. Leur structure ne
comporte que l'en-tête suivi par une instruction en ligne.
EXEMPLE :
Procedure ActvInterr ; INLINE($FA) ; { mnémonique = CLI }
L'instruction inline permet d'insérer un ou plusieurs éléments en ligne séparés par une barre (/)
et encadrés par des parenthèses. Les instructions inline peuvent être librement mélées aux
autres instructions.
EXEMPLE:
Function LongMul(X, Y : Integer) : LongInt;
INLINE ( $58 / { POP AX soit POP Y }
$5A / { POP DX soit POP X }
$F7 / $EA ) ; { IMUL DX soit DX:AX = X * Y }
DMSI/PROGRAMMATION - 77 -
La récursivité
XV LA RECURSIVITE
Le langage PASCAL autorise la récursivité simple et la récursivité croisée. Il y a récursivité
simple lorsqu'une fonction ou une procédure en cours d'exécution s'appelle elle-même, et
demande donc une nouvelle activation. Il y a récursivité croisée entre deux procédures A et B
si la procédure A appelle la procédure B qui elle-même appelle la procédure A.
Procedure Rec(...);
Begin
-
Rec(...);
-
End;
L'emploi de la récursivité est pratique pour résoudre les problèmes dont la définition est
naturellement récursive.
Begin
Write('ENTRER UN NOMBRE ENTIER ');
Readln(N);
Writeln('La Factorielle de ',N:5,' EST ',Fact(N):6);
End.
Remarque: il existe bien entendu une méthode plus simple pour résoudre ce problème.
DMSI/PROGRAMMATION - 78 -
La récursivité
DMSI/PROGRAMMATION - 79 -
La récursivité
Il faut bien entendu utiliser la déclaration Forward qui permet une déclaration en-avant d'un
sous-programme.
EXEMPLE:
Procedure Recur2;
Begin
...
Recur1(Paramètres effectifs);
...
End;
DMSI/PROGRAMMATION - 80 -
Les unités
EN TETE
; INTERFACE IMPLEMENTATION INITIALISATION .
D’UNITE
PARTIE INTERFACE
INTERFACE
DECLARATION DE TYPES
DECLARATION DE VARIABLES
EN TETE DE PROCEDURES
ET DE FONCTIONS
EN TETE DE PROCEDURES
ET DE FONCTIONS
EN TETE DE PROCEDURE
;
EN TETE DE FONCTION
DIRECTIVE INLINE ;
DMSI/PROGRAMMATION - 81 -
Les unités
PARTIE
IMPLEMENTATION
IMPLEMENTATION
DECLARATION DE LABELS
DECLARATION DE CONSTANTES
DECLARATION DE TYPES
DECLARATION DE VARIABLES
EN TETE DE PROCEDURES
ET DE FONCTIONS
PARTIE INSTRUCTION
DMSI/PROGRAMMATION - 82 -
Les unités
CLREOL ClrEol;
Efface tous les caractères de la position du curseur jusqu'à la fin de la ligne sans changer la
position du curseur.
CLRSCR ClrScr;
Efface l'écran et place le curseur en haut à gauche de l'écran. Cette procédure agit par rapport à
la fenêtre active.
DELLINE DelLine;
Efface la ligne sur laquelle est positionné le curseur. Toutes les lignes suivantes sont
remontées d'une ligne.
HIGHVIDEO HighVideo;
Initialise l'affichage des caractères en sur-intensité
DMSI/PROGRAMMATION - 83 -
Les unités
INSLINE InsLine;
Insère une ligne vide à la position du curseur.
LOWVIDEO LowVideo;
Initialise l'affichage des caractères en sous-intensité.
NORMVIDEO NormVideo;
Restaure l'attribut video du mode texte tel qu'il a été lu à la position du curseur lors de l'entrée
dans le programme.
NOSOUND NoSound;
Désactive le haut-parleur interne.
Bit 7 6 5 4 3 2 1 0
B f f f c c c c
où B est le bit de clignotement, fff reçoit les 3 bits de la couleur de fond et cccc reçoit les 4
bits de la couleur du caractère.
Cf TextColor, TextBackGround
TEXTBACKGROUNDTextBackGround(Couleur: Byte);
Définit la couleur du fond d'affichage. Couleur est une expression choisie dans l'intervalle 0..7.
Cf TextColor
DMSI/PROGRAMMATION - 84 -
Les unités
DMSI/PROGRAMMATION - 85 -
Les unités
Variable DosError
Cette variable est utilisée par de nombreux sous-programmes pour donner des renseignements
sur les situations d'erreurs.
DMSI/PROGRAMMATION - 86 -
Les unités
Constantes Valeur
ReadOnly $01
Hidden $02
SysFile $04
VolumeId $08
Directory $10
Archive $20
AnyFile $3F
SearchRec = RECORD
Fill : Array[1..21] Of Byte;
Attr : Byte; { Date }
Time : LongInt; { Heure }
Size : LongInt; { Taille }
Name : String[12]; { Nom_de_Fichier }
End;
FSPLIT
FSplit(Chemin:PathStr;VarRep:DirStr;Var NomFic:NameStr;VarExt:ExtStr);
Subdivise une spécification de fichier en trois composantes: Rep reçoit le nom d'unité logique,
NomFic le nom de base du fichier et Ext l'extension du nom du fichier.
DMSI/PROGRAMMATION - 87 -
Les unités
SWAPVECTORS SwapVectors;
Echange les vecteurs d'interruption (le contenu des pointeurs SaveIntXX de l'unité System
avec le contenu des vecteurs d'interruption en vigueur).
DMSI/PROGRAMMATION - 88 -
Les unités
DMSI/PROGRAMMATION - 89 -
Les unités
UNPACKTIME
UnPackTime(Pack_D_H : LongInt;Var UnPack_D_H : DateTime);
Convertit un entier long représentant une date compactée en une variable de type DateTime.Cf
PackTime.
DMSI/PROGRAMMATION - 90 -
Les unités
Constante Valeur
fcExtension $0001
fcFileName $0002
fcDirectory $0004
fcWildcards $0008
DMSI/PROGRAMMATION - 91 -
Les unités
La fonction FileSplit peut être utilisée ensuite pour subdiviser le résultat renvoyé par
FileExpand en 3 chaînes, l'une pour l'unité et les répertoires, une autre pour le nom du fichier
et une dernière pour l'extension.
DMSI/PROGRAMMATION - 92 -
Les unités
TYPE
{ Fichiers typés et non typés }
TFileRec = record
Handle: Word;
Mode: Word;
RecSize: Word;
Private: array[1..26] of Byte;
UserData: array[1..16] of Byte;
Name: array[0..79] of Char;
end;
DMSI/PROGRAMMATION - 93 -
Les unités
Notez la partie variante du RECORD pour recadrer les registres sur 8 bits avec ceux sur 16
bits.
DMSI/PROGRAMMATION - 94 -
Les unités
Les informations pour chaque fichier trouvé sont renvoyées dans TSearchRec.
Attr contient les attributs (construits avec les constantes adéquates) - Time contient la date
et l'heure compactés (UnpackTime décompacte)
Size contient la taille en octets
Name contient le nom
Fill est réservé par le DOS et ne doit jamais être altéré
DMSI/PROGRAMMATION - 95 -
Les unités
CLEARDEVICE ClearDevice;
Initialise le périphérique graphique de sortie courant et le prépare.
CLEARVIEWPORT ClearViewPort;
Efface la fenêtre graphique courante.
CLOSEGRAPH CloseGraph;
Désactive le mode graphique.
DMSI/PROGRAMMATION - 96 -
Les unités
Constante Valeur
Detect 0 Demande d'auto détection
CGA 1
MGCA 2
EGA 3
EGA64 4
EGAMono 5
IBM8514 6
HercMono 7
ATT400 8
VGA 9
PC3270 10
Currentdriver -128 Passé à GetModeRange
CGAC0 0 320x200 palette 0 : vert, rouge, jaune; 1 page
CGAC1 1 320x200 palette 1 : rouge, jaune, vert; 1 page
CGAC2 2 320x200 palette 2 : vert, rouge, marron; 1 page
CGAC3 3 320x200 palette 3 : cyan, magenta, gris; 1 page
MCGAC0 0 320x200 palette 0 : vert, rouge, jaune; 1 page
MCGAC1 1 320x200 palette 1 : cyan, magenta, blanc; 1 page
MCGAC2 2 320x200 palette 2 : vert, rouge, marron; 1 page
MCGAC3 3 320x200 palette 3 : vert, rouge, gris; 1 page
MCGAMed 2 640x200 1 page
MCGAHi 3 640x480 1 page
EGALo 0 640x200 4 pages
EGAHi 1 640x350 16 couleurs; 2 pages
EGA64Lo 0 640x200 16 couleurs; 1 page
EGA64Hi 1 640x350 4 couleurs; 1 page
EGAMonoHi 3 640x350
HercMonoHi 0 720x348 2 pages
ATT400C0 0 320x200 palette 0 : vert, rouge, jaune; 1 page
ATT400C1 1 320x200 palette 1 : rouge, jaune, vert; 1 page
ATT400C2 2 320x200 palette 2 : vert, rouge, marron; 1 page
ATT400C3 3 320x200 palette 3 : cyan, magenta, gris; 1 page
ATT400Med 2 640x200
ATT400Hi 3 640x400
VGALo 0 640x200 16 couleurs 4 pages
VGAMed 1 640x350 16 couleurs 2 pages
VGAHi 2 640x480 16 couleurs
VGAHi2 3 640x480 2 couleurs
PC3270Hi 0 720x350
IBM8514Lo 0 640x480 256 couleurs; 1 page
IBM8514Hi 0 1024x768 256 couleurs; 1 page
DMSI/PROGRAMMATION - 97 -
Les unités
DMSI/PROGRAMMATION - 98 -
Les unités
Constante Valeur
EmptyFill 0 { Couleur de Fond = effacement }
SolidFill 1 {Couleur d'avant-plan uniforme }
LineFill 2 { Traits horizontaux }
LtSlashFill 3 { Traits Droit fin ///}
SlashFill 4 { Traits Droit épais ///}
BkSlashFill 5 { Traits Gauche épais \\\}
LtBkSlashFill 6 { Traits Gauche fin \\\ }
HatchFill 7 { Trame }
XHatchFill 8 { Trame oblique }
InterLeaveFill 9 { Trame serrée }
WideDotFill 10 { Points espacés }
CloseDotFill 11 { Points rapprochés }
UserFill 12 { Défini par le programmeur }
LineSettingsType = Record
LineStyle : Word;
Pattern : Word;
Thickness : Word;
End;
Constante Valeur
SolidLn 0
DottedLn 1
CenterLn 2
DashedLn 3
UserBitLn 4 Style défini par l'utilisateur
NormWidth 1
ThickWidth 3 Triple épaisseur
DMSI/PROGRAMMATION - 99 -
Les unités
GETMODERANGE
GetModeRange(PiloteGrafic: Integer; Var ModeInf, ModeSup: Integer);
Renvoie la plus grande et la plus petite valeur de mode graphique supportées par le pilote
spécifié.
Cf DetectGraph
PaletteType = Record
Size : Byte;
Colors : Array[0..MaxColors] Of Shortint;
End;
DMSI/PROGRAMMATION - 100 -
Les unités
TextSettingsType = Record
Font : Word;
Direction : Word;
CharSize : Word;
Horiz : Word;
Vert : Word;
End;
Constante Valeur
DefaultFont 0 Police en matrice 8x8 bits
TriplexFont 1 Polices vectorielles
SmallFont 2
SansSeriFont 3
GothicFont 4
HorizDir 0 De gauche à droite
VertDir 1 De haut en bas
UserCharSize 0 Taille de caractère
modifiable
ViewPortType = Record
X1, Y1, X2, Y2 : Integer;
Clip : Boolean;
End;
GRAPHDEFAULTS GraphDefaults;
Réinitialise la configuration du mode graphique.
GRAPHERRORMSG GraphErrorMsg(CodeErreur: Integer) : String;
Renvoie le message d'erreur correspondant au code d'erreur indiqué.
DMSI/PROGRAMMATION - 101 -
Les unités
Codes d'erreurs renvoyés par la fonction GraphResult
GrOk 0 pas d'erreur
GrNoInitGraph -1 graphique non installé
GrNotDetected -2 équipement graphique non détecté
GrFileNotFound -3 fichier du pilote graphique introuvable
GrInvalidDriver -4 fichier du pilote graphique invalide
GrNoLoadMem -5 mémoire insuffisante pour charger le pilote
GrNoScanMem -6 dépassement de capacité mémoire (type scan)
GrNoFloodMem -7 dépassement de capacité mémoire (type flood)
GrFontNotFound -8 fichier de police de caractères non trouvé
GrNoFontMem -9 mémoire insuffisante pour charger la police
GrInvalidMode -10 mode graphique invalide pour le pilote sélectionné
GrError -11 erreur graphique
GrIOerror -12 erreur d'entrées/sorties graphique
GrInvalidFont -13 fichier de police invalide
GrInvalidFontNum -14 numéro de police invalide
GrInvalidDeviceNum -15 erreur de numéro de pilote graphique
INITGRAPH
InitGraph(Var GraphPilote: Integer;Var GraphMode: Integer;CheminPilote : String);
Initialise le système graphique et configure le matériel dans un mode graphique.
Cf DetectGraph.
INSTALLUSERDRIVER
InstallUserDriver(Nom:String;AutoDetectPtr:Pointer) : Word;
Ajoute un pilote de périphérique supplémentaire dans la table des pilotes de périphériques
gérée par le système graphique BGI. Affecte et renvoie un numéro de pilote.
INSTALLUSERFONT InstallUserFont(NomFichierPolice:String):Integer;
Insère une nouvelle police de caractères graphique dans le système BGI.
DMSI/PROGRAMMATION - 102 -
Les unités
REGISTERBGIDRIVER
RegisterBGIdriver(Pilote: Pointer): Integer;
Enregistre un fichier pilote graphique. En cas d'erreur, la valeur renvoyée est inférieure à 0,
sinon, elle correspond au numéro de gestion du pilote.
REGISTERBGIFONT RegisterBGIfont(Police: Pointer): Integer;
Enregistre un fichier de police de caractères. En cas d'erreur, la valeur renvoyée est inférieure
à 0, sinon, elle correspond au numéro assigné à la police.
RESTORECRTMODE RestoreCrtMode;
Restaure le mode d'affichage dans l'état précédant l'initialisation du mode graphique.
DMSI/PROGRAMMATION - 103 -
Les unités
SECTOR
DMSI/PROGRAMMATION - 104 -
Les unités
Constante Valeur
LeftText 0 Justification à gauche
CenterText 1
RightText 2 Justification à droite
BottomText 0
CenterText 1
TopText 2
DMSI/PROGRAMMATION - 105 -
Les unités
Exemple:
Program Essai_Imprimante;
Uses
Printer;
Begin
Writeln(Lst,'BONJOUR');
End.
OVRINITEMS OvrInitEMS;
Charge le fichier de recouvrement en mémoire EMS, si possible.La variable OvrResult
indique une erreur éventuelle.
DMSI/PROGRAMMATION - 106 -
Les unités
OVRCLEARBUF OvrClearBuf;
Vide le tampon de recouvrement de partiels
Exemple:
{$F+,O+}
Program Demonstration_Ovr ;
Uses
Overlay,Crt,Demo1,Demo2;
{$O Demo1}
{$O Demo2}
Begin
ClrScr;
OvrInit('Demo.OVR');
If OvrResult = 0
Then
Begin
Write1;
Write2;
End
Else
Writeln('Overlay Error : ',OvrResult);
End.
DMSI/PROGRAMMATION - 107 -
Les unités
Contenu du fichier DEMO1.PAS
{$F+,O+}
Unit Demo1;
Interface
Procedure Write1;
Implementation
Procedure Write1;
Begin
Writeln('premier partiel');
End;
End.
{$F+,O+}
Unit Demo2;
Interface
Procedure Write2;
Implementation
Procedure Write2;
Begin
Writeln('deuxième partiel');
End;
End.
DMSI/PROGRAMMATION - 108 -
Les types fichiers
Tous les composants d'un fichier étant de longueur égale, la position d'un composant
particulier peut être calculée. Le pointeur de fichier peut donc être déplacé vers tout
composant dans le fichier, procurant ainsi un accès direct à tout élément.
EXEMPLES :
Type
ProductName = String[80];
Product = Record
Name : ProductName;
ItemNumber : Real;
InStock : Real;
MinStock : Real;
Supplier : Integer;
End;
Var
ProductFile: FILE of Product;
DMSI/PROGRAMMATION - 109 -
Les types fichiers
REWRITE Rewrite(FilVar);
Un nouveau fichier disque dont le nom est assigné à la variable FilVar est crée et préparé pour
le traitement. Le pointeur de fichier est placé au début de ce fichier, c'est- à-dire sur le
composant numéro 0. Tout fichier pré-existant avec le même nom est détruit. Un fichier
disque créé par Rewrite est vide, il ne contient aucun élément.
RESET Reset(FilVar);
Le fichier disque affecté à FilVar est préparé pour traitement. Le pointeur du fichier est
positionné au début de ce fichier sur le composant numéro 0. FilVar doit référencer un fichier
existant, sinon il se produira une erreur d'entrée/sortie.
READ Read(FilVar,Var);
Var représente une ou plusieurs variables du type des éléments de FilVar séparées par des
virgules. Chaque variable est lue sur le fichier disque et après chaque opération de lecture le
pointeur de fichier est avancé sur le composant suivant.
CLOSE Close(FilVar);
Le fichier disque associé à FilVar est fermé et le répertoire du disque est mis à jour pour tenir
compte des modifications apportées au fichier.
Remarque: Il est nécessaire de fermer un fichier même si on n'a fait que des opérations de
lecture sinon on aurait rapidement trop de fichiers ouverts à la fois.
DMSI/PROGRAMMATION - 110 -
Les types fichiers
ERASE Erase(FilVar);
Le fichier disque associé à FilVar est effacé. Erase ne doit jamais être utilisé sur un fichier
ouvert.
TRUNCATE Truncate(FilVar);
Tronque le fichier à la position courante du pointeur de fichier. Tous les enregistrements situés
après le pointeur de fichier sont supprimés et la position courante dans le fichier devient la fin
de fichier.
DMSI/PROGRAMMATION - 111 -
Les types fichiers
EXEMPLE:
Var fichier : Text;
Toute opération sur les fichiers doit être précédée par un appel à la procédure Assign et un
appel à Reset ou à Rewrite doit précéder toute opération d'écriture ou de lecture.
Rewrite permet de créer un nouveau fichier texte et la seule opération autorisée est l'écriture.
Reset est utilisé pour ouvrir un fichier existant en lecture, la seule opération permise sur ce
fichier est la lecture séquentielle. Lorsqu'un nouveau fichier texte est fermé, une marque de fin
de fichier est mise à la fin du fichier.
L'entrée et la sortie des caractères dans les fichiers textes s'effectuent par les procédures Read
et Write. Les procédures Readln, Writeln et Eoln permettent le traitement des lignes.
READLN Readln(FilVarTxt);
Va au début de la ligne suivante, c'est-à-dire écarte tous les caractères jusque et y compris la
séquence CR/LF.
WRITELN Writeln(FilVarTxt);
DMSI/PROGRAMMATION - 112 -
Les types fichiers
Ecrit une marque de fin de ligne, c'est-à-dire une séquence CR/LF dans le fichier texte.
SEEKEOLN SeekEoln(FilVarTxt);
Similaire à Eoln, mais écarte les espaces et les TABs avant de faire le test. Le résultat est de
type Booléen.
FLUSH Flush(FilVarTxt);
Flush vide le buffer interne du fichier disque FilVarTxt et assure que le buffer a été écrit sur le
disque si une opération d'écriture a eu lieu depuis la dernière mise à jour du disque. Flush n'a
aucun effet sur les fichiers ouverts en lecture.
APPEND Append(FilVarTxt);
Procédure ouvrant un fichier texte en mode Ajout. Si FilVarTxt est déjà ouvert, le fichier est
d'abord fermé puis ouvert de nouveau. Le pointeur de fichier est positionné en fin de fichier.
DMSI/PROGRAMMATION - 113 -
Les types fichiers
Var
DataFile : file;
Dans le cas des fichiers non typés, les procédures RESET et REWRITE acceptent un
paramètre supplémentaire permettant de spécifier la taille de l'enregistrement utilisé pour les
transferts.
BLOCKREAD / BLOCKWRITE
Toutes les procédures et les fonctions standards de manipulation de fichiers, excepté Read,
Write et Flush sont autorisées sur les fichiers sans type. Read et Write sont remplacées par
deux procédures de transfert à haute vitesse : BlockRead et BlockWrite.
où Buf est toute variable et Quanti est une expression entière donnant le nombre
d'enregistrements de Taille octets à transférer entre le fichier disque et la variable. Le bloc
transféré aura au maximum la taille de Quanti * Taille. Le paramètre facultatif Result retourne
le nombre d'enregistrements réellement transféré. Si Result n'est pas précisé, une erreur
d'entrée/sortie surviendra si le nombre d'enregistrements lus n'est pas égal à Quanti.
DMSI/PROGRAMMATION - 114 -
Les types fichiers
Le périphérique CON
CON se rapporte au périphérique CONsole qui permet d'envoyer des informations vers l'écran
et d'en recevoir à partir du clavier. Les entrées depuis CON sont 'orientées ligne'. Un caractère
de fin de fichier est généré en frappant la séquence Ctrl-Z.
Le périphérique NUL
Ce périphérique ignore toute écriture et génère une fin de fichier immédiate. Il peut être utilisé
lorsque l'on ne veut pas créer de fichier particulier.
DMSI/PROGRAMMATION - 115 -
Les types fichiers
PROCEDURE READ
La procédure READ permet l'entrée de caractères, chaînes et de données numériques.
Read(Var1,Var2,...,VarN)
ou
Read(FilVar,Var1,Var2,...,VarN)
où Var1,Var2,...,VarN sont des variables de type Caractère, Chaîne, Entier, ou Réel.
Avec une variable de type Char, Read lit un caractère dans le fichier et affecte ce caractère à la
variable.
Avec une variable de type Chaîne, Read lit tous les caractères jusqu'au prochain indicateur de
fin de ligne (ce dernier exclus). Si cette chaîne est plus longue que la chaîne destinataire, la
chaîne est tronquée.
Avec une variable numérique, Read attend une chaîne de caractères se conformant au format
d'une constante numérique du type adéquat. Tous les caractères délimiteurs (espaces,
tabulation ou indicateur de fin de ligne) sont ignorés. La lecture s'arrête soit au premier
caractère délimiteur soit lorsque Eof(FilVar) devient vrai.
PROCEDURE READLN
La procédure Readln est identique à la procédure Read, excepté que lorsque la dernière
variable a été lue, le reste de la ligne est ignoré. Tous les caractères, jusque et y compris la
prochaine séquenceCR/LF sont écartés.
Readln(Var1,Var2,...,VarN);
ou
Readln(FilVar,Var1,Var2,...,VarN)
Readln peut également être appelé sans paramètre. Dans ce cas, le reste de la ligne est écarté et
le retour chariot est envoyé à l'écran comme une séquence CR/LF.
DMSI/PROGRAMMATION - 116 -
Les types fichiers
PROCEDURE WRITE
La procédure Write permet la sortie de caractères, chaînes, de valeurs booléennes et de valeurs
numériques.
Write(Var1,Var2,...,VarN)
ou
Write(FilVar,Var1,Var2,...,VarN)
où Var1,Var2,...,VarN (les paramètres d'écriture) sont des variables du type Char, Chaîne,
Booléen, Entier ou Réel suivies éventuellement du signe : et d'une expression définissant les
paramètres d'écriture.
DMSI/PROGRAMMATION - 117 -
Les types fichiers
R représente une expression Réelle
Ch représente une expression Char
S représente une expression Chaîne
B représente une expression Booléenne
PROCEDURE WRITELN
La procédure Writeln est identique à la procédure Write, excepté qu'une séquence CR/LF est
sortie après la dernière valeur.
Writeln(Var1,Var2,...,VarN)
ou
Writeln(FilVar,Var1,Var2,...,VarN)
Une instruction Writeln sans paramètres d'écriture écrit seulement une ligne vide consistant en
une séquence CR/LF.
DMSI/PROGRAMMATION - 118 -
Le type pointeur
Il est possible en cours d'exécution de demander des zones mémoires pour mettre de nouvelles
variables. Ces variables sont appelées variables dynamiques par opposition aux variables
statiques utilisées jusqu'à présent.
Ces variables dynamiques ne sont pas déclarées dans une déclaration de variables comme pour
des variables statiques et elles ne peuvent pas être référencées directement par un
identificateur. Au contraire, une variable spéciale contenant l'adresse mémoire de la variable
est utilisée pour pointer vers cette variable. Cette variable spéciale est appelée variable
pointeur.
Type
Lien = ^Personne;
Personne = Record
Nom : String[15];
Prenom : String[15];
Emploi : String[40];
Suivant : Lien;
End;
Var
Premier, Pcourant : Lien;
Remarque : Cette construction n'est rendue possible que par une exception à la règle
d'ordonnancement qui oblige à déclarer un identificateur avant son utilisation.
Les variables Premier et Pcourant sont donc des variables pointeurs qui peuvent pointer sur
des enregistrements de type Personne.
DMSI/PROGRAMMATION - 119 -
Le type pointeur
où P est une variable pointeur (pointant sur une variable de n'importe quel type) et Taille une
expression de type Word spécifiant la taille en octets de la variable dynamique à allouer. Dans
le cas de New, la taille du bloc mémoire alloué correspond à la taille de la variable pointée par
P. La variable nouvellement créée peut être référencée par P^.
Une nouvelle variable du type Personne est donc créee par l'instruction :
New(Pcourant);
ou par l'instruction :
GetMem(Pcourant,Taille);
qui a pour effet de faire pointer Pcourant sur un enregistrement du type Personne alloué
dynamiquement.
Les affectations entre les variables pointeurs sont possibles à condition que les deux pointeurs
soient d'un type identique. Les pointeurs de type identique peuvent être comparés en utilisant
les opérateurs relationnels =, <>, qui retournent une valeur booléenne.
La valeur de pointeur Nil est une constante symbolique destinée à représenter le cas où une
variable pointeur ne fait référence à aucun élément de type associé. La valeur Nil est
compatible avec tous les types pointeurs et peut être utilisée dans les comparaisons.
Les variables créées par la procédure New sont rangées dans une structure de type Pile partant
du bas de la mémoire, appelée le Tas (Heap).
L'origine du tas est mémorisé dans la variable HeapOrg et le haut du tas (correspondant au
début de la mémoire disponible) dans la variable HeapPtr, le pointeur de tas.
A chaque appel à New ou à GetMem, le pointeur de Tas est déplacé vers le haut de la mémoire
libre, d'un nombre d'octets correspondant à la taille de la nouvelle variable allouée.
DMSI/PROGRAMMATION - 120 -
Le type pointeur
Begin
Premier := Nil;
Write('Entrez un nom : ');
ReadLn(Name);
While Not(Name = '') Do
Begin
New(Pcourant);
Pcourant^.Nom := Name;
Readln(Pcourant^.Prenom);
Pcourant^.Suivant := Premier;
Premier := Pcourant;
Write('Entrez un nom : ');
ReadLn(Name);
End;
End.
DMSI/PROGRAMMATION - 122 -
Le type pointeur
B C
D E F
G H
DMSI/PROGRAMMATION - 123 -
Le type pointeur
Type
Pointeur = ^Noeud;
Noeud = Record
Nom : String[10];
Gauche : Pointeur;
Droit : Pointeur;
End;
Une telle structure peut être utilisée pour ordonner des éléments, en considérant que le sous-
arbre gauche d'un noeud contient les éléments situés avant l'élément correspondant au noeud
tandis que le sous-arbre droit contient les éléments situés après l'élément associé au noeud.
La procédure ARBRE ci-dessous permet la création d'un arbre binaire.
Program ArbreBin;
Type
Mot = String[10];
Pointeur = ^Noeud;
Noeud = Record
Nom : Mot;
Gauche : Pointeur;
Droit : Pointeur;
End;
Var
Racine : Pointeur;
Element : Mot;
DMSI/PROGRAMMATION - 124 -
Notions de Programmation Objet
Utilisation :
Placer un point Pt_A en (1,3) s’écrira
Placer(Pt_A, 1, 3) ;
DMSI/PROGRAMMATION - 125 -
Notions de Programmation Objet
Approche objet :
Unit Upoint ;
INTERFACE
TYPE
T_Point = Object
Public
Procedure Placer(X, Y : Integer) ;
Procedure Afficher ;
Private
Abscisse, Ordonnee : Integer ;
End ;
IMPLEMENTATION
Procedure T_Point.Placer(X, Y : Integer) ;
Begin
Abscisse := X ;
Ordonnee := Y ;
End ;
Procedure T_Point.Afficher ;
Begin
Writeln(‘L’’abscisse vaut : ‘,abscisse) ;
Writeln(‘L’’ordonnée vaut : ‘,ordonnee) ;
End ;
End.
Program Utilisation_Classe_Point ;
Uses
Upoint ;
Var
Pt1 : T_Point ;
Begin
Pt1.Placer(5, 8) ;
Pt1.Afficher ;
...
End.
DMSI/PROGRAMMATION - 126 -
Notions de Programmation Objet
Mammifère
Avancer
Chien Baleine
Avancer Avancer
DMSI/PROGRAMMATION - 127 -
Notions de Programmation Objet
IMPLEMENTATION
Procedure T_Vehicule.Initialiser;
Begin
...
...
End;
Var
Voiture : T_Vehicule;
...
Begin
Voiture.Couleur := 10; { OK }
Voiture.Initialiser; { OK }
Voiture.Immatriculer; { Interdit car la procédure Immatriculer est private }
DMSI/PROGRAMMATION - 128 -
Notions de Programmation Objet
DMSI/PROGRAMMATION - 129 -
Notions de Programmation Objet
DMSI/PROGRAMMATION - 130 -
Notions de Programmation Objet
Pt_M P
?
Pt_M P
25
NIL
DMSI/PROGRAMMATION - 131 -
Notions de Programmation Objet
XIX.4.3 L'HERITAGE
Soit le programme suivant qui utilise un objet dérivé de la classe T_Obj définie
précédemment.
EXEMPLE
INTERFACE
TYPE
T_ObjetDerive = Object ( T_Obj)
Public
Constructor Init;
Destructor Done;
Procedure P50;
Private
Nb : Real;
End;
IMPLEMENTATION
Constructor T_ObjetDerive.Init;
Begin
inherited Init; { Appelle le Init de la Classe de Base }
N := 0.0;
End;
Procedure T_ObjetDerive.P50;
Begin
N := 50.0;
End;
...
Le mot réservé inherited est mentionné pour indiquer que c'est le constructeur Init de la classe
de base qui est appelé.
XIX.5 POLYMORPHISME - SURCHARGES DES METHODES
Soit la méthode M1 d'une classe de base. Si cette méthode est redéfinie dans la classe dérivée,
on dit qu'elle est surchargée.
Soient C_Base une classe de Base et C_Derivee une classe dérivée de C_Base.
Soit Pt une variable déclarée comme pointeur sur un objet de type C_Base.
Alors Pt peut pointer sur un objet de type C_Base ou sur un objet de type C_Derivee (car
C_Derivee hérite de C_Base).
DMSI/PROGRAMMATION - 132 -
Notions de Programmation Objet
EXEMPLE
Uses
CRT;
TYPE
T_PT_C_Base=^C_Base;
C_Base =object
public
Constructor Init; { Constructeur obligatoire dans la classe de Base }
procedure P1;virtual;
private
end;
T_PT_C_Derivee = ^C_Derivee;
C_Derivee =object(C_Base) { La classe dérivée hérite de la classe de base }
public
procedure P1;virtual;
private
end;
Constructor C_Base.Init;
Begin
End;
Procedure C_Base.P1;
Begin
Writeln('Méthode P1 de C_Base (Classe de base)');
End;
Procedure C_Derivee.P1;
Begin
Writeln('Méthode P1 de C_Derivee (Classe qui hérite de la Classe de base)');
End;
Var
Ptr : T_PT_C_Base;
Begin
ClrScr;
Ptr := New(T_Pt_C_Derivee,Init);
Ptr^.P1;
Dispose(Ptr);
Ptr := New(T_Pt_C_Base,Init);
Ptr^.P1;
Dispose(Ptr);
End.
NB :
− L'utilisation du mot réservé virtual qui indique que la méthode concernée n'est liée
au code qu'au moment de l'exécution, de l'appel (ligature dynamique).
− L'utilisation de New avec comme paramètres le type du pointeur renvoyé et le
constructeur.
DMSI/PROGRAMMATION - 133 -
Notions de Programmation Objet
EXEMPLES
TYPE
C_Obj = Object
Public
Constructor Init (LeNombre : Integer);
Function ObtenirNombre : Integer;
Private
Nombre_M : Integer;
End;
Constructor C_Obj.Init(LeNombre : Integer);
Begin
Nombre_M := LeNombre;
End;
Function C_Obj.ObtenirNombre : Integer;
Begin
ObtenirNombre := Nombre_M;
End;
Var Traduction
Obj1, Obj2 : C_Obj;
Begin
Obj1.Init(100); C_Obj.Init(Obj1, 100);
Obj2.Init(110); C_Obj.Init(Obj2,110);
Writeln(Obj1.ObtenirNombre); Writeln(C_Obj.ObtenirNombre(Obj1));
End.
DMSI/PROGRAMMATION - 134 -
Notions de Programmation Objet
Self est un pointeur. Mais Attention, on n'utilise pas la notation pointeur (Self^).
Obj1
Nombre_M
Self
Self.Nombre_M := LeNombre;
DMSI/PROGRAMMATION - 135 -
Utilisation du Turbo Pascal
DMSI/PROGRAMMATION - 136 -
Utilisation du Turbo Pascal
Sous-menu File
New
Provoque l'ouverture d'une nouvelle fenêtre NONAMExx.PAS.
Open F3
Ouvre une boite de chargement de fichier
Save F2
Copie le contenu de la fenêtre d'édition dans un fichier disque.
Save as
Permet de sauvegarder le fichier en cours sous un autre nom.
Save all
Permet de sauvegarder tous les fichiers ouverts.
Change Dir
Ouvre la boite permettant de spécifier le nom du répertoire.
Print
Provoque l'impression du contenu de la fenêtre d'édition active.
Printer Setup...
Provoque l’ouverture de la boîte Printer Setup qui sert à configurer le chemin d’accès et les
éléments de ligne de commande. Le filtre est en général le fichier PRNFLTR.EXE dont le
source (modifiable) est livré dans le répertoire TP\BIN.
DOS shell
Sortie temporaire de l'EDI pour réaliser des opérations DOS (retour par EXIT)
Exit Alt X
Provoque la fin normale de la session dans l'EDI.
DMSI/PROGRAMMATION - 137 -
Utilisation du Turbo Pascal
Sous-menu Edit
Undo Alt+BkSp
Annule l'effet de la dernière action d'édition par rapport à une ligne de texte. Vous pouvez
continuer à taper Undo pour défaire d’autres actions.
Redo
Annule l’effet de la dernière commande Undo
Cut Shift+Del
Supprime le bloc marqué et le transfère dans le presse-papier.
Copy Ctrl+Ins
Copie le bloc marqué dans le presse-papier
Paste Shift+Ins
Insère une copie du contenu du presse-papier à la position du curseur.
Clear Ctrl+Del
Efface le bloc marqué
Show clipboard
Permet d'afficher le contenu du presse-papier
Pour marquer un bloc, vous pouvez toujours utiliser les commandes clavier (les séquences
Crtl-K-B, Ctrl-K-K etc...) ou bien utiliser la touche Shift associée aux touches de déplacement
de curseur ou bien encore utiliser directement la souris (cliquer sur le bouton gauche sur le
début du bloc souhaité et déplacer la souris en maintenant le bouton gauche appuyé).
DMSI/PROGRAMMATION - 138 -
Utilisation du Turbo Pascal
Sous-menu Search
Find ...
Ouvre la boite Find pour permettre de définir le texte à rechercher.
Replace ...
Affiche une fenêtre de dialogue permettant de taper un texte à chercher et un autre de
remplacement.
Search again Ctrl-L
Reprend la dernière commande Find ou Replace. Tous les paramètres spécifiés restent actifs.
Goto line number ...
Aller à la ligne N°
Show last compiler error
Affiche le dernier message d’erreur et amène le curseur sur la ligne source correspondante.
Find error
Recherche la position d'une erreur d'exécution.
Find procedure ...
Permet de rechercher une procédure pendant le débogage.
Previous browser
Affiche le résultat de la dernière opération dans la fenêtre Browser
Objects
Affiche tous les objets d’une application
Units
Affiche les informations au sujet des unités
Globals
Affiche les informations au sujet des identificateurs globaux
Symbol
Provoque l’ouverture de la boîte Browse Symbol
DMSI/PROGRAMMATION - 139 -
Utilisation du Turbo Pascal
Sous-menu Run
Run Ctrl-F9
Lance l'exécution du programme. Si le fichier Source a été modifié depuis la dernière
compilation, provoque une reconstruction Make.
Step over F8
Provoque l'exécution de la prochaine instruction en considérant comme une seule instruction
l'appel et le retour du niveau inférieur (procédures ou fonctions).
Trace into F7
Provoque l'exécution de la prochaine instruction même si cela suppose de descendre dans un
niveau inférieur (sous-programme).
Go to cursor F4
Lance l'exécution jusqu'à la ligne curseur (si la ligne est exécutable).
Program reset Ctrl-F2
Abandonne le débogage, libère la mémoire et ferme tous les fichiers ouverts par le
programme.
Parameters ...
Ouvre une boite de dialogue permettant de spécifier les options de ligne de commande qui
seront transmises en début d'exécution.
DMSI/PROGRAMMATION - 140 -
Utilisation du Turbo Pascal
Sous-menu Compile
Compile Alt-F9
Provoque la compilation du texte source dans la fenêtre d'édition active.
Make F9
Construction sélective du fichier indiqué par Primary File ou du fichier de la fenêtre d'édition.
si le source d'une unité a été mis à jour (.TPU obsolète), elle est recompilée.
si la partie Interface d'une unité a été modifiée, toutes les unités qui la référencent
sont recompilées.
si une unité référence un fichier Include ou .OBJ modifié (.TPU obsolète), l'unité est
recompilée.
Build
Provoque la reconstruction systématique du projet.
Primary File...
Permet de définir le nom du fichier source .PAS principal qui sera compilé par le Make et le
Build.
Clear primary file...
Désélectionne le fichier principal courant. Les commandes Compile et Build vont s’appliquer
au fichier de la fenêtre active.
Information...
Provoque l’ouverture de la boîte Information qui indique
le statut de la dernière compilation
l’utilisation mémoire
l’environnement
DMSI/PROGRAMMATION - 141 -
Utilisation du Turbo Pascal
Sous-menu Debug
BreakPoints...
Provoque l'ouverture d'une boite de dialogue qui contrôle l'utilisation des points d’arrêt aussi
bien conditionnels qu’inconditionnels.
Call Stack Ctrl-F3
Provoque l'ouverture de la fenêtre Call Stack. Cette fenêtre montre la pile d'appels des
différentes routines. La pile symbolique peut mémoriser 128 appels.
Register
Provoque l'ouverture de la fenêtre Register. Cette fenêtre présente le contenu des registres du
microprocesseur (très utile lors du débogage des parties d’assembleur).
Watch
Provoque l'ouverture de la fenêtre de suivi Watch. Cette fenêtre contient les expressions
choisies comme témoins.
Output
Provoque l'ouverture de la fenêtre de résultats d'exécution (pas de graphiques).
User Screen Alt-F5
Bascule sur la page vidéo, l'écran d'exécution (aussi bien les affichages texte que les tracés
graphiques).
Evaluate/modify... Ctrl-F4
Permet d'évaluer une variable ou une expression, de visualiser ou de modifier la valeur d'une
variable.
Add Watch... Ctrl F7
Permet de spécifier une expression témoin.
Add Breakpoint...
Provoque l’ouverture d’une boîte qui sert à définir de nouveaux points d’arrêts conditionnels
ou inconditionnels.
DMSI/PROGRAMMATION - 142 -
Utilisation du Turbo Pascal
Sous-menu Tools
Messages
Affiche la fenêtre Message (messages des programmes qui utilisent un filtre DOS comme
GREP).
Go to next Alt+F8
Dans une fenêtre Messages ou Browser, le focus va sur le prochain élément, puis l’EDI affiche
le source correspondant.
Go to previous Alt+F7
Idem sur l’élément précédent.
Grep Shift+F2
Grep (Acronyme de Get Regular Expression Pattern) est un utilitaire installé par défaut. Son
rôle est de rechercher un texte dans plusieurs fichiers à la fois. On peut modifier ses
paramètres dans Options/Tools.
Sous-menu Options
Compiler...
Ouvre une fenêtre permettant de fixer soit pour l’application en cours, soit pour les
applications futures, différentes options de compilation. Ces options seront détaillées en
Annexe A.
DMSI/PROGRAMMATION - 143 -
Utilisation du Turbo Pascal
Memory Sizes...
Permet de modifier trois paramètres de taille mémoire :
Taille Pile (Stack size)
Limite Mini du Tas (Low Heap limit)
Limite Maxi du Tas (High Heap limit)
L'option $M est équivalente.
Taille Pile : Ce paramètre définit la taille du segment de pile, en octets. La valeur par défaut
est de 16 Ko, le maximum étant bien sûr de 64 Ko.
Limite mini du Tas : Ce paramètre définit la taille minimale du tas (>Heap). La valeur par
défaut est de 0 Ko. Si la taille du tas ne permet pas la bonne exécution d'un programme, celui-
ci se termine sur une erreur d'exécution.
Limite maxi du Tas : Ce paramètre définit la taille maximale du tas (>Heap). La valeur par
défaut est de 655360, ce qui correspond en général à la totalité de la mémoire disponible. Cette
valeur doit être supérieure ou égale à la valeur minimale du tas.
Linker...
Permet de préciser les fichiers éventuellement produits par le linker.
Debugger...
Permet de fixer différentes options de débogage
Integrated debugging : par défaut (débogage par débogueur intégré et par Turbo
Debugger)
Standalone : débogage uniquement par Turbo Debugger
Display Swapping : pour spécifier quand le débogueur intégré peut permuter les
fenêtres d’affichage.
Directories...
Permet de spécifier les répertoires que Turbo Pascal doit utiliser pour les fichiers EXE & TPU,
les fichiers Include, les fichier Units et les fichiers Objets.
Browser...
Provoque l’ouverture d’une boîte définissant les options de ObjectBrowser qui permet de
naviguer au milieu des hierarchies d’objets, d’unités et d’identificateurs de votre projet.
Tools...
Provoque l’ouverture d’une boîte qui sert à aménager l’accès aux utilitaires associés (Ex
GREP) en fixant les répertoires et différentes options de la ligne de commande.
DMSI/PROGRAMMATION - 144 -
Utilisation du Turbo Pascal
Sous-menu Window
Tile (mosaïque)
Permet de juxtaposer les fenêtres.
Cascade
Permet d'empiler les fenêtres avec un léger décalage.
Close all
Permet de fermer toutes les fenêtres
Refresh display
Restaure l’affichage
Size/Move Ctrl-F5
Permet de retailler et de déplacer la fenêtre active à l'aide des touches curseur associées à la
touche Shift. On peut également utiliser la souris en cliquant sur la poignée en bas à droite.
Zoom F5
Permet de déplier (ou replier) la fenêtre active pour qu'elle occupe tout l'écran. C'est une
commande bascule.
Next F6
Permet de circuler entre les fenêtres selon un schéma d'appel circulaire.
Previous Shift-F6
Permet d'activer la dernière fenêtre active avant la fenêtre active actuelle.
Close Alt-F3
Provoque la fermeture de la fenêtre active.
List Alt-0
Provoque l'ouverture de la liste des fenêtres actuellement ouvertes.
DMSI/PROGRAMMATION - 145 -
Utilisation du Turbo Pascal
Sous-menu Help
Contents
Présente un sommaire des entrées principales du système d'aide.
Index Shift+F1
Présente un index alphabétique complet.
Topic Search Ctrl+F1
Permet d'accéder à l'aide langage sur un mot standard (pointé par le curseur).
Previous TopicAlt+F1
Dans le système d'aide, vous pouvez consulter les 20 derniers écrans d'aide.
Using Help
Permet d'accéder à un écran expliquant comment utiliser l'aide.
Files...
Ouvre une boîte permettant d’ajouter/ôter des fichiers d’aide
Compiler Directives
Reserved Words ...
Différentes aides particulières sur les sujets indiqués.
DMSI/PROGRAMMATION - 146 -
Utilisation du Turbo Pascal
DMSI/PROGRAMMATION - 147 -
Utilisation du Turbo Pascal
XX.1.3 DIVERS
La commande Edit vous fait entrer dans l'éditeur intégré. Vous revenez au menu principal par
F10, et passez à une autre option par Alt-initiale d'option. Le fichier contenu dans l'éditeur
reste visible. Il suffit de frapper "E" depuis le menu ou Alt-E de tout autre point pour revenir à
l'édition. Lors de la saisie, vous êtes en mode Insertion par défaut.
Ctrl+O+O insère toutes les directives de compilation en première ligne du fichier en cours.
Ctrl+F1 appelle l'aide langage.
La ligne d'état de l'éditeur indique : la ligne et colonne courantes.
Un astérisque indique si le fichier a été sauvegardé depuis la dernière modification.
La longueur de ligne maximale de l'éditeur est de 249 (voire 1024 suivant l’EDI utilisé)
caractères; rappelez-vous cependant que le compilateur n'en accepte que 126.
La largeur de la fenêtre d'édition est de 77 caractères; si vous frappez au-delà, le texte à
gauche est translaté. Lorsque vous terminez votre session d'édition, frappez F10 pour revenir
au menu principal.
DMSI/PROGRAMMATION - 148 -
Utilisation du Turbo Pascal
Ces témoins peuvent comporter des spécificateurs de format pour contrôler leur format
d'affichage.
Exemple :
I,$ { Affiche la variable entière I en HexaDécimal }
La fenêtre de suivi est indispensable pour surveiller les valeurs de certaines variables et
expressions stratégiques. Dans certaines situations cependant, le besoin est ponctuel et ne
justifie pas l'insertion d'un témoin supplémentaire. Utilisez dans ce cas la commande
Evaluate/Modify (Ctrl+F4), elle vous permet de visualiser et même de modifier la valeur de
toute variable ou expression.
Un spécificateur de format comprend une valeur de répétition facultative (entière), suivie de
zéro ou plus métacaractères de format.
C Caractère. Visualise les caractères de contrôle (ASCII 0..31); par défaut, ceux-ci sont
représentés sous forme de valeurs ASCII en utilisant la syntaxe #xx. Concerne les
caractères et les chaînes.
D Décimal. Les valeurs entières sont présentées en notation décimale. Concerne les
expressions entières simples mais aussi les structures contenant des entiers.
F[n] Virgule flottante. n est un entier entre 2 et 18 spécifiant le nombre de chiffres
significatifs (11 par défaut). Ne concerne que les valeurs à virgule flottante.
H, X, $ Hexadécimal. Les valeurs entières sont présentées en notation hexadécimale avec un
préfixe '$'. Concerne les expressions entières simples mais aussi les structures
contenant des entiers.
M Mémoire. Visualise le contenu de l'adresse mémoire symbolisé par la variable. Celle-
ci doit évidemment représenter une position mémoire. M peut être combiné à D, C,
S, X ou H.
P Pointeur. Visualise les pointeurs au format segment:déplacement (seg:ofs) plutôt
qu'au format standard Ptr(seg,ofs). Ne concerne que les valeurs de type pointeur.
R Record. Visualise aussi les noms des champs des enregistrements (X:1;Y:10;Z:5) en
plus de leurs valeurs (1,10,5). Ne concerne que les variables du type enregistrement.
S String. Visualise les caractères de contrôle (ASCII 0..31) en tant que valeurs ASCII
avec le préfixe #. C'est le mode de présentation standard; S n'est donc utile qu'en
combinaison avec M
Voici quelques exemples d'expressions employant les spécificateurs de format. Posons les
déclarations suivantes :
DMSI/PROGRAMMATION - 149 -
Utilisation du Turbo Pascal
TYPE
NamePtr = ^NameRec;
NameRec = RECORD
Next : NamePtr;
Count : INTEGER;
Name : STRING[31];
END;
VAR
List : ARRAY[1..10] OF INTEGER;
P : NamePtr;
DMSI/PROGRAMMATION - 150 -
Annexes
DMSI/PROGRAMMATION - 151 -
Annexes
DMSI/PROGRAMMATION - 152 -
Annexes
DMSI/PROGRAMMATION - 153 -
Annexes
DMSI/PROGRAMMATION - 154 -
Annexes
Directive Description
DEFINE définit un symbole conditionnel
Le symbole défini par cette directive reste valable pour toute la suite de la
compilation sauf à partir de la rencontre d'une directive de neutralisation
$UNDEF Nom.
ELSE traite ou ignore la portion de source délimitée
ENDIF marque la fin d'un bloc ouvert par le plus récent $Ifxxx
IFDEF Compile si Nom est défini {$IFDEF Nom}
IFNDEF Compile si Nom n'est pas défini {$IFNDEF Nom}
IFOPT Compile si option de compilation dans l'état (+ ou -) {$IFOPT Option}
UNDEF Annule une définition existante {$UNDEF Nom}
Symbole Description
CPU86 CPU de la famille Intel 80x86
CPU87 Défini si un coprocesseur 80x87 est détecté à la compilation
DPMI Vrai si en mode protégé DOS
MSDOS Vrai si en mode réel (MS-DOS ou PC-DOS)
VER70 Numéro de version de Turbo Pascal
WINDOWS Vrai si sous MS-Windows
DMSI/PROGRAMMATION - 155 -
Annexes
DMSI/PROGRAMMATION - 157 -
Annexes
D H Ch D H C D H C D H C D H C D H C D H Ch
h h h h h
32 20 SP 64 40 @ 96 60 ` 128 80 Ç 160 A0 á 192 C0 └ 224 E0 α
33 21 ! 65 41 A 97 61 a 129 81 ü 161 A1 í 193 C1 ┴ 225 E1 β
34 22 " 66 42 B 98 62 b 130 82 é 162 A2 ó 194 C2 ┬ 226 E2 τ
35 23 # 67 43 C 99 63 c 131 83 â 163 A3 ú 195 C3 ├ 227 E3 л
36 24 $ 68 44 D 100 64 d 132 84 ä 164 A4 ñ 196 C4 ─ 228 E4 ∑
37 25 % 69 45 E 101 65 e 133 85 à 165 A5 Ñ 197 C5 ┼ 229 E5 σ
38 26 & 70 46 F 102 66 f 134 86 å 166 A6 ª 198 C6 ╞ 230 E6 μ
39 27 ' 71 47 G 103 67 g 135 87 ç 167 A7 º 199 C7 ╟ 231 E7 τ
40 28 ( 72 48 H 104 68 h 136 88 ê 168 A8 ¿ 200 C8 ╚ 232 E8 φ
41 29 ) 73 49 I 105 69 i 137 89 ë 169 A9 ¬ 201 C9 ╔ 233 E9 Θ
42 2A * 74 4A J 106 6A j 138 8A è 170 AA ¬ 202 CA ╩ 234 EA Ω
43 2B + 75 4B K 107 6B k 139 8B ï 171 AB ½ 203 CB ╦ 235 EB δ
44 2C , 76 4C L 108 6C l 140 8C î 172 AC ¼ 204 CC ╠ 236 EC ∞
45 2D - 77 4D M 109 6D m 141 8D ì 173 AD ¡ 205 CD ═ 237 ED Ø
46 2E . 78 4E N 110 6E n 142 8E Ä 174 AE « 206 CE ╬ 238 EE ε
47 2F / 79 4F O 111 6F o 143 8F Å 175 AF » 207 CF ╧ 239 EF ∩
48 30 0 80 50 P 112 70 p 144 90 É 176 B0 ░ 208 D0 ╨ 240 F0 ≡
49 31 1 81 51 Q 113 71 q 145 91 æ 177 B1 ▒ 209 D1 ╤ 241 F1 ±
50 32 2 82 52 R 114 72 r 146 92 Æ 178 B2 ▓ 210 D2 ╥ 242 F2 ≤
51 33 3 83 53 S 115 73 s 147 93 ô 179 B3 │ 211 D3 ╙ 243 F3 ≥
52 34 4 84 54 T 116 74 t 148 94 ö 180 B4 ┤ 212 D4 ╘ 244 F4 ⌠
53 35 5 85 55 U 117 75 u 149 95 ò 181 B5 ╡ 213 D5 ╒ 245 F5 ⌡
54 36 6 86 56 V 118 76 v 150 96 û 182 B6 ╢ 214 D6 ╓ 246 F6 ÷
55 37 7 87 57 W 119 77 w 151 97 ù 183 B7 ╖ 215 D7 ╫ 247 F7 ≈
56 38 8 88 58 X 120 78 x 152 98 ÿ 184 B8 ╕ 216 D8 ╪ 248 F8 °
57 39 9 89 59 Y 121 79 y 153 99 Ö 185 B9 ╣ 217 D9 ┘ 249 F9 ·
58 3A : 90 5A Z 122 7A z 154 9A Ü 186 BA ║ 218 DA ┌ 250 FA ·
59 3B ; 91 5B [ 123 7B { 155 9B ¢ 187 BB ╗ 219 DB █ 251 FB √
60 3C < 92 5C \ 124 7C | 156 9C £ 188 BC ╝ 220 DC ▄ 252 FC ⁿ
61 3D = 93 5D ] 125 7D } 157 9D ¥ 189 BD ╜ 221 DD ▌ 253 FD ²
62 3E > 94 5E ^ 126 7E ~ 158 9E P 190 BE ╛ 222 DE ▐ 254 FE ■
63 3F ? 95 5F _ 127 7F 159 9F ƒ 191 BF ┐ 223 DF ▀ 255 FF
DMSI/PROGRAMMATION - 158 -
Annexes
DMSI/PROGRAMMATION - 159 -
Annexes
BIBLIOGRAPHIE
− Manuels de TURBO PASCAL (Versions 5 à 7.01)
BORLAND INTL – BORLAND INPRISE
− Le Langage PASCAL
E N S T Br R. OGOR
− PASCAL USER MANUAL AND REPORT
JENSEN & WIRTH
− Cours PASCAL
ESE
− Le PASCAL par la pratique LE BEUX et TAVERNIER
Editions SYBEX
DMSI/PROGRAMMATION - 160 -
Annexes
Index
DMSI/PROGRAMMATION - 161 -
I CARACTERISTIQUES PRINCIPALES DU LANGAGE PASCAL...................................................................................1
Caractéristiques principales du langage Pascal......................................................................................................................1
I.1 LE LANGAGE PASCAL...................................................................................................................1
PASCAL est un langage de programmation de haut niveau développé à l'origine par le Professeur Niklaus WIRTH à
ZURICH dans les années 1970................................................................................................................................................1
PASCAL est un langage universel..........................................................................................................................................1
Il dérive du langage de programmation ALGOL...................................................................................................................1
Son champ d'application est complet : problèmes scientifiques, problèmes de gestion, problèmes de traitement de textes
etc..............................................................................................................................................................................................1
PASCAL est un langage structuré. ........................................................................................................................................1
Le professeur WIRTH a conçu le langage PASCAL comme une aide à l'enseignement d'une approche systématique de
la programmation des ordinateurs. Cette approche est connue sous le terme de programmation structurée........................1
PASCAL est reconnu aujourd'hui comme l'un des langages les plus performants que ce soit en programmation
professionnelle, éducative ou personnelle...............................................................................................................................1
I.2 LE TURBO PASCAL........................................................................................................................1
TURBO PASCAL suit de près la définition du PASCAL STANDARD telle qu'elle a été publiée par JENSEN et
WIRTH dans Pascal User Manual and Report........................................................................................................................1
Dans les mains d'un programmeur expérimenté, il devient un outil de développement très efficace en procurant des
temps d'exécution et de compilation très courts......................................................................................................................1
Avertissement : les renseignements contenus dans ce document se rapportent au TURBO PASCAL Version 7.0
(BORLAND International Inc)................................................................................................................................................1
DMSI/PROGRAMMATION - 161 -.......................................................................................................................................1
II ELEMENTS DE BASE DU LANGAGE.............................................................................................................................2
Elements de base du langage..................................................................................................................................................2
II.1 LES SYMBOLES DE BASE............................................................................................................2
Le vocabulaire de base du TURBO PASCAL est composé de lettres, de chiffres, et de symboles spéciaux:.....................2
II.1.1 LETTRES.......................................................................................................................................2
A..Z, a..z Aucune lettre accentuée sauf dans les commentaires............................................................................................2
II.1.2 CHIFFRES.....................................................................................................................................2
0..9 ..........................................................................................................................................................................................2
0..9 et les lettres A..F ou a..f pour les chiffres hexadécimaux...............................................................................................2
II.1.3 SYMBOLES SPECIAUX..............................................................................................................2
+ - * / = ^ < > ( ) [ ] { } . : ; ' # $ @........................................................................................................................................2
Aucune distinction n'est faite entre les minuscules et les majuscules. Certains opérateurs et délimiteurs sont construits
avec deux symboles spéciaux...................................................................................................................................................2
Opérateur d'affectation :=.......................................................................................................................................................2
Opérateur relationnel = <> < <= >= >....................................................................................................................................2
Délimiteur de sous-ensemble .................................................................................................................................................2
Parenthèses et crochets (. .) ou [ ]...........................................................................................................................................2
Commentaires (* *) ou { }....................................................................................................................................................2
II.1.4 MOTS RESERVES........................................................................................................................2
Les mots réservés font partie intégrante de TURBO PASCAL. Ils ne peuvent pas être définis à nouveau et ne peuvent
donc pas être utilisés comme des identificateurs définis par l'utilisateur...............................................................................2
and............................................................................................................................................................................................2
end............................................................................................................................................................................................2
nil.............................................................................................................................................................................................2
shr.............................................................................................................................................................................................2
array.........................................................................................................................................................................................2
file............................................................................................................................................................................................2
not............................................................................................................................................................................................2
string........................................................................................................................................................................................2
asm...........................................................................................................................................................................................2
for.............................................................................................................................................................................................2
object........................................................................................................................................................................................2
then...........................................................................................................................................................................................2
begin.........................................................................................................................................................................................2
function....................................................................................................................................................................................2
of..............................................................................................................................................................................................2
to..............................................................................................................................................................................................2
case...........................................................................................................................................................................................2
goto..........................................................................................................................................................................................2
or..............................................................................................................................................................................................2
type...........................................................................................................................................................................................2
const.........................................................................................................................................................................................2
if...............................................................................................................................................................................................2
packed......................................................................................................................................................................................2
unit...........................................................................................................................................................................................2
constructor...............................................................................................................................................................................2
implementation........................................................................................................................................................................2
procedure.................................................................................................................................................................................2
until..........................................................................................................................................................................................2
destructor.................................................................................................................................................................................2
in..............................................................................................................................................................................................2
program....................................................................................................................................................................................2
uses...........................................................................................................................................................................................2
div............................................................................................................................................................................................2
inline........................................................................................................................................................................................2
record.......................................................................................................................................................................................2
var............................................................................................................................................................................................2
do..............................................................................................................................................................................................2
interface...................................................................................................................................................................................2
repeat........................................................................................................................................................................................2
while.........................................................................................................................................................................................2
downto.....................................................................................................................................................................................2
label..........................................................................................................................................................................................2
set.............................................................................................................................................................................................2
with..........................................................................................................................................................................................2
else...........................................................................................................................................................................................2
mod..........................................................................................................................................................................................2
shl.............................................................................................................................................................................................2
xor............................................................................................................................................................................................2
Les mots suivants constituent des directives de compilation. Ils peuvent donc être redéfinis par l'utilisateur, bien que
cela ne soit pas conseillé..........................................................................................................................................................2
DMSI/PROGRAMMATION - 161 -.......................................................................................................................................2
absolute....................................................................................................................................................................................3
far.............................................................................................................................................................................................3
near...........................................................................................................................................................................................3
assembler.................................................................................................................................................................................3
forward.....................................................................................................................................................................................3
private......................................................................................................................................................................................3
external....................................................................................................................................................................................3
interrupt....................................................................................................................................................................................3
virtual.......................................................................................................................................................................................3
Les identificateurs prédéfinis tels que les identificateurs de constantes (Ex : PI), de type (Ex : INTEGER), de variables
(Ex : MEM), de procédures (Ex : RESET) ou de fonctions (Ex : SIN) standard peuvent également être redéfinis par
l'utilisateur................................................................................................................................................................................3
II.2 LES DELIMITEURS........................................................................................................................3
Les éléments du langage doivent être séparés par au moins un des délimiteurs suivants : un espace, une fin de ligne, ou
un commentaire en observant les restrictions suivantes:.........................................................................................................3
Il ne peut pas y avoir de séparateurs à l'intérieur d'un identificateur, d'un nombre, ou d'un symbole.................................3
Il doit y avoir au moins un séparateur entre deux identificateurs, deux nombres ou deux mots réservés consécutifs........3
II.3 LES LIGNES DE PROGRAMME...................................................................................................3
La longueur maximum d'une ligne de programme est 126 caractères. Tout caractère au-delà du 126ème sera ignoré du
compilateur bien que l'éditeur autorise 249 (voire 1024) caractères par ligne.......................................................................3
................................................................................................................................................................................................3
III LES TYPES DE DONNEES...............................................................................................................................................4
Un type de données définit l'ensemble des valeurs qu'une variable peut prendre. Chaque variable dans un programme
doit être associée à un et un seul type de données. Bien que les types de données puissent être très complexes, ils sont
tous construits à partir de types simples (non structurés)........................................................................................................4
Les huit types fondamentaux se regroupent en trois classes:.................................................................................................4
La classe des types simples comprend les types scalaires (entiers, booléen, caractère, énuméré, intervalle) et les types
réels (réel, simple, double, étendu, composite).......................................................................................................................4
La classe des types structurés comprend le type chaîne de caractères, le type tableau, le type enregistrement, le type
ensemble et les types fichiers...................................................................................................................................................4
La classe du type pointeur.......................................................................................................................................................4
III.1 LES TYPES SIMPLES...................................................................................................................4
Un type simple peut être défini par le programmeur (type scalaire déclaré), l'un des types scalaires standard : integer
(entier), boolean (booléen), char (caractère) ou byte (octet), un type réel.............................................................................4
III.1.1 LES TYPES SCALAIRES...........................................................................................................4
Ces types sont caractérisés par quatre propriétés :.................................................................................................................4
Les valeurs possibles d'un type scalaire forment un ensemble ordonné; à chaque valeur est associé un rang (0 pour la
première valeur sauf pour les entiers)......................................................................................................................................4
La fonction standard ORD, qui retourne le rang de la valeur peut être utilisée....................................................................4
La fonction standard PRED, qui retourne la valeur précédant la valeur spécifiée peut être utilisée. PRED indique une
erreur si elle est appelée avec la première valeur du type......................................................................................................4
La fonction standard SUCC, qui retourne la valeur succédant la valeur spécifiée peut être utilisée. SUCC indique une
erreur si elle est appelée avec la dernière valeur du type........................................................................................................4
La syntaxe d'un type scalaire est la suivante :........................................................................................................................4
DMSI/PROGRAMMATION - 161 -.......................................................................................................................................4
Les types de données...............................................................................................................................................................4
Type.........................................................................................................................................................................................6
Portée.......................................................................................................................................................................................6
Format......................................................................................................................................................................................6
entier court SHORTINT..........................................................................................................................................................6
entier INTEGER......................................................................................................................................................................6
entier long LONGINT.............................................................................................................................................................6
octet BYTE..............................................................................................................................................................................6
mot WORD..............................................................................................................................................................................6
-128..127..................................................................................................................................................................................6
-32768..32767..........................................................................................................................................................................6
-2147483648..2147483647......................................................................................................................................................6
0..255.......................................................................................................................................................................................6
0..65535...................................................................................................................................................................................6
8 bits signé..............................................................................................................................................................................6
16 bits signé............................................................................................................................................................................6
32 bits signé............................................................................................................................................................................6
8 bits non signé.......................................................................................................................................................................6
16 bits non signé.....................................................................................................................................................................6
Remarque : Les dépassements de capacité dans les opérations arithmétiques ne sont pas détectés. En particulier, les
résultats partiels dans les expressions entières doivent être compris dans l'échelle du type considéré.................................6
Une valeur booléenne peut avoir l'une des deux valeurs logiques vrai ou faux (True ou False). Elle sera définie telle que
False < True..............................................................................................................................................................................6
Une variable BOOLEAN occupe un octet en mémoire.........................................................................................................6
FALSE < TRUE......................................................................................................................................................................6
ORD ( FALSE ) = 0..............................................................................................................................................................6
ORD ( TRUE ) = 1................................................................................................................................................................6
SUCC (FALSE ) = TRUE.....................................................................................................................................................6
PRED ( TRUE ) = FALSE....................................................................................................................................................6
PRED ( FALSE ) renvoie une erreur....................................................................................................................................6
Une valeur de type caractère est un élément de l'ensemble des caractères du code ASCII (voir annexe C). Les valeurs
ordinales des caractères ASCII vont de 0 à 255. Une variable CHAR occupe un octet en mémoire....................................6
Les types énumérés permettent de définir des ensembles ordonnés de valeurs en énumérant les identificateurs qui
représentent ces valeurs............................................................................................................................................................6
Le type intervalle est une portion de l'intervalle de valeurs d'un type scalaire, qui est appelé le type hôte. La définition
du type intervalle consiste en la spécification des deux bornes (min et max) de l'intervalle................................................8
Les deux constantes doivent être du même type scalaire et telles que min < max. Une variable de type intervalle hérite
de toutes les propriétés du type hôte, mais lors de l'exécution, sa valeur doit rester dans l'intervalle défini........................8
Nota : Le type SCALAIRE ENUMERE et le type INTERVALLE seront étudiés plus en détail dans le chapitre VIII.....8
III.1.2 LES TYPES REELS.....................................................................................................................8
Il existe cinq variantes du type réel : réel (REAL), simple(SINGLE), double (DOUBLE), étendu (EXTENDED) et
compatible (COMP).................................................................................................................................................................8
Turbo Pascal accepte deux modèles de génération de code à virgule flottante :..................................................................8
Calculs flottants par logiciel {$N-}........................................................................................................................................8
Calculs flottants par matériel 80x87 {$N+}...........................................................................................................................8
La directive $N permet de passer d’un mode à l’autre..........................................................................................................8
Voir également la directive $E qui active ou inhibe la liaison du code avec les routines de la librairie d'émulation pour
le calcul des flottants (émulateur de 80x87)............................................................................................................................8
Type.........................................................................................................................................................................................8
Portée.......................................................................................................................................................................................8
Précision..................................................................................................................................................................................8
Taille........................................................................................................................................................................................8
Réel REAL..............................................................................................................................................................................8
Simple SINGLE.......................................................................................................................................................................8
Double DOUBLE....................................................................................................................................................................8
Etendu EXTENDED...............................................................................................................................................................8
Compatible COMP..................................................................................................................................................................8
2.9 * 10-39 .. 1.7 * 1038.........................................................................................................................................................8
1.5 * 10-45 .. 3.4 * 1038.........................................................................................................................................................8
5.0 * 10-324 .. 1.7 * 10308.....................................................................................................................................................8
1.9 * 10-4951 .. 1.1 * 104932.................................................................................................................................................8
-9.2*1018.. 9.2*1018...............................................................................................................................................................8
11-12........................................................................................................................................................................................8
7-8............................................................................................................................................................................................8
15-16........................................................................................................................................................................................8
19-20........................................................................................................................................................................................8
19-20........................................................................................................................................................................................8
6 octets.....................................................................................................................................................................................8
4 octets.....................................................................................................................................................................................8
8 octets.....................................................................................................................................................................................8
10 octets...................................................................................................................................................................................8
8 octets.....................................................................................................................................................................................8
Remarque : le type COMP ne peut recevoir que des valeurs entières (de –263 à 263-1).....................................................8
Le dépassement de capacité pendant une opération arithmétique impliquant des réels provoque l'arrêt du programme et
l'affichage d'un message d'erreur.............................................................................................................................................8
Différences entre les réels et les autres types simples :..........................................................................................................8
Les fonctions PRED, SUCC et ORD ne peuvent pas avoir d'arguments réels. Les réels ne peuvent pas être utilisés pour
l'indexation des tableaux, pour définir le type de base d'un ensemble, dans les instructions For et Case. Les intervalles de
type réel ne sont pas autorisés..................................................................................................................................................8
III.1.3 AUTRES TYPES..........................................................................................................................8
Le type Chaîne de caractères, les types structurés et le type Pointeur feront l'objet des chapitres IX, X, XI, XII, XIV et
XVIII.........................................................................................................................................................................................8
III.2 IDENTITE ET COMPATIBILITE DE TYPES..............................................................................9
III.2.1 IDENTITE DE TYPE...................................................................................................................9
L'identité de type n'est requise qu'entre les paramètres effectifs et formels des procédures et fonctions (cf Chapitre VII).
...................................................................................................................................................................................................9
Deux types T1 et T2 sont identiques si...................................................................................................................................9
T1 et T2 représentent le même identificateur de type ou.......................................................................................................9
T1 est déclaré équivalent à un type identique à T2................................................................................................................9
Deux variables déclarées dans la même déclaration sont de type identique.........................................................................9
EXEMPLES :..........................................................................................................................................................................9
T1 = Integer ;...........................................................................................................................................................................9
T2 = T1 ;..................................................................................................................................................................................9
T1 et T2 sont de type identique..............................................................................................................................................9
T3 = Set Of Char ;...................................................................................................................................................................9
T4 = Set Of Char;....................................................................................................................................................................9
T3 et T4 ne sont pas deux types identiques car Set Of Char n'est pas un identificateur de type..........................................9
V1, V2 : Set Of Char ;.............................................................................................................................................................9
V1 et V2 sont de type identique..............................................................................................................................................9
III.2.2 COMPATIBILITE DE TYPES....................................................................................................9
La compatibilité entre deux types est parfois nécessaire dans les expressions et opérations relationnelles........................9
Il y a compatibilité de types lorsque au moins une des conditions suivantes est vérifiée :..................................................9
Les deux types sont identiques................................................................................................................................................9
Les deux types sont du type réel.............................................................................................................................................9
Les deux types sont du type entier..........................................................................................................................................9
Un des types est un sous-intervalle de l'autre.........................................................................................................................9
Les deux types sont des sous-intervalles du même type hôte................................................................................................9
Les deux types sont des types ensemble avec des types de base compatibles......................................................................9
Les deux types sont des types chaîne de caractères compactée ayant le même nombre de composants ............................9
Un des types est une chaîne de caractères et l'autre une chaîne de caractères, une chaîne de caractères compactée ou un
caractère....................................................................................................................................................................................9
Les deux types sont de type pointeur......................................................................................................................................9
Les deux types sont du type sous-programme avec un même type pour la valeur renvoyée, le même nombre de
paramètres et le type de chacun de ceux-ci est identique un à un..........................................................................................9
III.2.3 COMPATIBILITE AU NIVEAU DES AFFECTATIONS.......................................................10
La compatibilité au niveau des affectations est nécessaire lors d'une affectation ou d'un passage de paramètres par
valeur......................................................................................................................................................................................10
Un type T2 est compatible au niveau des affectations avec un type T1 (c'est-à-dire T1 := T2 est autorisée) si l'une des
assertions suivantes est vraie :................................................................................................................................................10
T1 et T2 sont de type identique (sauf type fichier ou type structuré ayant un type fichier comme composant)...............10
T1 et T2 sont des type scalaires compatibles et les valeurs de T2 sont contenues dans l'intervalle des valeurs autorisées
de T1.......................................................................................................................................................................................10
T1 et T2 sont des types réels et les valeurs de T2 sont contenues dans l'intervalle des valeurs autorisées de T1.............10
T1 est un type réel et T2 est un type entier..........................................................................................................................10
T1 et T2 sont des types chaînes de caractères......................................................................................................................10
T1 est un type chaîne de caractères et T2 est un type caractère..........................................................................................10
T1 est un type chaîne et T2 est un type chaîne compactée de caractères............................................................................10
T1 et T2 sont des type compatibles chaînes compactées de caractères...............................................................................10
T1 et T2 sont des types ensembles compatibles, tous les membres de T2 étant compris dans l'intervalle des valeurs
autorisées de T1......................................................................................................................................................................10
T1 et T2 sont des types pointeurs compatibles.....................................................................................................................10
T1 et T2 sont des types sous-programme compatibles.........................................................................................................10
T1 est un type sous-programme et T2 un sous-programme ayant le même type de résultat, le même nombre de
paramètres et le type de chacun de ceux-ci est identique un à un........................................................................................10
IV ELEMENTS DU LANGAGE DEFINIS PAR L'UTILISATEUR...................................................................................11
IV.1 IDENTIFICATEURS....................................................................................................................11
Les identificateurs sont des noms utilisés pour marquer:.....................................................................................................11
des étiquettes.........................................................................................................................................................................11
des constantes........................................................................................................................................................................11
des types de données.............................................................................................................................................................11
des variables..........................................................................................................................................................................11
des procédures ou des fonctions............................................................................................................................................11
Ils sont formés de lettres et de chiffres, mais doivent commencer obligatoirement par une lettre ou le caractère
Underscore (souligné). Leur longueur est limitée par la longueur de la ligne (126 caractères). En fait, seuls les 63
premiers caractères seront pris en compte par le compilateur. Il n'y a pas de distinction entre majuscules et minuscules.
.................................................................................................................................................................................................11
La syntaxe est la suivante :...................................................................................................................................................11
IV.2 NOMBRES....................................................................................................................................11
Les nombres sont des constantes de type entier ou de type réel. Les constantes entières sont des nombres entiers
exprimés soit en décimal soit en hexadécimal. Les constantes hexa- décimales sont précédées par le signe $ et
l'intervalle est de $0000 à $FFFF. La syntaxe est la suivante :.............................................................................................11
IV.3 CHAINES......................................................................................................................................11
Une constante chaîne est une suite de caractères inclus entre deux apostrophes '..............................................................11
Une apostrophe peut être comprise dans une chaîne en écrivant deux apostrophes successives. Les chaînes contenant un
seul caractère sont du type char. Une chaîne étant assimilable à un type tableau, les caractères sont accessibles comme
les éléments d'un tableau. ......................................................................................................................................................11
DMSI/PROGRAMMATION - 161 -.....................................................................................................................................11
IV.4 CARACTERES DE CONTROLE.................................................................................................12
Elements du langage définis par l’utilisateur.......................................................................................................................11
TURBO PASCAL permet d'inclure des caractères de contrôle dans les chaînes...............................................................12
Deux notations sont possibles :.............................................................................................................................................12
Le signe # suivi d'une constante entière dans l'intervalle 0..255, dénote un caractère ayant la valeur ASCII
correspondante........................................................................................................................................................................12
Le symbole ^ suivi d'un caractère, dénote le caractère de contrôle correspondant.............................................................12
Exemples :.............................................................................................................................................................................12
#10.........................................................................................................................................................................................12
ASCII 10................................................................................................................................................................................12
Line Feed...............................................................................................................................................................................12
#$1B.......................................................................................................................................................................................12
ASCII 1B hex........................................................................................................................................................................12
Escape .................................................................................................................................................................................12
^G...........................................................................................................................................................................................12
Control-G...............................................................................................................................................................................12
Bell.........................................................................................................................................................................................12
Les séquences de caractères de contrôle peuvent être concaténées en chaînes, en les écrivant sans séparateur...............12
IV.5 COMMENTAIRES.......................................................................................................................12
Un commentaire peut être inséré n'importe où dans un programme où un délimiteur est autorisé. ..................................12
Les délimiteurs de commentaire sont:..................................................................................................................................12
(* et *)..................................................................................................................................................................................12
ou...........................................................................................................................................................................................12
{ et }..................................................................................................................................................................................12
Les accolades ne peuvent pas être imbriquées à l'intérieur d'autres accolades (de même pour les séquences (* *) ).
Cependant, les accolades peuvent être imbriquées à l'intérieur des parenthèses et vice-versa............................................12
IV.6 OPTIONS ET DIRECTIVES DE COMPILATION.....................................................................12
Certaines caractéristiques du compilateur de TURBO PASCAL sont contrôlées par des directives de compilation qui
seront spécifiées comme les commentaires avec une syntaxe spéciale................................................................................12
Une directive de compilation est constituée de la séquence { ou (* suivie immédiatement du signe $, suivi
immédiatement par une directive de compilation et se termine par } ou *)........................................................................12
Les options et les directives de compilation seront présentées en annexe A.
.................................................................................................................................................................................................12
V STRUCTURE DE BASE D'UN PROGRAMME PASCAL..............................................................................................13
Un programme PASCAL a la structure suivante :...............................................................................................................13
Le bloc est divisé en une partie DECLARATION dans laquelle sont définis tous les objets locaux au programme et une
partie INSTRUCTIONS qui spécifie les actions à exécuter sur ces objets..........................................................................13
V.1 EN-TETE de PROGRAMME.........................................................................................................13
Dans TURBO-PASCAL, l'en-tête est facultative. Sa syntaxe est la suivante:....................................................................13
EXEMPLES :........................................................................................................................................................................13
Program circles;.....................................................................................................................................................................13
Program accountant(Input,Output);......................................................................................................................................13
V.2 CLAUSE USES..............................................................................................................................13
La clause USES permet d'indiquer le nom de toutes les unités que le programme utilise (voir Chapitre XVI pour la
description des unités standards). La syntaxe est la suivante :.............................................................................................13
..............................................................................................................................................................................................13
L'unité SYSTEM est toujours référencée de manière implicite par le compilateur............................................................13
V.3 STRUCTURE D'UN BLOC...........................................................................................................14
La syntaxe d'un bloc est la suivante:....................................................................................................................................14
V.4 PARTIE DECLARATION.............................................................................................................15
La partie DECLARATION est divisée en cinq sections différentes:..................................................................................15
Déclaration des étiquettes.....................................................................................................................................................15
Définition des constantes......................................................................................................................................................15
Définition des types...............................................................................................................................................................15
Déclaration des variables......................................................................................................................................................15
Déclaration des procédures et des fonctions.........................................................................................................................15
Remarque : le TURBO PASCAL permet à chacune de ces sections d'apparaître plusieurs fois et dans n'importe quel
ordre alors que le PASCAL STANDARD spécifie que chaque section ne doit apparaître que zéro ou une fois dans l'ordre
ci-dessus..................................................................................................................................................................................15
V.4.1 REGLE D'ORDONNANCEMENT.............................................................................................15
Toutes les déclarations créent de nouveaux objets à partir d'objets pré-définis ou d'objets déjà créés, dans tous les cas,
un identificateur d'objet doit être déclaré avant son utilisation............................................................................................15
V.4.2 DECLARATION DES ETIQUETTES.......................................................................................15
Toute instruction dans un programme peut être précédée par une étiquette permettant ainsi un branchement direct par
l'instruction GOTO. Une étiquette est constituée par un nom d'étiquette suivi par le signe :. Le mot réservé LABEL
commence cette déclaration...................................................................................................................................................15
EXEMPLE :...........................................................................................................................................................................15
label 10, error, 999;..............................................................................................................................................................15
Remarques :...........................................................................................................................................................................15
En PASCAL STANDARD, les étiquettes sont limitées à des nombres de 1 à 4 chiffres...................................................15
L'emploi de l'instruction GOTO est contraire à l'esprit de la programmation structurée. Aussi, en règle générale, on
évite son utilisation.................................................................................................................................................................15
V.4.3 DEFINITION DES CONSTANTES...........................................................................................16
Dans la partie Déclaration des Constantes, on introduit des identificateurs comme synonymes pour des valeurs
constantes. Le mot réservé CONST commence cette déclaration. La syntaxe des constantes est la suivante :.................16
Remarque : les constantes suivantes sont pré-définies en TURBO PASCAL ...................................................................16
NOM......................................................................................................................................................................................16
TYPE ...........................................................................................................................................................................16
VALEUR...............................................................................................................................................................................16
False ........................................................................................................................................................................16
Boolean ..........................................................................................................................................................................16
False.......................................................................................................................................................................................16
True .........................................................................................................................................................................16
Boolean .......................................................................................................................................................................16
True........................................................................................................................................................................................16
MaxInt .........................................................................................................................................................................16
Integer ........................................................................................................................................................................16
32767.....................................................................................................................................................................................16
V.4.4 DEFINITION DES TYPES.........................................................................................................16
Un type de données peut être décrit directement dans la partie Déclaration des Variables ou référencé par un
identificateur de type. Le mot réservé TYPE commence la définition des types et il est suivi par une ou plusieurs
affectations séparées par des ;. Chaque affectation de type est constituée d'un identificateur de type suivi du signe = et
d'un type..................................................................................................................................................................................16
La syntaxe des types est la suivante:....................................................................................................................................16
TYPE.....................................................................................................................................................................................17
EXEMPLES :........................................................................................................................................................................17
Type......................................................................................................................................................................................17
Number = Integer;.............................................................................................................................................................17
Day = (mon,tue,wed,thu,fri,sat,sun);.................................................................................................................................17
List = Array[1..20] of real; ................................................................................................................................................17
V.4.5 DECLARATION DES VARIABLES.........................................................................................18
Chaque variable survenant dans un programme doit être déclarée avant son emploi. La déclaration doit strictement
précéder tout emploi de cette variable de façon que le compilateur reconnaisse celle-ci...................................................18
Une déclaration de variable commence par le mot réservé VAR suivi d'un ou plusieurs identificateurs séparés par des
virgules, suivi du signe : et d'un type.....................................................................................................................................18
Remarque : la portée de cet identificateur est le bloc dans lequel elle est définie, et tout bloc à l'intérieur de celui-ci. La
syntaxe des variables est la suivante :....................................................................................................................................18
Une variable peut être déclarée de manière à résider à une adresse mémoire spécifique, elle est alors désignée variable
absolue....................................................................................................................................................................................18
Remarque : la liste de déclaration d'une variable absolute ne peut concerner plus d'un identificateur..............................18
EXEMPLES :........................................................................................................................................................................18
VAR......................................................................................................................................................................................18
Resultat, Calcul, Moyenne : Real;......................................................................................................................................18
I, J, K, L : Integer;...............................................................................................................................................................18
Buffer : Array[0..127] of Byte;...........................................................................................................................................18
ModeEcran : Byte Absolute $0040:$0049;........................................................................................................................18
Chaine : String[15];.............................................................................................................................................................18
Longueur : Byte Absolute chaine;......................................................................................................................................18
{ = longueur dynamique de la chaîne }.............................................................................................................................18
DMSI/PROGRAMMATION - 161 -.....................................................................................................................................13
V.4.6 DECLARATION DES PROCEDURES ET DES FONCTIONS...............................................19
Structure de base d’un programme Pascal............................................................................................................................13
Une déclaration de procédure permet de définir une procédure à l'intérieur d'une autre procédure ou d'un programme.
Une procédure est activée par un appel de procédure, et à la fin de son exécution le programme continue avec
l'instruction suivant immédiatement l'appel de la procédure................................................................................................19
Une déclaration de fonction permet de définir une partie du programme calculant et retournant une valeur. Une fonction
est activée lorsque son identificateur est rencontré dans une expression.............................................................................19
EXEMPLES :........................................................................................................................................................................19
Déclarations..........................................................................................................................................................................19
Procedure essai1;.................................................................................................................................................................19
Begin....................................................................................................................................................................................19
............................................................................................................................................................................................19
............................................................................................................................................................................................19
End;......................................................................................................................................................................................19
Function essai2:integer;......................................................................................................................................................19
Begin....................................................................................................................................................................................19
............................................................................................................................................................................................19
............................................................................................................................................................................................19
End;......................................................................................................................................................................................19
Activations............................................................................................................................................................................19
Program essai;.....................................................................................................................................................................19
Var.......................................................................................................................................................................................19
resultat : integer;.............................................................................................................................................................19
Begin....................................................................................................................................................................................19
............................................................................................................................................................................................19
............................................................................................................................................................................................19
essai1;.................................................................................................................................................................................19
............................................................................................................................................................................................19
............................................................................................................................................................................................19
resultat := essai2;................................................................................................................................................................19
............................................................................................................................................................................................19
End.......................................................................................................................................................................................19
Remarques : La partie concernant les procédures et les fonctions sera détaillée au cours du chapitre XIV......................19
V.5 PARTIE INSTRUCTION...............................................................................................................19
La partie INSTRUCTION est la dernière partie d'un Bloc, elle spécifie les actions à exécuter par le programme. La
partie instruction prend la forme d'une séquence d'instructions suivie d'un point ou d'un point virgule............................19
Une séquence d'instructions est constituée du mot réservé Begin, suivi par une liste d'instructions séparées par des
points virgules et se termine par le mot réservé End.............................................................................................................19
VI LES EXPRESSIONS.........................................................................................................................................................20
Les expressions sont des constructions algorithmiques spécifiant les règles pour le calcul de valeurs. Elles sont
constituées d'opérandes: variables, constantes, et identificateurs de fonctions, combinés par le moyen d'opérateurs. La
syntaxe des expressions est la suivante :...............................................................................................................................20
EXPRESSION SIMPLE........................................................................................................................................................20
Les expressions......................................................................................................................................................................20
Les opérateurs sont divisés en 5 catégories, dénotées par leur ordre de préséance :..........................................................23
Le moins unaire (- avec un seul opérateur)..........................................................................................................................23
Opérateur NOT......................................................................................................................................................................23
Opérateurs multiplicatifs : *, /, DIV, MOD, AND, SHL, SHR...........................................................................................23
Opérateurs additifs : +, -, OR, XOR.....................................................................................................................................23
Opérateurs relationnels : =, <>, <, >, <=, >=, IN.................................................................................................................23
Les séquences d'opérateurs ayant la même préséance sont évaluées de gauche à droite. Les expressions entre
parenthèses sont évaluées en premier et indépendamment des opérateurs précédents et suivants......................................23
VI.1 MOINS UNAIRE..........................................................................................................................24
Le moins unaire indique la négation de son opérande qui peut être du type réel ou entier................................................24
VI.2 OPERATEUR NOT.......................................................................................................................24
L'opérateur NOT inverse la valeur logique de son opérande booléen.................................................................................24
NOT True = False...........................................................................................................................................................24
NOT false = True............................................................................................................................................................24
TURBO PASCAL permet d'utiliser l'opérateur NOT avec un opérande entier. Dans ce cas, la négation se fait bit à bit.
.................................................................................................................................................................................................24
NOT 0 = -1.........................................................................................................................................................................24
NOT -15 = 14........................................................................................................................................................................24
NOT $2345 = $DCBA...........................................................................................................................................................24
VI.3 OPERATEURS MULTIPLICATIFS............................................................................................24
Opérateur...............................................................................................................................................................................24
Opération...............................................................................................................................................................................24
Type des opérandes...............................................................................................................................................................24
Type du résultat.....................................................................................................................................................................24
*.............................................................................................................................................................................................24
Multiplication........................................................................................................................................................................24
Réel et Réel...........................................................................................................................................................................24
Entier et Entier......................................................................................................................................................................24
Réel et Entier.........................................................................................................................................................................24
Réel........................................................................................................................................................................................24
Entier......................................................................................................................................................................................24
Réel........................................................................................................................................................................................24
/..............................................................................................................................................................................................24
Division..................................................................................................................................................................................24
Réel et Réel...........................................................................................................................................................................24
Entier et Entier......................................................................................................................................................................24
Réel et Entier ........................................................................................................................................................................24
Réel........................................................................................................................................................................................24
Réel........................................................................................................................................................................................24
Réel........................................................................................................................................................................................24
DIV........................................................................................................................................................................................24
Division entière.....................................................................................................................................................................24
Entier et Entier......................................................................................................................................................................24
Entier......................................................................................................................................................................................24
MOD......................................................................................................................................................................................24
Reste......................................................................................................................................................................................24
Entier et Entier......................................................................................................................................................................24
Entier......................................................................................................................................................................................24
AND.......................................................................................................................................................................................24
Arithmétique..........................................................................................................................................................................24
Logique..................................................................................................................................................................................24
Entier et Entier......................................................................................................................................................................24
Booléen et Booléen...............................................................................................................................................................24
Entier......................................................................................................................................................................................24
Booléen..................................................................................................................................................................................24
SHL........................................................................................................................................................................................24
Décalage à gauche.................................................................................................................................................................24
Entier et Entier......................................................................................................................................................................24
Entier......................................................................................................................................................................................24
SHR........................................................................................................................................................................................24
Décalage à droite...................................................................................................................................................................24
Entier et Entier......................................................................................................................................................................24
Entier......................................................................................................................................................................................24
EXEMPLES :........................................................................................................................................................................24
12 * 34 = 408........................................................................................................................................................................24
123 / 4 = 30.75......................................................................................................................................................................24
123 DIV 4 = 30.....................................................................................................................................................................24
12 MOD 5 = 2.......................................................................................................................................................................24
True AND False = False.......................................................................................................................................................24
12 AND 22 = 4.....................................................................................................................................................................24
2 SHL 7 = 256......................................................................................................................................................................24
256 SHR 7 = 2......................................................................................................................................................................24
DMSI/PROGRAMMATION - 161 -.....................................................................................................................................20
VI.4 OPERATEURS ADDITIFS..........................................................................................................25
Opérateur...............................................................................................................................................................................25
Opération...............................................................................................................................................................................25
Type des opérandes...............................................................................................................................................................25
Type du résultat.....................................................................................................................................................................25
+.............................................................................................................................................................................................25
Addition.................................................................................................................................................................................25
Réel et Réel...........................................................................................................................................................................25
Entier et Entier......................................................................................................................................................................25
Réel et Entier.........................................................................................................................................................................25
Réel........................................................................................................................................................................................25
Entier......................................................................................................................................................................................25
Réel........................................................................................................................................................................................25
-..............................................................................................................................................................................................25
Soustraction...........................................................................................................................................................................25
Réel et Réel...........................................................................................................................................................................25
Entier et Entier......................................................................................................................................................................25
Réel et Entier ........................................................................................................................................................................25
Réel........................................................................................................................................................................................25
Entier......................................................................................................................................................................................25
Réel........................................................................................................................................................................................25
OR..........................................................................................................................................................................................25
Arithmétique..........................................................................................................................................................................25
Logique..................................................................................................................................................................................25
Entier et Entier......................................................................................................................................................................25
Booléen et Booléen...............................................................................................................................................................25
Entier......................................................................................................................................................................................25
Booléen..................................................................................................................................................................................25
XOR.......................................................................................................................................................................................25
Arithmétique..........................................................................................................................................................................25
Logique..................................................................................................................................................................................25
Entier et Entier......................................................................................................................................................................25
Booléen et Booléen...............................................................................................................................................................25
Entier......................................................................................................................................................................................25
Booléen..................................................................................................................................................................................25
EXEMPLES :........................................................................................................................................................................25
123 + 456 = 579..................................................................................................................................................................25
456 - 123.0 = 333.0..............................................................................................................................................................25
True or False = True.............................................................................................................................................................25
12 or 22 = 30........................................................................................................................................................................25
True xor False = True...........................................................................................................................................................25
12 xor 22 = 26......................................................................................................................................................................25
VI.5 OPERATEURS RELATIONNELS..............................................................................................25
Tous les opérateurs relationnels fonctionnent avec tous les types simples (Type scalaire et Type réel)...........................25
Les opérateurs = et <> sont applicables aux opérandes de type pointeur...........................................................................25
Les opérateurs =, <= et >= sont applicables aux opérandes de type ensemble...................................................................25
L'opérateur IN renvoie TRUE si la valeur de l'opérande de type scalaire est un membre de l'opérande de type ensemble.
.................................................................................................................................................................................................25
Le résultat est toujours du type Booléen..............................................................................................................................25
VI.6 IDENTIFICATEURS DE FONCTION........................................................................................25
Un identificateur de fonction est un identificateur suivi éventuellement par une liste de paramètres, consistant en une ou
plusieurs variables ou expressions séparées par des virgules, le tout entre parenthèses. ....................................................25
Si la fonction n'est pas l'une des fonctions standards pré-définies, elle doit avoir été déclarée auparavant......................25
VI.7 OPERATEURS D'ADRESSE.......................................................................................................25
TURBO PASCAL comporte deux opérateurs d'adresse : @ adresse de, ^ indirection.......................................................25
L'opérateur @ fournit l'adresse de la variable spécifiée......................................................................................................25
Si PointCar est un pointeur sur un objet de type caractère, PointCar^ désigne de manière indirecte la variable caractère
sur laquelle pointe PointCar...................................................................................................................................................25
VII LES INSTRUCTIONS FONDAMENTALES................................................................................................................26
La partie Instruction commence par le mot réservé Begin et se termine par le mot End. Les instructions peuvent être
simples ou structurées. La syntaxe des instructions est donnée à la page suivante :...........................................................26
VII.1 INSTRUCTIONS SIMPLES........................................................................................................26
Les instructions simples sont des instructions ne contenant pas d'autres instructions. Ce sont l'instruction d'affectation,
l'appel de procédure, l'instruction GOTO et l'instruction vide..............................................................................................26
VII.1.1 INSTRUCTION D'AFFECTATION........................................................................................26
Elle est utilisée pour indiquer qu'une certaine valeur doit être affectée à une certaine variable. Une affectation est
constituée de l'identificateur de variable suivi de := suivi d'une expression........................................................................26
Les affectations à des variables de tout type sont autorisées à condition que la variable ou la fonction et l'expression
soient de même type. Il existe une exception : si la variable est du type Réel, le type de l'expression peut être Entier....26
EXEMPLES :........................................................................................................................................................................26
Angle := Angle * Pi ;............................................................................................................................................................26
Acces := False ;.....................................................................................................................................................................26
Entry := Answer = Password ;..............................................................................................................................................26
SurfSphere := 4 * Pi * R * R ;..............................................................................................................................................26
VII.1.2 L'APPEL DE PROCEDURE....................................................................................................28
Les instructions fondamentales.............................................................................................................................................26
L'appel de procédure permet d'activer une procédure préalablement définie par l'utilisateur, ou une procédure Standard
pré-définie. Cette instruction est constituée de l'identificateur de procédure suivi éventuellement par une liste de
paramètres. Lorsque l'appel de procédure est rencontré en cours d'exécution d'un programme, le contrôle est transféré à
la procédure et la valeur ou l'adresse des paramètres éventuels sont transférés à cette procédure. Lorsque celle-ci se
termine, l'exécution du programme reprend avec l'instruction suivant l'appel de la procédure..........................................28
EXEMPLES :........................................................................................................................................................................28
Find(Name,Address);............................................................................................................................................................28
Sort(Address);........................................................................................................................................................................28
VII.1.3 INSTRUCTION GOTO............................................................................................................28
L'instruction GOTO est constituée du mot réservé GOTO suivi par un identificateur d'étiquette. Elle permet de
continuer l'exécution des instructions au point du programme marqué par l'étiquette........................................................28
Avant tout emploi, les étiquettes doivent être déclarées......................................................................................................28
La portée d'une étiquette est le bloc dans lequel elle est déclarée. Il n'est donc pas possible de sauter à l'intérieur ou à
l'extérieur de procédures ou de fonctions..............................................................................................................................28
VII.1.4 INSTRUCTION VIDE..............................................................................................................28
Une instruction vide est une instruction ne contenant aucun symbole et qui n'a donc aucun effet. Elle peut prendre place
chaque fois que la syntaxe de PASCAL nécessite une instruction et qu'il n'y a aucune action à exécuter.........................28
EXEMPLES :........................................................................................................................................................................28
Begin End..............................................................................................................................................................................28
While Answer <> '' do ;........................................................................................................................................................28
Repeat Until Keypressed ; { attendre qu'une touche soit frappée }....................................................................................28
VII.2 INSTRUCTIONS STRUCTUREES............................................................................................29
Les instructions structurées sont des instructions composées d'autres instructions devant être exécutées en séquences
(séquences d'instructions), ou sous certaines conditions (instructions conditionnelles), ou répétées plusieurs fois
(instructions répétitives).........................................................................................................................................................29
VII.2.1 SEQUENCES D'INSTRUCTIONS .........................................................................................29
Une séquence d'instructions est utilisée si plus d'une instruction doit être exécutée dans une situation où la syntaxe de
PASCAL n'autorise qu'une instruction. Elle est constituée par tout nombre d'instructions séparées par des points virgules
et comprises entre les mots réservés Begin et End................................................................................................................29
EXEMPLE :...........................................................................................................................................................................29
If Small > Big.......................................................................................................................................................................29
then.......................................................................................................................................................................................29
Begin....................................................................................................................................................................................29
Tamp := Small;...................................................................................................................................................................29
Small := Big;......................................................................................................................................................................29
Big := Tamp;......................................................................................................................................................................29
End;......................................................................................................................................................................................29
Remarque : le point virgule précédent le mot End est facultatif car le End est considéré comme un séparateur. Il est
toutefois recommandé de l'utiliser afin de ne pas l'oublier en cas de rajout d'instructions..................................................29
VII.2.2 INSTRUCTIONS CONDITIONNELLES................................................................................29
Une instruction conditionnelle n'exécute que l'une de ses instructions...............................................................................29
L'instruction IF indique qu'une instruction ne doit être exécutée que si une condition est vraie (expression booléenne).
Si elle est fausse aucune instruction n'est exécutée ou l'instruction suivant le mot réservé Else est exécutée...................29
Remarques :...........................................................................................................................................................................29
il ne doit pas y avoir de point virgule avant le mot Else......................................................................................................29
le Else est facultatif...............................................................................................................................................................29
Dans le cas de : IF condition1 THEN IF condition2 THEN Inst1 ELSE Inst2, le Else est rattaché au IF le plus proche. 29
EXEMPLE:............................................................................................................................................................................29
If A <> B then.......................................................................................................................................................................29
If A > B................................................................................................................................................................................29
then Writeln('A est plus grand que B')..............................................................................................................................29
else Writeln('A est plus petit que B');...............................................................................................................................29
DMSI/PROGRAMMATION - 161 -.....................................................................................................................................26
L'instruction CASE est constituée d'une expression et d'une liste d'instructions, chacune étant précédée par une étiquette
de cas de même type que le sélecteur. L'instruction exécutée est celle dont l'étiquette de cas correspond à la valeur
courante de la sélection. S'il n'y en a pas, aucune instruction n'est exécutée ou éventuellement les instructions suivant le
mot réservé Else sont exécutées.............................................................................................................................................30
Remarque : la clause Else est une extension du PASCAL STANDARD............................................................................30
Une étiquette de cas est constituée de tout nombre de constantes ou d'intervalles séparés par des virgules et terminés par
le signe :. Un intervalle est écrit par deux constantes séparées par le délimiteur d'intervalle .. . L'instruction suivant
l'étiquette de cas est exécutée si la valeur du sélecteur est égale à une des constantes ou tombe dans l'un de ces
intervalles................................................................................................................................................................................30
Les types légaux pour le sélecteur sont les types scalaires. ................................................................................................30
EXEMPLES :........................................................................................................................................................................30
Case Operator of....................................................................................................................................................................30
'+': Result := Answer + Result ;...........................................................................................................................................30
'-': Result := Answer - Result ;.............................................................................................................................................30
'*': Result := Answer * Result ;............................................................................................................................................30
End;........................................................................................................................................................................................30
Case Year of..........................................................................................................................................................................30
Min .. 1939 : Begin.............................................................................................................................................................30
Time := PreWorldWar2;....................................................................................................................................................30
Writeln('The World at peace');..........................................................................................................................................30
End;......................................................................................................................................................................................30
1946 .. Max : Begin.............................................................................................................................................................30
Time := PostWorldWar2;...................................................................................................................................................30
Writeln('Building a new world');.......................................................................................................................................30
End.......................................................................................................................................................................................30
Else Begin............................................................................................................................................................................30
Time := WorldWar2;..........................................................................................................................................................30
Writeln('We are at war');....................................................................................................................................................30
End;......................................................................................................................................................................................30
End;........................................................................................................................................................................................30
VII.2.3 INSTRUCTIONS REPETITIVES............................................................................................31
Les instructions répétitives indiquent que certaines instructions doivent être exécutées plusieurs fois. Si le nombre de
répétitions est connu à l'avance, l'instruction FOR est l'instruction appropriée sinon on utilisera les instructions WHILE
ou REPEAT............................................................................................................................................................................31
L'instruction FOR indique que le corps de l'instruction doit être exécuté plusieurs fois, tandis que la variable de contrôle
suit une progression qui peut être ascendante TO ou descendante DOWNTO, vers la valeur finale..................................31
La variable de contrôle, la valeur initiale et la valeur finale doivent être de même type (de type scalaire). ...................31
La valeur finale est déterminée une seule fois lors de l'entrée dans la construction for.....................................................31
Si la valeur initiale est plus grande que la valeur finale en utilisant TO, ou si la valeur initiale est plus petite que la
valeur finale en utilisant DOWNTO, l'instruction n'est pas exécutée..................................................................................31
EXEMPLES :........................................................................................................................................................................31
For I := 1 To 10 Do If T[I] > Max Then Max := T[I];.........................................................................................................31
For J := 1 to 50 Do.................................................................................................................................................................31
Begin......................................................................................................................................................................................31
Readln(Nombre);..................................................................................................................................................................31
If Nombre < Max .................................................................................................................................................................31
Then.....................................................................................................................................................................................31
Petit := Petit + 1.................................................................................................................................................................31
Else......................................................................................................................................................................................31
Grand := Grand + 1;...........................................................................................................................................................31
End;........................................................................................................................................................................................31
Remarque : à la fin d'une instruction For, la valeur de la variable de contrôle est indéfinie, sauf si la boucle a été
interrompue par un GOTO. ...................................................................................................................................................31
L'expression contrôlant la répétition doit être du type Booléen. L'instruction est exécutée tant que l'expression est vraie.
Si sa valeur est fausse au départ, l'instruction n'est pas exécutée.........................................................................................31
EXEMPLES :........................................................................................................................................................................31
While Nom <> 'fin' Do Readln(nom);..................................................................................................................................31
While T[i] < Max Do ...........................................................................................................................................................31
Begin......................................................................................................................................................................................31
Writeln(T[i],' est plus petit que ',max) ;..............................................................................................................................31
i := i + 1 ;..............................................................................................................................................................................31
End;........................................................................................................................................................................................31
L'expression contrôlant la répétition doit être du type Booléen. La séquence d'instructions entre les mots réservés
REPEAT et UNTIL est exécutée, jusqu'à ce que l'expression devienne vraie. Contrairement à l'instruction while,
l'instruction Repeat est toujours exécutée au moins une fois, car l'évaluation de la condition a lieu à la fin de la boucle.
.................................................................................................................................................................................................32
EXEMPLE :...........................................................................................................................................................................32
Repeat....................................................................................................................................................................................32
Write('Voulez-vous effacer ce texte O/N ');........................................................................................................................32
Rep := ReadKey;..................................................................................................................................................................32
Until UpCase(Rep) in ['O','N'];.............................................................................................................................................32
L’instruction Break provoque la sortie immédiate de la boucle for, while ou repeat englobante de plus haut niveau
d'imbrication...........................................................................................................................................................................32
Break est analogue à une instruction goto vers une étiquette située juste après la fin de la structure itérative englobante
de plus haut niveau d'imbrication..........................................................................................................................................32
Le compilateur renvoie une erreur si Break n'a pas été appelée dans une instruction for, while ou repeat.......................32
L’instruction Continue provoque le passage direct à l'itération suivante dans une boucle for, while ou repeat englobante
de plus haut niveau d'imbrication. ........................................................................................................................................32
Si Continue est appelée en dehors de toute boucle for, while ou repeat, le compilateur signale une erreur.....................32
Exemples :.............................................................................................................................................................................32
For I :=1 To MAX DO Begin..............................................................................................................................................32
If Tablo[I]=0........................................................................................................................................................................32
Then Break ; { Sortie de la boucle si le contenu du tablo = 0 }......................................................................................32
Writeln(Tablo[I]) ;..............................................................................................................................................................32
End ;......................................................................................................................................................................................32
For I :=1 To MAX DO Begin..............................................................................................................................................32
If Tablo[I]=0........................................................................................................................................................................32
Then Continue ; { On ajoute 1 au contenu du Tablo }.........................................................................................................32
Tablo[I] := Tablo[I] + 1 ; { sauf si le Tablo contient 0 }..................................................................................................32
End ; { Le tablo est parcouru en entier }.............................................................................................................................32
VIII TYPES SCALAIRES ENUMERES ET INTERVALLES............................................................................................33
Types scalaires énumérés et intervalles................................................................................................................................33
Les types de données de base du PASCAL sont les types scalaires. Un type scalaire est constitué d'un ensemble fini et
ordonné de valeurs..................................................................................................................................................................33
VIII.1 TYPE SCALAIRE ENUMERE..................................................................................................33
En plus des types scalaires standards (vus au chapitre III), PASCAL supporte les types scalaires définis par l'utilisateur,
également appelés Types scalaires énumérés. La définition d'un type énuméré comprend dans l'ordre toutes ses valeurs
possibles. Les valeurs de ce nouveau type sont représentées par des identificateurs qui doivent être des constantes du
nouveau type...........................................................................................................................................................................33
EXEMPLES :........................................................................................................................................................................33
Type.......................................................................................................................................................................................33
Operateur = (plus, moins, multiplie, divise);.......................................................................................................................33
JourSemaine = (lun, mar, mer, jeu, ven);............................................................................................................................33
Les variables du type JourSemaine peuvent prendre une des cinq valeurs définies ci-dessus...........................................33
Les opérateurs relationnels peuvent s'appliquer à tous les types scalaires tant que les deux opérandes sont du même type
(réels et entiers peuvent être mélangés). La comparaison se fait sur l'ordre dans lequel les valeurs ont été introduites
dans la définition du type. Dans l'exemple JourSemaine, la condition suivante est vraie :.................................................33
lun < mar < mer < jeu < ven.................................................................................................................................................33
Les fonctions standard suivantes peuvent être utilisées avec des arguments de type scalaire énuméré :..........................33
Succ(lun) le successeur de lun : mar.....................................................................................................................................33
Pred(mer) le prédécesseur de mer : mar...............................................................................................................................33
Ord(jeu) la valeur ordinale de jeu : 3...................................................................................................................................33
La valeur ordinale du premier élément est 0........................................................................................................................33
Le type du résultat de Succ et Pred est du même type que l'argument................................................................................33
Le type du résultat de Ord est un entier................................................................................................................................33
DMSI/PROGRAMMATION - 161 -.....................................................................................................................................33
VIII.2 TYPE INTERVALLE.................................................................................................................34
Un type de données peut être défini comme un intervalle d'un autre type scalaire déjà défini. Ces types sont appelés
Intervalle. La définition d'un intervalle donne simplement la plus petite et la plus grande valeur de l'intervalle. ............34
EXEMPLES :........................................................................................................................................................................34
Type.......................................................................................................................................................................................34
HemiSphere = (Nord, Sud, Est, Ouest);...............................................................................................................................34
Monde = Est..Ouest;.............................................................................................................................................................34
Majuscules = 'A'..'Z';............................................................................................................................................................34
Minuscules = 'a'..'z';.............................................................................................................................................................34
Le type Monde est un intervalle de type scalaire Hemisphere appelé Type scalaire associé.............................................34
Le type scalaire associé de Majuscules et de Minuscules est Char.....................................................................................34
Un type intervalle conserve toutes les propriétés du type scalaire associé et n'est restreint que dans l'échelle de ses
valeurs.....................................................................................................................................................................................34
AVANTAGES DE L'EMPLOI DES TYPES.......................................................................................................................34
Améliorer la lisibilité des programmes.................................................................................................................................34
Vérifications possibles de compatibilité entre les valeurs affectées à des variables scalaires définies ou à des variables
intervalles................................................................................................................................................................................34
Economie de place mémoire. TURBO PASCAL alloue un seul octet de mémoire pour des variables d'un type défini ou
un intervalle ayant un nombre d'éléments inférieur à 256. De même, les intervalles de type Entier dont les bornes
inférieure et supérieure sont comprises entre 0 et 255, n'occupent qu'un octet en mémoire...............................................34
VIII.3 CONVERSION DE TYPE.........................................................................................................34
La fonction Ord peut être utilisée pour convertir des types scalaires en valeur entières. Le PASCAL STANDARD ne
permet pas l'opération inverse c'est-à-dire, de convertir un Entier en une valeur scalaire..................................................34
En TURBO PASCAL, une valeur de type scalaire peut être convertie en une valeur d'un autre type scalaire ayant la
même valeur ordinale, par la possibilité Retype. Le changement de type se fait en utilisant l'identificateur du type désiré
comme un identificateur de fonction suivi par un paramètre entre parenthèses. Le paramètre peut être une valeur de tout
type scalaire............................................................................................................................................................................34
EXEMPLES:..........................................................................................................................................................................34
Avec les exemples des paragraphes précédents :................................................................................................................34
Integer(mar) = 1...................................................................................................................................................................34
Hemisphere(2) = Est.............................................................................................................................................................34
VIII.4 VERIFICATION D'ECHELLE..................................................................................................35
La directive de compilation R permet de générer le code effectuant des vérifications sur les variables scalaires et les
types intervalles. La valeur par défaut est {$R-} c'est-à-dire qu'il n'y a pas de vérification effectuée. Lorsque la directive
est active, {$R+}, une vérification est effectuée lors d'une affectation à une variable scalaire ou à un intervalle, pour
s'assurer que la valeur affectée est comprise dans l'intervalle autorisé................................................................................35
EXEMPLES:..........................................................................................................................................................................35
Type.......................................................................................................................................................................................35
Digit = 0..9;..........................................................................................................................................................................35
Var.........................................................................................................................................................................................35
Dig1, Dig2, Dig3 : Digit;....................................................................................................................................................35
Begin......................................................................................................................................................................................35
Dig1 := 5; valide...................................................................................................................................................................35
Dig2 := Dig1 + 3; valide tant que Dig1 + 3 <= ..................................................................................................................35
Dig3 := 47; erreur à la compilation.....................................................................................................................................35
CONSTANT OUT OF RANGE .........................................................................................................................................35
Dig3 := 8 ;.............................................................................................................................................................................35
{$R-} Dig3 := Dig3 + Dig3; pas d'erreur à la compilation................................................................................................35
ni à l'exécution.....................................................................................................................................................................35
{$R+} Dig3 := 8;..................................................................................................................................................................35
Dig3 := Dig3 + Dig3; pas d'erreur à la compilation...........................................................................................................35
erreur à l'exécution..............................................................................................................................................................35
RANGE CHECK ERROR..................................................................................................................................................35
End.........................................................................................................................................................................................35
Remarque : la directive R est également utilisée pour vérifier la validité des index des tableaux....................................35
IX TYPE CHAINE.................................................................................................................................................................36
En TURBO PASCAL, le type chaîne (String) est pré-défini pour le traitement des chaînes de caractères, c'est-à-dire
toute séquence de caractères. Les types chaînes sont des types structurés et ressemblent beaucoup aux types tableaux
(voir chapitre X).....................................................................................................................................................................36
IX.1 DEFINITION DU TYPE CHAINE (chaîne PASCAL)................................................................36
Une valeur de type chaîne de caractères (String) est une séquence de caractères de taille variable. Pour déclarer un type
chaîne de caractères, on spécifie la taille (attribut constant dont la valeur varie entre 1 et 255). Par défaut, l'attribut de
taille est 255............................................................................................................................................................................36
EXEMPLES :........................................................................................................................................................................36
Type.......................................................................................................................................................................................36
NomFichier = String[14];.....................................................................................................................................................36
LigneEcran = String[80];.....................................................................................................................................................36
LigneEdit = String;...............................................................................................................................................................36
Les variables chaînes occupent en mémoire la longueur maximum définie plus un octet qui contient la longueur
courante de la chaîne..............................................................................................................................................................36
IX.2 CHAINES AZT (à zéro terminal).................................................................................................36
Depuis la version TP 7.0, le Turbo PASCAL accepte les chaînes dites à Zéro Terminal (AZT). ....................................36
Une chaîne à zéro terminal est constituée ainsi:..................................................................................................................36
une séquence de caractères différents de 0 se terminant par un caractère NULL (#0) ......................................................36
une limite de longueur de 65535 caractères.........................................................................................................................36
Utilisation des chaînes AZT:.................................................................................................................................................36
Une chaîne AZT est stockée comme un tableau de caractères avec un type d'indice entier à base zéro du style suivant:
.................................................................................................................................................................................................36
array[0..X] of Char..............................................................................................................................................................36
avec X = un entier positif différent de zéro..........................................................................................................................36
Cela se nomme un tableau de caractères à base zéro...........................................................................................................36
La directive d'extension de syntaxe ($X ) doit être activée pour pouvoir utiliser l'unité Strings dans vos programmes...36
IX.3 LE TYPE PCHAR.........................................................................................................................37
Le type prédéfini PCHAR indique un pointeur sur une chaîne AZT..................................................................................37
Le type PCHAR est déclaré de la façon suivante :..............................................................................................................37
Type......................................................................................................................................................................................37
PCHAR = ^Char ; { Soit un pointeur sur un caractère }.................................................................................................37
Le type Pointeur sera étudié au cours du chapitre XVIII.....................................................................................................37
IX.4 OPERATIONS SUR LES CHAINES PASCAL...........................................................................37
Les chaînes sont manipulées par l'emploi des expressions chaînes. Les expressions chaînes sont constituées de
constantes chaînes, de variables chaînes, de noms de fonctions et d'opérateurs..................................................................37
Le signe '+' peut être utilisé pour la concaténation des chaînes. Si la longueur dépasse 255, une erreur survient à
l'exécution...............................................................................................................................................................................37
EXEMPLES :........................................................................................................................................................................37
'TURBO ' + 'PASCAL' = 'TURBO PASCAL'.....................................................................................................................37
'123' + '.' + '456' = '123.456'.................................................................................................................................................37
Les opérateurs relationnels ont une préséance inférieure à la concaténation. En comparant deux chaînes, les caractères
sont comparés un à un de la gauche vers la droite selon leur valeur ASCII. Si les chaînes sont de longueurs différentes
mais égales jusqu'au dernier caractère de la chaîne la plus courte, celle-ci est alors considérée la plus petite. Deux
chaînes sont égales si et seulement si leur contenu et leur longueur sont égaux..................................................................37
EXEMPLES :........................................................................................................................................................................37
'A' < 'B' vrai...........................................................................................................................................................................37
'A' > 'b' faux...........................................................................................................................................................................37
IX.4.1 AFFECTATION DE CHAINES................................................................................................37
L'opérateur d'affectation est utilisé pour affecter la valeur d'une expression à une variable chaîne..................................37
EXEMPLES :........................................................................................................................................................................37
Age := 'quinze';......................................................................................................................................................................37
Ligne := 'Bon anniversaire pour vos ' + age + ' ans';............................................................................................................37
Si la longueur maximum de la variable chaîne est dépassée, les caractères en trop seront éliminés.................................37
IX.4.2 PROCEDURES SUR LES CHAINES PASCAL.......................................................................38
Dans les définitions suivantes :.............................................................................................................................................38
St, Target désignent des variables chaînes...........................................................................................................................38
Obj désigne une expression chaîne.......................................................................................................................................38
Pos et Num désignent des expressions entières dans l'intervalle 1 à 255............................................................................38
Value désigne une valeur numérique....................................................................................................................................38
Les procédures standard suivantes sont définies en TURBO PASCAL:.............................................................................38
Delete Procedure Delete (Var St: String; Pos, Num : Integer);...........................................................................................38
Delete supprime dans St une sous-chaîne contenant Num caractères en commençant à Pos.............................................38
St := 'ABCDEFG';.................................................................................................................................................................38
Delete (St, 2, 4); St a pour valeur 'AFG'...............................................................................................................................38
Delete (St, 2, 10); St a pour valeur 'A'..................................................................................................................................38
Insert Procedure Insert (Obj: String; Var Target: String; Pos: Integer);..............................................................................38
Insert insère la chaîne Obj dans la chaîne Target, à la position Pos....................................................................................38
St := 'ABCDEFG';.................................................................................................................................................................38
Insert ('XX', St, 3); St a pour valeur 'ABXXCDEFG'..........................................................................................................38
Str Procedure Str (Value [:Taille[: NbDec]]; Var St: String);.............................................................................................38
Str convertit la valeur numérique de Value en une chaîne, et range le résultat dans St. Taille et Nbdec sont des
expressions de type entier......................................................................................................................................................38
I := 1234;...............................................................................................................................................................................38
Str (I, St); St a pour valeur '1234'.......................................................................................................................................38
X := 2.5E4;............................................................................................................................................................................38
Str (X, St); St a pour valeur ' 2.5000000000E+04'..............................................................................................................38
Str (X:10:0, St); St a pour valeur ' 25000'....................................................................................................................38
Val Procedure Val (St: String; Var V; Var Code: Integer);.................................................................................................39
Val convertit l'expression chaîne St en une valeur entière ou réelle, (en fonction du type de Var) et range la valeur dans
V. Les espaces au début et à la fin ne sont pas autorisés. V doit être une variable entière ou réelle et Code doit être une
variable entière. Si aucune erreur n'est détectée, Code est mis à 0, sinon Code a la valeur de la position du premier
caractère en erreur et la valeur de Var est indéfinie..............................................................................................................39
St := '234';..............................................................................................................................................................................39
Val (St, I, Code); I a pour valeur 234...................................................................................................................................39
Code a pour valeur 0 { = Conversion OK pas d’erreur }....................................................................................................39
St := '12X';.............................................................................................................................................................................39
Val (St, I, Code); I a une valeur indéfinie............................................................................................................................39
Code a pour valeur 3............................................................................................................................................................39
St := ''; { chaîne vide }..........................................................................................................................................................39
Val (St, I, Code); I a une valeur indéfinie...........................................................................................................................39
Code a pour valeur 1............................................................................................................................................................39
Remarque : si le contrôle du domaine de validité est activé ({$R+}, une valeur hors domaine provoque toujours une
erreur d'exécution...................................................................................................................................................................39
IX.4.3 FONCTIONS SUR LES CHAINES PASCAL..........................................................................39
Les fonctions standard suivantes sont définies en TURBO PASCAL :...............................................................................39
Copy Function Copy (St: String; Pos, Num: Integer) : String ;...........................................................................................39
Copy retourne une sous-chaîne contenant Num caractères en commençant à la position Pos...........................................39
St := 'ABCDEFG';.................................................................................................................................................................39
St1 := Copy (St, 3, 2); St1 a pour valeur 'CD'......................................................................................................................39
St2 := Copy (St, 4, 10); St2 a pour valeur 'DEFG'...............................................................................................................39
Concat Function Concat (St1 [, St2, ... StN] : String) : String ;...........................................................................................39
Concat retourne une chaîne qui est la concaténation de ses arguments dans l'ordre où ils sont déclarés. La liste des
arguments peut contenir tout nombre d'expressions chaînes séparées par des virgules. Comme vu au paragraphe IX-2,
l'opérateur + peut être utilisé pour obtenir le même résultat................................................................................................39
St1 := 'TURBO ';...................................................................................................................................................................39
St2 := 'est le plus rapide';......................................................................................................................................................39
St3 := Concat (St1,'PASCAL ',St2);.....................................................................................................................................39
St3 a pour valeur 'TURBO PASCAL est le plus rapide'......................................................................................................39
Length Function Length (St: String) : Integer ;....................................................................................................................40
Length retourne la longueur d'une expression chaîne St, c'est-à-dire le nombre de caractères dans St. ...........................40
St := 'BONJOUR';.................................................................................................................................................................40
I := Length (St); I a pour valeur 7.........................................................................................................................................40
Pos Function Pos (Obj, Target: String) : Byte ;....................................................................................................................40
Pos recherche dans Target la première occurrence de Obj. Le résultat est un entier sur un octet donnant la position dans
Target du premier caractère de Obj. Si Obj n'est pas trouvé, Pos retourne 0.......................................................................40
St := 'ABCDEFG';.................................................................................................................................................................40
I := Pos ('DE', St); I a pour valeur 4......................................................................................................................................40
I := Pos ('H', St); I a pour valeur 0........................................................................................................................................40
IX.5 OPERATIONS SUR LES CHAINES AZT - L'UNITE STRINGS..............................................40
Pour utiliser les fonctions de gestion des chaînes AZT, il est nécessaire d’indiquer dans la clause USES l’unité Strings
de la façon suivante :..............................................................................................................................................................40
Uses Strings ;........................................................................................................................................................................40
Cette unité Strings assure le support de la classe de chaînes de caractères dites chaînes AZT (à zéro terminal ou encore
null-terminated strings)..........................................................................................................................................................40
Grâce à l'extension de syntaxe de Turbo Pascal et à cette unité Strings, un programme peut manipuler des chaînes dans
le style du C............................................................................................................................................................................40
C'est le format de chaîne requis par l'interface de développement API de Windows (Application Programming
Interface).................................................................................................................................................................................40
IX.5.1 FONCTIONS DE L'UNITÉ STRINGS:....................................................................................40
Les identificateurs de ces fonctions commencent par str (comme en langage C)...............................................................40
StrCat Function StrCat(Dest, Source : PChar) : PChar ;......................................................................................................40
Concatène une copie d'une chaîne au bout d'une autre et renvoie un pointeur sur la chaîne concaténée..........................40
StrComp Function StrComp(Str1, Str2 : PChar) : Integer ;.................................................................................................40
Compare deux chaînes Str1 et Str2 et renvoie .....................................................................................................................40
une valeur inférieure à 0 si Str1 < Str2.................................................................................................................................40
0 si Str1 = Str2.......................................................................................................................................................................40
une valeur supérieure à 0 si Str1 > Str2................................................................................................................................40
StrCopy Function StrCopy(Dest, Source : PChar) : PChar ;...............................................................................................41
Copie la chaîne Source dans Dest et renvoie Dest. Elle ne fait aucun test de dépassement de longueur..........................41
StrDispose Function StrDispose(Str : PChar) ;....................................................................................................................41
Restitue au système l’espace mémoire occupé par une chaîne et réservé au préalable par StrNew. Si Str vaut NIL,
StrDispose n’a aucun effet. Ne renvoie rien..........................................................................................................................41
StrECopy Function StrECopy (Dest, Source : PChar) : PChar ; .........................................................................................41
Copie la chaîne Source dans Dest puis renvoie StrEnd(Dest) (=pointeur sur la fin du résultat)........................................41
StrEnd Function StrEnd(Str : Pchar) : PChar ; ....................................................................................................................41
Renvoie un pointeur sur le caractère nul qui marque la fin d'une chaîne............................................................................41
StrIComp Function StrIcomp(Str1, Str2 : Pchar) : Integer ;................................................................................................41
Compare deux chaînes (sans diff MAJ/min). La valeur renvoyée est identique à celle renvoyée par la fonction
StrComp..................................................................................................................................................................................41
StrLCat Function StrLCat(Dest, Source : PChar ; lngMax : Word) :PChar ;......................................................................41
Ajoute une chaîne Source à la fin d’une chaîne Dest et renvoie un pointeur sur la chaîne concaténée resultante. .........41
StrLComp Function StrLComp(Str1, Str2 : PChar ; lngMax : Word) :PChar ;..................................................................41
Compare deux chaînes, sur une longueur spécifiée lngMax. La valeur renvoyée est identique à celle renvoyée par la
fonction StrComp...................................................................................................................................................................41
StrLCopy Function StrLCopy(Dest, Source : PChar ; lngMax : Word) :PChar ;.............................................................41
Copie un nombre de caractères spécifié d'une chaîne Source dans une chaîne Dest..........................................................41
StrLen Function StrLen(Str : PChar) : Word........................................................................................................................41
Renvoie le nombre de caractères de la chaîne Str. ..............................................................................................................41
StrLIComp Function StrLIComp(Str1, Str2 : PChar ; lngMax : Word) :PChar ;................................................................41
Compare deux chaînes, sur une longueur spécifiée lngMax sans différencier les majuscules des minuscules. La valeur
renvoyée est identique à celle renvoyée par la fonction StrComp........................................................................................41
StrLower Function StrLower(Str : PCHar) : PChar ;...........................................................................................................42
Type chaine...........................................................................................................................................................................36
Convertit une chaîne en minuscules.....................................................................................................................................42
StrMove Function StrMove(Dest, Source : PChar ; Cpt : Word) : PChar ;.........................................................................42
Copie Cpt caractères d'une chaîne Source dans une chaîne Dest........................................................................................42
StrNew Function StrNew(Str : PChar) : PChar ;..................................................................................................................42
Alloue l’espace mémoire nécessaire pour une chaîne dans la zone du tas (heap). StrNew crée une copie de Str et
demande de l’espace en appelant GetMem, puis renvoie un pointeur sur la copie. L’espace réservé a une longueur de
StrLen(Str) + 1 octets.............................................................................................................................................................42
StrPas Function StrPas(Str : PChar) : String ;......................................................................................................................42
Convertit une chaîne AZT (style C) en chaîne Pascal.........................................................................................................42
StrPCopy Function StrPCopy(Dest : PChar ; Source : String) : PChar ;............................................................................42
Copie une chaîne Pascal Source vers une chaîne AZT Dest et renvoie Dest......................................................................42
StrPos Function StrPos(Str1, Str2 : PChar) : PChar ;...........................................................................................................42
Renvoie un pointeur sur la 1ère occurrence d'une sous-chaîne à l’intérieur d’une chaîne.................................................42
StrRScan Function StrRScan(Str : PChar ; Car : Char) : PChar;.........................................................................................42
Renvoie un pointeur sur la dernière occurrence du caractère Car dans la chaîne Str.........................................................42
Si le caractère n’est pas trouvé, renvoie NIL.......................................................................................................................42
StrScan Function StrScan(Str : PChar ; Car : Char) : PChar;..............................................................................................42
Renvoie un pointeur sur la 1ère occurrence d'un caractère dans une chaîne......................................................................42
Si le caractère n’est pas trouvé, renvoie NIL.......................................................................................................................42
StrUpper Function StrUpper(Str : PCHar) : PChar ;............................................................................................................42
Convertit une chaîne en majuscules.....................................................................................................................................42
DMSI/PROGRAMMATION - 161 -.....................................................................................................................................36
IX.6 CHAINES ET CARACTERES.....................................................................................................43
Les types chaînes et le type scalaire Char sont compatibles. Chaque fois qu'une valeur chaîne est attendue une valeur
caractère peut être spécifiée et vice-versa.............................................................................................................................43
Lorsqu'un caractère est assigné à une chaîne, la longueur de celle-ci doit être 1 sinon il y aura erreur à l'exécution......43
Les caractères d'une variable chaîne peuvent être atteints individuellement par indexation.............................................43
Le premier caractère d'une chaîne (à la position 0) contient la longueur de la chaîne et Length (Chaine) est identique à
Ord (Chaine[0])......................................................................................................................................................................43
X TYPE TABLEAU...............................................................................................................................................................44
Un tableau est un type structuré constitué d'un nombre fixe de composants qui sont tous du même type appelé le type du
composant ou le type de base. Chaque composant peut être atteint individuellement par un index dans le tableau. Les
index sont des expressions de tout type scalaire....................................................................................................................44
X.1 DEFINITION DES TABLEAUX...................................................................................................44
EXEMPLES :........................................................................................................................................................................44
Type.......................................................................................................................................................................................44
Jour = (Lun, Mar, Mer, Jeu, Ven, Sam, Dim);....................................................................................................................44
Var.........................................................................................................................................................................................44
HeuresTravail : Array[1..8] of Integer;................................................................................................................................44
Semaine : Array[1..7] of Jour;.............................................................................................................................................44
Type.......................................................................................................................................................................................44
Joueurs = (Joueur1, Joueur2, Joueur3, Joueur4);.................................................................................................................44
Main = (Paire, DoublePaire, Brelan, Quinte, Couleur, Full, Carre, Quinte_Flush,...........................................................44
Poker);.................................................................................................................................................................................44
Legales = 1..500;..................................................................................................................................................................44
Encheres = Array[Joueurs] of Legales;...............................................................................................................................44
Var.........................................................................................................................................................................................44
Joueur : Array[Joueurs] of Main;.........................................................................................................................................44
Pot : Encheres;......................................................................................................................................................................44
On accède à un composant du tableau en ajoutant un index entre crochets, à l'identificateur de la variable tableau.......44
Joueur[Joueur3] := Full;......................................................................................................................................................44
Pot[Joueur3] := 100;............................................................................................................................................................44
Une affectation étant permise entre deux variables de type identique, des tableaux entiers peuvent être recopiés avec
une seule instruction d'affectation..........................................................................................................................................44
DMSI/PROGRAMMATION - 161 -.....................................................................................................................................44
X.2 TABLEAUX MULTIDIMENSIONNELS.....................................................................................45
Type tableau..........................................................................................................................................................................44
Le type de composants d'un tableau peut être de tout type y compris un autre tableau. Cette structure est appelée un
tableau multidimensionnel.....................................................................................................................................................45
EXEMPLE :...........................................................................................................................................................................45
Type.......................................................................................................................................................................................45
Carte = (Deux,Trois,Quatre,Cinq,Six,Sept,Huit,Neuf,Dix,Valet,Dame,Roi,As);...............................................................45
Couleur = (Pique, Coeur, Carreau, Trefle);..........................................................................................................................45
Cartes = Array[Couleur] of Array[1..13] of Carte;..............................................................................................................45
Var.........................................................................................................................................................................................45
C : Cartes;..............................................................................................................................................................................45
Col : Couleur;.......................................................................................................................................................................45
Begin......................................................................................................................................................................................45
C[Col][5] := Valet;................................................................................................................................................................45
...............................................................................................................................................................................................45
End.........................................................................................................................................................................................45
Un tableau multidimensionnel est défini plus simplement en spécifiant des index multiples............................................45
Type.......................................................................................................................................................................................45
Cartes = Array[Couleur,1..13] of Carte;...............................................................................................................................45
Var.........................................................................................................................................................................................45
C : Cartes;..............................................................................................................................................................................45
Col : Couleur;.......................................................................................................................................................................45
Begin......................................................................................................................................................................................45
C[Col,5] := Valet;..................................................................................................................................................................45
...............................................................................................................................................................................................45
Une abréviation similaire peut être utilisée pour choisir le composant du tableau.............................................................45
X.3 TABLEAUX DE CARACTERES..................................................................................................45
Les tableaux de caractères sont des tableaux à une dimension dont les composants sont du type scalaire Char. Les
tableaux de caractères sont identiques à des chaînes ayant une longueur constante............................................................45
X.4 TABLEAUX PRE-DEFINIS..........................................................................................................45
TURBO PASCAL a cinq tableaux pré-définis :...................................................................................................................45
Mem, MemW et MemL sont utilisés pour adresser directement la mémoire. Les éléments de Mem sont des octets, ceux
de MemW sont des mots et ceux de MemL sont des entiers longs. ....................................................................................45
Port et PortW sont des tableaux unidimensionnels où chaque élément représente un port de données du processeur
8Ox86 dont l'adresse est fournie par l'indice de type word. Les éléments de Port sont des octets et ceux de PortW sont
des mots. ................................................................................................................................................................................45
XI TYPE ENREGISTREMENT............................................................................................................................................46
Un enregistrement ou record est une structure constituée d'un nombre fixe de composants appelés champs. Les champs
peuvent être de différents types et chaque champ a un nom qui est l'identificateur de champ et qui est utilisé pour le
sélectionner.............................................................................................................................................................................46
..............................................................................................................................................................................................46
XI.1 DEFINITION D'UN ENREGISTREMENT.................................................................................46
La définition d'un enregistrement est constituée du mot réservé Record suivi d'une liste de champs et terminé par le mot
réservé end. La syntaxe d'un enregistrement est la suivante :...............................................................................................46
DMSI/PROGRAMMATION - 161 -.....................................................................................................................................46
EXEMPLES :.......................................................................................................................................................................47
Type.......................................................................................................................................................................................47
JourDuMois = 1..31;.............................................................................................................................................................47
Date = Record.......................................................................................................................................................................47
Jour : JourDuMois;............................................................................................................................................................47
Mois : (Jan,Fev,Mar,Avr,Mai,Juin,Juil,Aou,Sep,Oct,Nov,Dec);.....................................................................................47
Annee : 1900..1999;...........................................................................................................................................................47
End;.......................................................................................................................................................................................47
Var.........................................................................................................................................................................................47
Anniversaire : Date;.............................................................................................................................................................47
Jour, Mois et Annee sont les identificateurs de champ. Un champ est référencé par l'identificateur de la variable et
l'identificateur de champ séparé par un point........................................................................................................................47
EXEMPLES :........................................................................................................................................................................48
Anniversaire.Mois := Juin;...................................................................................................................................................48
Anniversaire.Annee := 1953;...............................................................................................................................................48
Comme pour les tableaux, les affectations sont autorisées entre deux enregistrements de même type. Les composants
d'un enregistrement peuvent être de tout type. Une construction constituée d'enregistrement d'enregistrement
([d'enregistrement ...]) est possible........................................................................................................................................48
XI.2 INSTRUCTION WITH.................................................................................................................48
L'emploi d'enregistrements donne quelquefois des instructions assez complexes (notamment dans le cas
d'enregistrements d'enregistrements).....................................................................................................................................48
La syntaxe de l'instruction WITH est la suivante :..............................................................................................................48
Dans l'exemple précédent, à chaque fois que l'on souhaite accéder à un composant du RECORD, il faut écrire
Anniversaire suivi d'un point et de l'identificateur du champ...............................................................................................48
Avec l'instruction WITH on peut écrire :.............................................................................................................................48
WITH Anniversaire DO........................................................................................................................................................48
Begin.....................................................................................................................................................................................48
Jour := 17;............................................................................................................................................................................48
Mois := Juin;........................................................................................................................................................................48
Annee := 1953;....................................................................................................................................................................48
End;.......................................................................................................................................................................................48
Les enregistrements peuvent être imbriqués à l'intérieur des instructions WITH, c'est-à-dire que des enregistrements
d'enregistrements peuvent être ouverts..................................................................................................................................48
EXEMPLES :........................................................................................................................................................................49
Type.......................................................................................................................................................................................49
Nom = RECORD.................................................................................................................................................................49
Famille : String[30];...........................................................................................................................................................49
Prenom : Array[1..3] of String[10];...................................................................................................................................49
END;....................................................................................................................................................................................49
Temps = RECORD..............................................................................................................................................................49
HeuresNormales,HeuresSupp,...........................................................................................................................................49
HeuresNuit,WeekEnd : Integer;.........................................................................................................................................49
END;....................................................................................................................................................................................49
Date = RECORD.................................................................................................................................................................49
Jour : JourDuMois;.............................................................................................................................................................49
Mois :(Jan,Fev,Mar,Avr,Mai,Juin, Juil,Aou,Sep,Oct,Nov,Dec);......................................................................................49
Annee : 1900..1999;...........................................................................................................................................................49
END;....................................................................................................................................................................................49
Personne = RECORD..........................................................................................................................................................49
Id : Nom;.............................................................................................................................................................................49
Time : Date;........................................................................................................................................................................49
END;....................................................................................................................................................................................49
Gages = RECORD...............................................................................................................................................................49
Individuel : Personne;........................................................................................................................................................49
Cout : Temps;.....................................................................................................................................................................49
END;....................................................................................................................................................................................49
Var.........................................................................................................................................................................................49
Salaire : Gages;.....................................................................................................................................................................49
Begin......................................................................................................................................................................................49
..............................................................................................................................................................................................49
WITH Salaire, Individuel, Id DO........................................................................................................................................49
Begin.....................................................................................................................................................................................49
Famille := 'DUPONT';........................................................................................................................................................49
Prenom[1] := 'Jules';...........................................................................................................................................................49
End;.......................................................................................................................................................................................49
Ce qui est équivalent à .........................................................................................................................................................49
WITH Salaire DO.................................................................................................................................................................49
WITH Individuel DO..........................................................................................................................................................49
WITH Id DO.....................................................................................................................................................................49
Begin.................................................................................................................................................................................49
Famille := 'DUPONT';....................................................................................................................................................49
Prenom[1] := 'Jules';........................................................................................................................................................49
End;...................................................................................................................................................................................49
XI.3 ENREGISTREMENTS AVEC VARIANTES..............................................................................50
La syntaxe du type enregistrement permet également d'avoir une partie variable, c'est-à-dire une partie dont les champs
sont de types et en nombre différents, dépendant généralement de la valeur du champ discriminant................................50
Une partie variable consiste en un champ discriminant d'un type préalablement défini, dont les valeurs déterminent les
variantes, suivi par des étiquettes correspondant à chaque valeur possible du champ discriminant...................................50
Chaque étiquette précède une liste de champs définissant le type des variantes correspondant à l'étiquette....................50
EXEMPLE :...........................................................................................................................................................................50
Type.......................................................................................................................................................................................50
Forme = (Triangle,Rectangle,Cercle);.................................................................................................................................50
Objet = RECORD................................................................................................................................................................50
X,Y: Integer;.......................................................................................................................................................................50
Surface : Real;....................................................................................................................................................................50
CASE Contour : Forme OF................................................................................................................................................50
Triangle : (Cote : Integer;.................................................................................................................................................50
Angle1,Angle2,Angle3 : 1..180);......................................................................................................................................50
Rectangle : (Cote1,Cote2 : Integer);.................................................................................................................................50
Cercle : (Diametre : Integer).............................................................................................................................................50
END;...................................................................................................................................................................................50
END;....................................................................................................................................................................................50
Var.........................................................................................................................................................................................50
Figure : Objet;......................................................................................................................................................................50
L'accès aux différentes parties du champ variant se fait comme pour un champ fixe........................................................50
IF Figure.Contour = Triangle................................................................................................................................................50
THEN....................................................................................................................................................................................50
Begin....................................................................................................................................................................................50
Figure.Cote := 5;................................................................................................................................................................50
Figure.Angle1 := 45;..........................................................................................................................................................50
............................................................................................................................................................................................50
End;......................................................................................................................................................................................50
La partie fixe d'un enregistrement doit toujours précéder la partie variante.......................................................................50
La mise à jour du sélecteur de champ est de la responsabilité du programmeur................................................................50
EXEMPLE :...........................................................................................................................................................................50
Donner une structure de données décrivant un laboratoire comprenant 100 employés selon les informations suivantes:50
son identité (nom, prénom)...................................................................................................................................................50
son adresse.............................................................................................................................................................................50
sa situation familiale.............................................................................................................................................................50
son grade................................................................................................................................................................................50
son indice...............................................................................................................................................................................50
sa position dans le laboratoire (cadre ou non)......................................................................................................................50
Program Employe;.................................................................................................................................................................51
Const......................................................................................................................................................................................51
Maxmot = 15 ;......................................................................................................................................................................51
Maxsigle = 6 ;.......................................................................................................................................................................51
Maxenfant = 12 ;..................................................................................................................................................................51
Maxindividu = 100 ;.............................................................................................................................................................51
Maxcode = 5 ;.......................................................................................................................................................................51
Type.......................................................................................................................................................................................51
Mot = String [maxmot];......................................................................................................................................................51
Sigle = String [maxsigle];...................................................................................................................................................51
Code = String [maxcode];...................................................................................................................................................51
Situation = (Celibataire, Marie, Divorce, Veuf);...............................................................................................................51
Adresse = RECORD............................................................................................................................................................51
Numerorue : Integer;.........................................................................................................................................................51
Codepostal : Code;............................................................................................................................................................51
Nomrue, Ville : Mot;.........................................................................................................................................................51
END;...................................................................................................................................................................................51
Identite = RECORD............................................................................................................................................................51
Nom,Prenom : Mot;............................................................................................................................................................51
Age : Integer;......................................................................................................................................................................51
Sexe : (Masculin, Feminin);...............................................................................................................................................51
END;....................................................................................................................................................................................51
Famil = RECORD...............................................................................................................................................................51
CASE Situ : Situation OF..................................................................................................................................................51
Celibataire : ();..................................................................................................................................................................51
Marie : (Nbenfant : Integer;..............................................................................................................................................51
Enfant : Array [1..Maxenfant] Of Identite; ....................................................................................................................51
Conjoint : Identite);..........................................................................................................................................................51
Divorce,.............................................................................................................................................................................51
Veuf : (Nbenfant : Integer;...............................................................................................................................................51
Enfant : Array [1..Maxenfant] Of Identite) ....................................................................................................................51
END;...................................................................................................................................................................................51
END;....................................................................................................................................................................................51
Individu = RECORD...........................................................................................................................................................51
Identit : Identite;.................................................................................................................................................................51
Adres : Adresse;.................................................................................................................................................................51
Grade : Sigle;......................................................................................................................................................................51
Indice : Integer;..................................................................................................................................................................51
Posit : (Cadre, PasCadre);..................................................................................................................................................51
Famille : Famil (* champ variant donc dernier champ *).................................................................................................51
END;....................................................................................................................................................................................51
Var.........................................................................................................................................................................................51
Laboratoire : Array [1..MaxIndividu] of Individu;.............................................................................................................51
Cette structure de données s'adapte à chaque employé suivant sa situation familiale........................................................51
Soit Laboratoire[1], un individu marié ayant 3 enfants :.....................................................................................................52
Type enregistrement..............................................................................................................................................................46
-Laboratoire[1].Famille.Situ = Marie..................................................................................................................................52
On accède à ses différents champs :.....................................................................................................................................52
WITH Laboratoire[1] DO.....................................................................................................................................................52
Begin......................................................................................................................................................................................52
WITH Identit DO.................................................................................................................................................................52
Begin....................................................................................................................................................................................52
Nom := 'DUPONT';............................................................................................................................................................52
Prenom := 'Jules';...............................................................................................................................................................52
Age := 30;...........................................................................................................................................................................52
Sexe := Masculin;...............................................................................................................................................................52
End;......................................................................................................................................................................................52
WITH Adres DO..................................................................................................................................................................52
Begin....................................................................................................................................................................................52
Numerorue := 34;...............................................................................................................................................................52
Nomrue := 'SIAM';.............................................................................................................................................................52
Codepostal := '29200';........................................................................................................................................................52
Ville := 'BREST';...............................................................................................................................................................52
End;......................................................................................................................................................................................52
WITH Famille DO................................................................................................................................................................52
Begin....................................................................................................................................................................................52
WITH Conjoint DO............................................................................................................................................................52
Begin..................................................................................................................................................................................52
Nom := 'DUPONT';..........................................................................................................................................................52
Prenom := 'Chantal';.........................................................................................................................................................52
Age := 28;.........................................................................................................................................................................52
Sexe := Feminin;..............................................................................................................................................................52
End;....................................................................................................................................................................................52
Nbenfant := 3;.....................................................................................................................................................................52
WITH Enfant[1] DO..........................................................................................................................................................52
Begin..................................................................................................................................................................................52
Nom := 'DUPONT';..........................................................................................................................................................52
Prenom := 'Herve';............................................................................................................................................................52
Age := 3;...........................................................................................................................................................................52
Sexe := Masculin;.............................................................................................................................................................52
End;....................................................................................................................................................................................52
etc .......................................................................................................................................................................................52
XII TYPE ENSEMBLE.........................................................................................................................................................53
Type ensemble.......................................................................................................................................................................53
Un ensemble est une collection d'objets de même nature. Chaque objet dans un ensemble est appelé un membre ou un
élément de l'ensemble. Deux ensembles sont égaux si et seulement si leurs éléments sont les mêmes. Il n'y a pas de
notion d'ordre et les ensembles [1,3,5], [5,3,1] et [3,5,1] sont tous égaux. Si les membres d'un ensemble sont également
les membres d'un autre ensemble, alors le premier est dit inclus dans le second................................................................53
XII.1 DEFINITION DE TYPE ENSEMBLE........................................................................................53
Les membres d'un ensemble doivent tous être du même type appelé le type de base et le type de base doit être un type
scalaire. Le type ensemble est défini par le mot réservé SET OF suivi d'un type simple...................................................53
EXEMPLES:..........................................................................................................................................................................53
Type......................................................................................................................................................................................53
JourduMois = SET OF 0..31;............................................................................................................................................53
JourSemaine = (Lun,Mar,Mer,Jeu,Ven,Sam,Dim);..........................................................................................................53
JourTravail = SET OF Lun..Ven;......................................................................................................................................53
Lettre = SET OF 'A'..'Z';...................................................................................................................................................53
Dans TURBO PASCAL, le nombre maximum d'éléments d'un ensemble est 256 et les valeurs ordinales de type de base
doivent être comprises entre 0 et 255....................................................................................................................................53
XII.2 EXPRESSIONS ENSEMBLE.....................................................................................................53
Les valeurs de type ensemble peuvent être calculées à partir d'autres valeurs de type ensemble grâce à des expressions
ensemble qui sont constituées de constantes ensemble, de variables ensemble, de constructions d'ensembles et
d'opérateurs sur les ensembles...............................................................................................................................................53
XII.3 CONSTRUCTEURS D'ENSEMBLES........................................................................................53
Un constructeur d'ensemble est constitué d'une ou plusieurs spécifications d'éléments séparées par des virgules et entre
crochets...................................................................................................................................................................................53
Une spécification d'éléments est une expression du même type que le type de base de l'ensemble ou un intervalle
exprimé par deux expressions séparées par deux points.......................................................................................................53
EXEMPLES :........................................................................................................................................................................53
['T','U','R','B','O']..................................................................................................................................................................53
[X,Y].....................................................................................................................................................................................53
['A'..'Z','a'..'z','0'..'9'].............................................................................................................................................................53
[]............................................................................................................................................................................................53
Le dernier exemple montre l'ensemble vide qui n'a pas de type de base et qui est donc compatible avec tous les types
ensemble.................................................................................................................................................................................53
L'ensemble [1..5] est équivalent à [1,2,3,4,5]......................................................................................................................53
Si X > Y, alors [X..Y] dénote l'ensemble vide.....................................................................................................................53
DMSI/PROGRAMMATION - 161 -.....................................................................................................................................53
XII.4 OPERATEURS SUR LES ENSEMBLES...................................................................................54
Les opérateurs sur les ensembles sont dans l'ordre de préséance :......................................................................................54
1-............................................................................................................................................................................................54
*.............................................................................................................................................................................................54
intersection d’ensembles.......................................................................................................................................................54
2-............................................................................................................................................................................................54
+.............................................................................................................................................................................................54
union d’ensembles.................................................................................................................................................................54
-..............................................................................................................................................................................................54
différence d’ensembles..........................................................................................................................................................54
3-............................................................................................................................................................................................54
=.............................................................................................................................................................................................54
test d’égalité..........................................................................................................................................................................54
<>...........................................................................................................................................................................................54
test d’inégalité.......................................................................................................................................................................54
>=...........................................................................................................................................................................................54
vrai si tous les éléments du second opérande sont inclus dans le premier..........................................................................54
<=...........................................................................................................................................................................................54
vrai si tous les éléments du premier opérande sont inclus dans le second..........................................................................54
IN...........................................................................................................................................................................................54
test d'appartenance. Le deuxième opérande est un type d'ensemble et le premier opérande est une expression du même
type que le type de base de l'ensemble. Le résultat est vrai si le premier opérande est un membre du second..................54
XII.5 AFFECTATIONS D'ENSEMBLE...............................................................................................54
Les valeurs résultant des expressions d'ensemble peuvent être affectées à des variables de type ensemble compatible par
l'opérateur :=...........................................................................................................................................................................54
EXEMPLES :........................................................................................................................................................................54
Type.......................................................................................................................................................................................54
Chiffres = Set of 0..9;...........................................................................................................................................................54
Var.........................................................................................................................................................................................54
A,B,C : Chiffres;..................................................................................................................................................................54
Begin......................................................................................................................................................................................54
A := [1,3,5,7];.......................................................................................................................................................................54
B := [2,3,4];..........................................................................................................................................................................54
C := A + B; C vaut [1,2,3,4,5,7]..........................................................................................................................................54
C := A * B; C vaut [3]..........................................................................................................................................................54
C := A - B; C vaut [1,5,7]....................................................................................................................................................54
Type.......................................................................................................................................................................................54
ASCII = Set of 0..127;..........................................................................................................................................................54
Var.........................................................................................................................................................................................54
NonImprimables,Imprimables,TousCaracteres : ASCII;....................................................................................................54
Begin......................................................................................................................................................................................54
TousCaracteres := [0..127];..................................................................................................................................................54
NonImprimables := [0..31,127];..........................................................................................................................................54
Imprimables := TousCaracteres - NonImprimables;...........................................................................................................54
End.........................................................................................................................................................................................54
XIII CONSTANTES AVEC TYPE.......................................................................................................................................55
Les constantes avec type sont une spécialité de TURBO PASCAL. Une constante avec type peut être utilisée
exactement comme une variable du même type. .................................................................................................................55
Les constantes avec type s'utilisent donc comme des variables initialisées, car la valeur d'une constante typée est définie
alors que la valeur d'une variable est indéfinie jusqu'à ce qu'une affectation soit faite. ....................................................55
L'emploi d'une constante avec type permet d'économiser du code car la constante typée n'est incluse dans le programme
qu'une seule fois alors qu'une constante sans type est incluse chaque fois qu'elle est utilisée. ..........................................55
Les constantes typées ne sont initialisées qu'une seule fois lors du démarrage du programme..........................................55
Les constantes avec type sont définies comme les constantes sans type. La définition spécifie non seulement la valeur
mais aussi le type de cette constante.....................................................................................................................................55
XIII.1 CONSTANTES DE TYPE SIMPLE..........................................................................................55
Une constante typée de type simple est une constante définie avec l'un des types scalaires..............................................55
Const.....................................................................................................................................................................................55
Nombre : Integer = 1234;...................................................................................................................................................55
Interet : Real = 10.5;...........................................................................................................................................................55
EnTete : String[7] = 'SECTION';.......................................................................................................................................55
Xon : Char = ^Q;.................................................................................................................................................................55
Une constante avec type peut être utilisée à la place d'une variable comme paramètre pour une procédure ou une
fonction. Une constante avec type est en fait une variable avec une valeur constante. Elle ne peut pas être utilisée dans
la définition d'autres constantes ou types..............................................................................................................................55
DMSI/PROGRAMMATION - 161 -.....................................................................................................................................55
XIII.2 CONSTANTES AVEC TYPE STRUCTUREES......................................................................56
Constantes avec type.............................................................................................................................................................55
Les constantes structurées sont les constantes tableaux, les constantes enregistrements et les constantes ensembles. Leur
emploi permet d'initialiser facilement des tableaux et des ensembles.................................................................................56
XIII.2.1 CONSTANTES TABLEAUX.................................................................................................56
La définition d'une constante tableau est constituée de l'identificateur de la constante, suivi du signe = et de la constante
exprimée par un ensemble de constantes séparées par des virgules et entre parenthèses. Les constantes tableaux de
caractères peuvent être spécifiées soit par des caractères soit par des chaînes. La définition :...........................................56
Const......................................................................................................................................................................................56
Chiffres : Array [0..9] of char = ('0','1','2','3','4','5','6','7','8','9');........................................................................................56
peut s'écrire............................................................................................................................................................................56
Const......................................................................................................................................................................................56
Chiffres : Array [0..9] of char = '0123456789';...................................................................................................................56
XIII.2.2 CONSTANTES TABLEAUX MULTI-DIMENSIONNELS.................................................56
Les constantes tableaux multi-dimensionnels sont définies en entourant les constantes de chaque dimension entre
parenthèses, séparées par des virgules...................................................................................................................................56
EXEMPLE :...........................................................................................................................................................................56
Type.......................................................................................................................................................................................56
Cube = Array[0..1,0..1,0..1] of Integer;...............................................................................................................................56
Const......................................................................................................................................................................................56
GrandCube : Cube =(((0,1),(2,3)),((4,5),(6,7)));.................................................................................................................56
GrandCube [0,0,0] a pour valeur 0.....................................................................................................................................56
GrandCube [1,0,0] a pour valeur 4.....................................................................................................................................56
GrandCube [1,1,1] a pour valeur 7.....................................................................................................................................56
XIII.2.3 CONSTANTES ENREGISTREMENTS................................................................................57
Une constante enregistrement est définie par l'identificateur de constante, suivi du signe : et de l'identificateur d'un type
enregistrement préalablement défini suivi du signe = et de la valeur constante exprimée par une liste des constantes
champs, séparées par des ; et entre parenthèses....................................................................................................................57
EXEMPLES :........................................................................................................................................................................57
Type.......................................................................................................................................................................................57
Point = Record.....................................................................................................................................................................57
X, Y, Z : Integer;................................................................................................................................................................57
End;......................................................................................................................................................................................57
OS = (CPM80, CPM86, MSDOS, UNIX);.........................................................................................................................57
UI = (CCP, SomethingElse, MenuMaster);........................................................................................................................57
Computer = Record.............................................................................................................................................................57
OperatingSystems : Array [1..4] of OS;...........................................................................................................................57
UserInterface : UI;............................................................................................................................................................57
End;......................................................................................................................................................................................57
Const......................................................................................................................................................................................57
Origin : Point = (X:0; Y:0; Z:0);..........................................................................................................................................57
SuperComputer : Computer = .............................................................................................................................................57
(OperatingSystems : (CPM80, CPM86, MSDOS,UNIX);.................................................................................................57
UserInterface : MenuMaster);.............................................................................................................................................57
Plane1 : Array [1..3] of Point =...........................................................................................................................................57
((X:1;Y:4;Z:5),(X:10;Y:78;Z:45),(X:100;Y:10;Z:7));.......................................................................................................57
Si une constante enregistrement contient une partie variable, le programmeur doit spécifier seulement les champs de la
partie valide. Si la partie variante contient un sélecteur de champ, sa valeur doit être spécifiée........................................57
XIII.2.4 CONSTANTES ENSEMBLE.................................................................................................57
Une constante ensemble est constituée d'une ou plusieurs spécifications d'éléments séparées par des virgules et entre
crochets. La spécification d'un élément doit être une constante ou un intervalle exprimé par deux constantes séparées par
deux points..............................................................................................................................................................................57
EXEMPLES :........................................................................................................................................................................57
Type.......................................................................................................................................................................................57
Up = set of 'A'..'Z';...............................................................................................................................................................57
Low = set of 'a'..'z';..............................................................................................................................................................57
Const......................................................................................................................................................................................57
UpperCase : Up = ['A'..'Z'];..................................................................................................................................................57
Voyelles : Low = ['a','e','i','o','u','y'];....................................................................................................................................57
XIV PROCEDURES ET FONCTIONS.................................................................................................................................58
Un programme comprend une suite d'actions plus ou moins indépendantes. Un regroupement de certaines actions dans
des blocs permet de structurer un programme, ces blocs pouvant être exécutés sur demande. Cette structuration offre
deux avantages:......................................................................................................................................................................58
Le bloc ainsi défini correspond à une fonction bien précise qui est apparue lors de l'analyse du problème. Il peut donc
être écrit séparément, et au besoin se diviser lui-même en sous-blocs si son analyse fait apparaître d'autres fonctions
distinctes.................................................................................................................................................................................58
La fonction réalisée par un bloc peut être demandée en différents points du programme. Il est inutile de la réécrire
autant de fois que nécessaire, il suffit de demander l'exécution du bloc correspondant......................................................58
En PASCAL, ces blocs se réalisent par des sous-programmes que l'on nomme Procédure ou Fonction...........................58
Une procédure est activée dans un programme par un appel de procédure.........................................................................58
Une fonction est semblable à une procédure mais elle calcule et retourne une valeur lorsque son identificateur est
rencontré durant l'exécution...................................................................................................................................................58
XIV.1 LES PARAMETRES..................................................................................................................58
Des valeurs peuvent être passées à des procédures ou des fonctions par des paramètres. Les paramètres fournissent un
mécanisme de substitution permettant à la logique d'un sous-programme d'être utilisée avec différentes valeurs initiales,
donnant ainsi des résultats différents.....................................................................................................................................58
Un appel de procédure ou de fonction peut contenir une liste de paramètres, appelés les paramètres réels. Ils sont
substitués aux paramètres formels spécifiés dans l'en-tête du sous-programme..................................................................58
L'ordre des paramètres passés est l'ordre d'apparition dans la liste des paramètres............................................................58
Il existe trois sortes de paramètres en PASCAL classés suivant leur mode de transmission : par valeur, par adresse et par
adresse sans type. ...................................................................................................................................................................58
La syntaxe des listes de paramètres est la suivante:.............................................................................................................58
XIV.1.1 PARAMETRES PAR VALEUR.............................................................................................59
Lorsque les paramètres sont passés par valeur, le paramètre formel représente une variable locale au sous-programme et
tout changement du paramètre formel n'a pas d'effet sur le paramètre réel. Les types des paramètres formels et des
paramètres réels doivent correspondre..................................................................................................................................59
Ces paramètres sont déclarés dans l'en-tête du sous-programme comme dans l'exemple suivant:....................................59
Procedure Exemple(Nb1,Nb2:Nombre ; Ch1,Ch2:Txt);.....................................................................................................59
Nombre et Txt sont des types préalablement définis..........................................................................................................59
XIV.1.2 PARAMETRES PAR ADRESSE...........................................................................................59
Lorsqu'un paramètre est passé par adresse (on dit aussi par référence ou par variable), le paramètre formel représente en
fait le paramètre réel durant l'exécution du sous-programme. Toute modification apportée au paramètre formel affecte
donc le paramètre réel qui doit être une variable..................................................................................................................59
Les paramètres passés par référence sont déclarés précédés du mot réservé Var..............................................................59
Procedure Exemple(Var Resul1,Resul2:Integer);................................................................................................................59
Les paramètres par valeur et les paramètres variables peuvent être utilisés ensemble dans la même procédure..............59
Procedure Exemple(Var Resul1:Integer;Don1,Don2:integer);............................................................................................59
Tous les calculs d'adresses sont faits à l'appel de la procédure. Si une variable est un composant d'un tableau, ses
expressions d'index sont calculées lorsque le sous-programme est appelé...........................................................................59
Lorsque l'on veut passer une importante structure de données comme paramètre, par exemple un tableau, l'utilisation
d'un paramètre variable permet d'économiser de l'espace et du temps car la seule information passée au sous-programme
est l'adresse du paramètre réel...............................................................................................................................................59
XIV.1.3 PARAMETRES PAR ADRESSE SANS TYPE.....................................................................60
Si le type d'un paramètre formel n'est pas défini, c'est-à-dire si l'on omet la définition du type dans l'en-tête du sous-
programme, le paramètre est dit sans type. Le paramètre réel correspondant peut alors être de tout type. .......................60
Au sein de la procédure ou de la fonction, le paramètre est réellement sans type, donc il n'est compatible avec aucune
variable. La seule méthode pour briser son isolement est de lui appliquer un transtypage.................................................60
Exemple :...............................................................................................................................................................................60
Function Egal(Var Source,Dest ; Taille : Word) : Boolean;................................................................................................60
TYPE.....................................................................................................................................................................................60
Octets = Array[0..Maxint] of Byte;.....................................................................................................................................60
VAR.......................................................................................................................................................................................60
N : Integer;............................................................................................................................................................................60
Begin......................................................................................................................................................................................60
N := 0;...................................................................................................................................................................................60
While (N < Taille) And ( (Octets(Dest)[N]) = (Octets(Source)[N]) ) Do Inc(N);..............................................................60
Egal := N = Taille;...............................................................................................................................................................60
End;........................................................................................................................................................................................60
Cette fonction peut être utilisée pour comparer deux variables de toute taille et de tout type...........................................60
XIV.2 LE TYPE SOUS-PROGRAMME..............................................................................................60
Turbo Pascal autorise le type sous-programme grâce auquel on peut traiter des procédures et des fonctions comme des
objets.......................................................................................................................................................................................60
Type.......................................................................................................................................................................................60
Proc = Procedure;.................................................................................................................................................................60
Echange = Procedure(Var X, Y : Integer);..........................................................................................................................60
Var.........................................................................................................................................................................................60
P : Proc;................................................................................................................................................................................60
Q : Echange; ......................................................................................................................................................................60
Ces variables sous-programmes peuvent être l'objet d'affectations en respectant la compatibilité au niveau des
affectations (même nombre de paramètres, de mêmes type). De plus, il faut que la procédure (ou la fonction) devant être
affectée soit compilée avec la directive {$F+}, et que cette procédure (ou cette fonction) ne soit ni standard, ni
imbriquée, ni inline, ni interrupt. ..........................................................................................................................................60
Il est possible de déclarer des procédures et des fonctions utilisant des procédures et des fonctions en tant que
paramètres en respectant les mêmes règles de compatibilité que pour l'affectation............................................................60
XIV.3 LES PROCEDURES..................................................................................................................61
Une procédure peut être soit pré-déclarée, dite alors procédure standard, soit définie par l'utilisateur.............................61
Une déclaration de procédure est constituée d'un en-tête de procédure, suivie d'un bloc constitué d'une partie
déclaration et d'une partie instruction....................................................................................................................................61
L'en-tête de procédure est constitué du mot réservé Procedure suivi de l'identificateur de la procédure et des paramètres
éventuels.................................................................................................................................................................................62
La directive Interrupt insérée juste avant le début du corps de procédure transforme cette dernière en procédure
d'Interruption qui doit comporter la liste de paramètres suivante:........................................................................................62
Procedure Inter (Flags,CS,IP,AX,BX,CX,DX,SI,DI,DS,ES,BP : Word);..........................................................................62
La partie déclaration d'une procédure a la même forme que celle d'un programme..........................................................62
Tous les identificateurs déclarés dans la liste des paramètres formels et dans la partie déclaration sont locaux à cette
procédure et à toute procédure à l'intérieur de celle-ci.........................................................................................................62
La partie instruction indique l'action à exécuter lorsque la procédure est appelée, et elle a la forme d'une instruction
composée................................................................................................................................................................................62
EXEMPLE DE PROCEDURE:............................................................................................................................................63
Procédures et fonctions.........................................................................................................................................................58
Program Parametre;...............................................................................................................................................................63
Var.........................................................................................................................................................................................63
A,B :Integer;.........................................................................................................................................................................63
Procedure H(X:Integer;Var Y:Integer);................................................................................................................................63
Begin......................................................................................................................................................................................63
X := X + 1;............................................................................................................................................................................63
Y := Y + 1;............................................................................................................................................................................63
Writeln(X,Y);.......................................................................................................................................................................63
End; { of procedure H }........................................................................................................................................................63
Begin { Programme principal }..........................................................................................................................................63
A := 0; ..................................................................................................................................................................................63
B := 0;...................................................................................................................................................................................63
H(A,B);.................................................................................................................................................................................63
Writeln(A,B);........................................................................................................................................................................63
End.........................................................................................................................................................................................63
A l'exécution, on obtient : 1 1..............................................................................................................................................63
0 1........................................................................................................................................................................................63
XIV.4 LES FONCTIONS......................................................................................................................64
Les fonctions sont comme les procédures, soit standards, soit définies par le programmeur.............................................64
..............................................................................................................................................................................................64
La déclaration de fonction est constituée de l'en-tête de la fonction et d'un bloc, lui-même constitué d'une partie
déclaration suivie d'une partie instruction.............................................................................................................................64
L'en-tête de fonction est constitué du mot réservé Function suivi de l'identificateur de la fonction, suivi des paramètres
éventuels, suivi du signe : et du type du résultat de la fonction...........................................................................................64
Function KeyHit:Boolean;....................................................................................................................................................64
Function Puiss(X:real;N:Integer):Real;...............................................................................................................................64
Function Compute(Var Value:Integer):Real;......................................................................................................................64
Le type du résultat d'une fonction doit être un type simple (Integer, Real, Boolean, Char, Type scalaire déclaré ou
Intervalle), un type chaîne ou un type pointeur ....................................................................................................................64
EXEMPLES DE FONCTIONS:............................................................................................................................................65
Program Puissance;...............................................................................................................................................................65
Var.........................................................................................................................................................................................65
A : Real;................................................................................................................................................................................65
N : Integer;............................................................................................................................................................................65
Function Puiss(X : Real; N : Integer) : Real;........................................................................................................................65
Var.........................................................................................................................................................................................65
P : Real;................................................................................................................................................................................65
I : Integer;.............................................................................................................................................................................65
Begin......................................................................................................................................................................................65
P := 1;....................................................................................................................................................................................65
If N > 0 ................................................................................................................................................................................65
Then......................................................................................................................................................................................65
For I := 1 to N do P := P * X...............................................................................................................................................65
Else.......................................................................................................................................................................................65
For I := -1 Downto N Do P := P / X;..................................................................................................................................65
Puiss := P;.............................................................................................................................................................................65
End;........................................................................................................................................................................................65
Begin......................................................................................................................................................................................65
Write('Entrer un nombre : );.................................................................................................................................................65
Readln(A);............................................................................................................................................................................65
Write('Entrer son exposant : ');............................................................................................................................................65
Readln(N);............................................................................................................................................................................65
Writeln(A:10:2,Puiss(A,N));................................................................................................................................................65
End.........................................................................................................................................................................................65
Remarque : l'exemple suivant nécessite un examen approfondi pour sa bonne compréhension:.......................................65
Program Test;........................................................................................................................................................................65
Var.........................................................................................................................................................................................65
A, Z : Integer;.....................................................................................................................................................................65
Function Carre(X:Integer):Integer;.......................................................................................................................................65
Begin......................................................................................................................................................................................65
Z := Z - X;............................................................................................................................................................................65
Carre := Sqr(X);....................................................................................................................................................................65
End; { of Function Carre }....................................................................................................................................................65
Begin { Programme Principal }...........................................................................................................................................65
Z := 10; A := Carre(Z); Writeln(A,Z);.................................................................................................................................65
Z := 10; A := Carre(10) * Carre(Z); Writeln(A,Z);.............................................................................................................65
Z := 10; A := Carre(Z) * Carre(10); Writeln(A,Z);.............................................................................................................65
End.........................................................................................................................................................................................65
Le résultat de l'exécution est sous TP6 et TP7: 100 0..........................................................................................................65
10000 -10..............................................................................................................................................................................65
0 0.........................................................................................................................................................................................65
Attention : le résultat dépend de la version de TPascal (Différences avec les versions 5 et précédentes).........................65
XIV.5 DESCRIPTION DU PLAN DE LA MEMOIRE D'UN PROGRAMME TURBO PASCAL. . .65
Limite supérieure de la mémoire gérée par le DOS.............................................................................................................66
FreePtr....................................................................................................................................................................................66
Table des fragments..............................................................................................................................................................66
( croît vers le bas ).................................................................................................................................................................66
HeapPtr..................................................................................................................................................................................66
Mémoire disponible...............................................................................................................................................................66
HeapOrg.................................................................................................................................................................................66
Tas..........................................................................................................................................................................................66
( croît vers le haut )...............................................................................................................................................................66
OvrHeapEnd..........................................................................................................................................................................66
Tampon de recouvrement......................................................................................................................................................66
des partiels.............................................................................................................................................................................66
OvrHeapOrg..........................................................................................................................................................................66
SSeg:SPtr...............................................................................................................................................................................66
Pile.........................................................................................................................................................................................66
( croît vers le bas ).................................................................................................................................................................66
SSeg:0000..............................................................................................................................................................................66
Pile disponible.......................................................................................................................................................................66
Variables globales.................................................................................................................................................................66
DSeg:0000.............................................................................................................................................................................66
Constantes typées..................................................................................................................................................................66
Segment de code de...............................................................................................................................................................66
l’unité System........................................................................................................................................................................66
Contenu..................................................................................................................................................................................66
Segment de code de la...........................................................................................................................................................66
première unité........................................................................................................................................................................66
d’un........................................................................................................................................................................................66
Segment de code des.............................................................................................................................................................66
autres unités...........................................................................................................................................................................66
fichier.....................................................................................................................................................................................66
Segment de code du...............................................................................................................................................................66
programme principal.............................................................................................................................................................66
.EXE.......................................................................................................................................................................................66
PrefixSeg................................................................................................................................................................................66
Préfixe de segment de...........................................................................................................................................................66
programme.............................................................................................................................................................................66
Le Préfixe de Segment de Programme (PSP) est une zone de 256 octets créée par MS-DOS lors du chargement du
fichier .EXE............................................................................................................................................................................66
Chaque module (programme principal et les unités) possède son propre segment de code. La taille d'un segment de code
ne peut dépasser 64 Ko...........................................................................................................................................................66
Le segment de données (accessible par DS) contient toutes les constantes typées suivies par toutes les variables
globales. Le registre DS n'est jamais modifié pendant l'exécution du programme. Sa taille maximale est de 64 Ko........67
Les variables locales aux procédures et fonctions sont créées et stockées dans la pile (accessible par SS). Les
paramètres sont transmis aux procédures et fonctions par l'intermédiaire de la pile. Avant l'appel, les paramètres sont
placés sur la pile en suivant l'ordre de leur déclaration. Avant de s'achever, la procédure ou la fonction supprime les
paramètres de la pile...............................................................................................................................................................67
Les paramètres sont transmis par adresse ou par valeur. Quand un paramètre est transmis par adresse (référence), un
pointeur sur l'emplacement réel de stockage est placé sur la pile. Avec une transmission par valeur, c'est la valeur réelle
qui est placée sur la pile.........................................................................................................................................................67
La taille du segment de pile ne peut dépasser 64 Ko, sa taille par défaut (16 Ko) est modifiable grâce à la directive de
compilation {$M}...................................................................................................................................................................67
Le Tas (Heap) stocke les variables dynamiques (voir chapitre XVIII). Il occupe tout ou partie de la mémoire libre. La
taille réelle dépend des valeurs minimale et maximale qui peuvent être fixées par la directive de compilation {$M}.....67
XIV.6 PROCEDURES ET FONCTIONS STANDARD......................................................................67
En plus des procédures et des fonctions standards déjà décrites dans les chapitres précédents (manipulation de chaînes
ou de fichiers, allocations des variables dynamiques (Chapitre XVIII), procédures d'entrée/sortie), les procédures
suivantes sont disponibles. ....................................................................................................................................................67
XIV.6.1 PROCEDURES DE CONTROLE GENERAL.......................................................................67
EXIT Exit; .........................................................................................................................................................................67
Sortie immédiate du bloc courant (procédure ou fonction).................................................................................................67
HALT Halt [ (CodeSortie : Word)];...................................................................................................................................67
Arrêt de l'exécution du programme et retour au système d'exploitation. CodeSortie est une expression facultative qui
précise le code de sortie du programme................................................................................................................................67
RUNERROR RunError [ (ErreurCode : Byte)];..................................................................................................................67
Permet comme Halt de stopper l'exécution d'un programme, mais renvoie un code erreur d'exécution (ErreurCode, 0 s'il
est omis)..................................................................................................................................................................................67
XIV.6.2 PROCEDURES ET FONCTIONS D'ALLOCATION DYNAMIQUE DE MEMOIRE........68
DISPOSE Dispose(Var P : Pointer);....................................................................................................................................68
Libération d'une variable dynamique...................................................................................................................................68
FREEMEM FreeMem(Var P : Pointer; Taille : Word);......................................................................................................68
Libération d'une variable dynamique dont la taille est spécifiée lors de l'appel.................................................................68
GETMEM GetMem(Var P : Pointer; Taille : Word);.........................................................................................................68
Création d'une variable dynamique de taille spécifiée et affectation d'un pointeur sur cette variable...............................68
MARK Mark(Var P : Pointer);.............................................................................................................................................68
Mémorisation de l'adresse courante du pointeur de tas........................................................................................................68
MAXAVAIL MaxAvail: LongInt........................................................................................................................................68
Renvoie la taille du plus grand bloc contigu de mémoire disponible dans le tas au moment de l'appel............................68
MEMAVAIL MemAvail : LongInt.....................................................................................................................................68
Renvoie le nombre d'octets disponibles dans le tas, quel que soit son état de fragmentation............................................68
NEW New(Var P : Pointer);...............................................................................................................................................68
Création d'une variable dynamique et affectation d'un pointeur sur celle-ci......................................................................68
New(TypePointeur, Init(Liste Paramètres));.....................................................................................................................68
Création et Initialisation d'un objet créé dans le tas et renvoie un pointeur du type indiqué. Dans ce cas d'utilisation,
New attend le constructeur de l'objet en second paramètre..................................................................................................68
Ptr := New (T_Ptr, Init(5))); ...............................................................................................................................................68
New(T_Ptr(Ptr),Init(5));.......................................................................................................................................................68
RELEASE Release(Var P : Pointer);...................................................................................................................................68
Libération de l'espace mémoire situé au-dessus de l'adresse spécifiée...............................................................................68
XIV.6.3 FONCTIONS DE TRANSFERT.............................................................................................69
CHR Chr(Num) : Char........................................................................................................................................................69
Retourne le caractère dont la valeur ordinale est donnée par l'expression entière Num. ...................................................69
Exemple: Chr(65) retourne le caractère 'A'..........................................................................................................................69
ORD Ord(Var) : LongInt.....................................................................................................................................................69
Retourne la valeur ordinale de la valeur Var dans l'ensemble défini par le type Var. Var peut être de tout type scalaire
sauf réel et le résultat est du type entier................................................................................................................................69
ROUND Round(Num) : LongInt.........................................................................................................................................69
Retourne la valeur de Num arrondie à l'entier le plus proche selon les règles suivantes....................................................69
Si Num >= 0 alors Round(Num) = Trunc(Num + 0.5) ....................................................................................................69
sinon Round(Num) = Trunc(Num - 0.5). .......................................................................................................................69
Num doit être du type réel et le résultat est du type entier.................................................................................................69
TRUNC Trunc(Num) : LongInt...........................................................................................................................................69
Retourne le plus grand entier plus petit que ou égal à Num si Num >= 0 et le plus petit entier plus grand que ou égal à
Num dans le cas contraire. Num doit être du type réel et le résultat est du type entier.......................................................69
XIV.6.4 FONCTIONS ARITHMETIQUES.........................................................................................70
ABS Abs(Num) : Même type que Num..............................................................................................................................70
Retourne la valeur absolue de Num. L'argument Num doit être soit un réel soit un entier et le résultat est de même type
que l'argument........................................................................................................................................................................70
ARCTAN ArcTan(Num : Real) : Real................................................................................................................................70
Retourne l'angle en radians dont la tangente est Num. .......................................................................................................70
COS Cos(Num : Real) : Real..............................................................................................................................................70
Retourne le cosinus de Num. L'argument Num est exprimé en radians. ............................................................................70
EXP Exp(Num : Real) : Real..............................................................................................................................................70
Retourne l'exponentielle de Num. ........................................................................................................................................70
FRAC Frac(Num : Real) : Real..........................................................................................................................................70
Retourne la partie fractionnaire de Num, c'est-à-dire Frac(Num) = Num - Int(Num). ......................................................70
INT Int(Num : Real) : Real.................................................................................................................................................70
Retourne la partie entière de Num, c'est-à-dire Num sans aucune décimale. ....................................................................70
LN Ln(Num : Real) : Real..................................................................................................................................................70
Retourne le logarithme népérien de Num. ...........................................................................................................................70
PI Pi : Real...........................................................................................................................................................................70
Valeur de Pi (3.1415926535897935385)..............................................................................................................................70
SIN Sin(Num : Real) : Real................................................................................................................................................70
Retourne le sinus de Num. Num est exprimé en radians. ...................................................................................................70
SQR Sqr(Num) : Même type que Num...............................................................................................................................70
Retourne le carré de Num. Num doit être soit un réel soit un entier. .................................................................................70
SQRT Sqrt(Num : Real) : Real...........................................................................................................................................70
Retourne la racine carrée de Num. ......................................................................................................................................70
DMSI/PROGRAMMATION - 161 -.....................................................................................................................................58
XIV.6.5 PROCEDURES ET FONCTIONS SCALAIRES...................................................................71
DEC Dec(Var X [; N : LongInt]);.......................................................................................................................................71
Décrément d'une variable scalaire........................................................................................................................................71
Dec(X) correspond à X := X - 1...........................................................................................................................................71
Dec(X,N) correspond à X := X – N.....................................................................................................................................71
INC Inc(Var X [; N : LongInt]);.........................................................................................................................................71
Incrément d'une variable scalaire..........................................................................................................................................71
Inc(X) correspond à X := X + 1...........................................................................................................................................71
Inc(X,N) correspond à X := X + N......................................................................................................................................71
ODD Odd(Num : LongInt) : Boolean.................................................................................................................................71
Retourne la valeur booléenne TRUE si Num est un nombre impair et FALSE si Num est un nombre pair......................71
PRED Pred(Num) : Même type que Num..........................................................................................................................71
Retourne le prédécesseur de Num s'il existe. Num peut être de tout type scalaire.............................................................71
SUCC Succ(Num) : Même type que Num..........................................................................................................................71
Retourne le successeur de Num s'il existe. Num peut être de tout type scalaire.................................................................71
XIV.6.6 FONCTIONS DE POINTEUR ET D'ADRESSE...................................................................72
ADDR Addr(X) : Pointer....................................................................................................................................................72
Renvoie l'adresse en mémoire de l'objet spécifié. X peut être une variable, une fonction ou une procédure....................72
CSEG Cseg : Word..............................................................................................................................................................72
Renvoie le contenu actuel du registre CS.............................................................................................................................72
DSEG Dseg : Word.............................................................................................................................................................72
Renvoie du contenu actuel du registre DS............................................................................................................................72
OFS Ofs(X) : Word.............................................................................................................................................................72
Renvoie la partie déplacement (offset) de l'adresse de l'objet spécifié. X peut être une variable, une fonction ou une
procédure. ..............................................................................................................................................................................72
PTR Ptr(Seg, Dep : Word) : Pointer...................................................................................................................................72
Conversion d'une adresse spécifiée sous la forme "segment, déplacement" en une valeur de type pointeur. ..................72
SEG Seg(X) : Word.............................................................................................................................................................72
Renvoie la partie segment de l'adresse de l'objet spécifié. X peut être une variable, une fonction ou une procédure......72
SPTR Sptr : Word................................................................................................................................................................72
Renvoie le contenu actuel du registre SP.............................................................................................................................72
SSEG SSeg : Word..............................................................................................................................................................72
Renvoie le contenu actuel du registre SS.............................................................................................................................72
XIV.6.7 PROCEDURES ET FONCTIONS DIVERSES......................................................................73
FILLCHAR FillChar(Var X; Num : Word; Ch : Value);....................................................................................................73
Remplit une partie de la mémoire avec une valeur donnée. X est une variable de n'importe quel type, Num une
expression de type Word et Value un type scalaire quelconque. La procédure FillChar écrit la valeur de Ch dans Num
octets contigus en commençant au premier octet occupé par X...........................................................................................73
HI Hi(I) : Byte.....................................................................................................................................................................73
Renvoie l'octet de poids fort de son argument. I est une expression de type entier ou mot. .............................................73
LO Lo(I) : Byte...................................................................................................................................................................73
Renvoie l'octet de poids faible de son argument. I est une expression de type entier ou mot............................................73
MOVE Move(Var Source, Dest ; Nombre : Word);............................................................................................................73
Effectue une copie directe en mémoire du nombre d'octets spécifié. Source et Dest sont des paramètres de tout type
transmis par référence. La procédure recopie un bloc de Nombre octets en commençant au premier octet occupé par
Source, à l'emplacement commençant au premier octet occupé par Dest. La procédure Move gère automatiquement les
recouvrements éventuels durant les processus de recopie.....................................................................................................73
PARAMCOUNT ParamCount : Word..................................................................................................................................73
Renvoie le nombre de paramètres passés au programme dans la ligne de commande. Les espaces et les caractères de
tabulation servent comme séparateurs...................................................................................................................................73
PARAMSTR ParamStr(N : Word) : String..........................................................................................................................73
Cette fonction chaîne retourne le Nième paramètre de la ligne de commande ou une chaîne vide (si N est égal à 0 ou si
N est supérieur à ParamCount)..............................................................................................................................................73
RANDOM Random : Real...................................................................................................................................................73
Retourne un nombre aléatoire plus grand que ou égal à zéro et plus petit que un. ............................................................73
Random(Num : Word) : Word..........................................................................................................................................73
Retourne un nombre aléatoire plus grand que ou égal à zéro et plus petit que Num. ........................................................73
RANDOMIZE Randomize;...................................................................................................................................................73
Initialise le générateur de nombre aléatoire avec une valeur aléatoire................................................................................73
SIZEOF SizeOf(Name) : Word............................................................................................................................................73
Retourne le nombre d'octets occupé en mémoire par la variable ou le type Name............................................................73
SWAP Swap(Num) : même type que Num........................................................................................................................73
Inversion des octets de poids fort et de poids faible de l'argument. Num est une expression de type entier ou mot........74
UPCASE UpCase(Ch : Char) : Char....................................................................................................................................74
Retourne la majuscule équivalente de son argument. Si Ch n'appartient pas à l'intervalle a..z, Ch est retourné inchangé.
.................................................................................................................................................................................................74
XIV.6.8 VARIABLES PREDECLAREES DE L'UNITE SYSTEM....................................................74
Variables non initialisées :....................................................................................................................................................74
Input.......................................................................................................................................................................................74
Text........................................................................................................................................................................................74
Fichier d'entrée standard.......................................................................................................................................................74
OutPut....................................................................................................................................................................................74
Text........................................................................................................................................................................................74
Fichier de sortie standard......................................................................................................................................................74
SaveIntxy...............................................................................................................................................................................74
POINTER...............................................................................................................................................................................74
Sauvegarde de l'interruption $xy où xy peut être 00, 02, 1B, 23, 24, 34, 35, 36, 37, 38, 39, 3A, 3B, 3C, 3D, 3E, 3F, 75
.................................................................................................................................................................................................74
Variables initialisées :...........................................................................................................................................................74
OvrCodeList..........................................................................................................................................................................74
Word = 0................................................................................................................................................................................74
Liste des segments du tampon de recouvrement..................................................................................................................74
OvrHeapSize..........................................................................................................................................................................74
Word = 0................................................................................................................................................................................74
Taille initiale du tampon de recouvrement...........................................................................................................................74
OvrDebugPtr..........................................................................................................................................................................74
Pointer = NIL.........................................................................................................................................................................74
Pointeur de débogage............................................................................................................................................................74
OvrHeapOrg..........................................................................................................................................................................74
Word = 0................................................................................................................................................................................74
Origine du tampon de recouvrement....................................................................................................................................74
OvrHeapPtr............................................................................................................................................................................74
Word = 0................................................................................................................................................................................74
Pointeur de tampon de recouvrement...................................................................................................................................74
OvrHeapEnd..........................................................................................................................................................................74
Word = 0................................................................................................................................................................................74
Fin du tampon de recouvrement...........................................................................................................................................74
OvrLoadList...........................................................................................................................................................................74
Word = 0................................................................................................................................................................................74
Listes des partiels chargés.....................................................................................................................................................74
OvrDosHandle.......................................................................................................................................................................74
Word = 0................................................................................................................................................................................74
Gestionnaire DOS du recouvrement.....................................................................................................................................74
OvrEmsHandle......................................................................................................................................................................74
Word = 0................................................................................................................................................................................74
Gestionnaire EMS du recouvrement.....................................................................................................................................74
HeapOrg.................................................................................................................................................................................74
Pointer = NIL.........................................................................................................................................................................74
Origine du Tas.......................................................................................................................................................................74
HeapPtr..................................................................................................................................................................................74
Pointer = NIL.........................................................................................................................................................................74
Pointeur du Tas......................................................................................................................................................................74
FreePtr....................................................................................................................................................................................74
Pointer = NIL.........................................................................................................................................................................74
Pointeur table des fragments.................................................................................................................................................74
FreeMin..................................................................................................................................................................................74
Word = 0................................................................................................................................................................................74
Taille minimale table des fragments.....................................................................................................................................74
HeapError..............................................................................................................................................................................74
Pointer = NIL.........................................................................................................................................................................74
Fonction d'erreur du Tas........................................................................................................................................................74
ExitProc.................................................................................................................................................................................74
Pointer = NIL.........................................................................................................................................................................74
Procédure de sortie Exit........................................................................................................................................................74
ExitCode................................................................................................................................................................................74
Integer = 0..............................................................................................................................................................................74
Code de sortie........................................................................................................................................................................74
ErrorAddr...............................................................................................................................................................................74
Pointer = NIL.........................................................................................................................................................................74
Adresse erreur d'exécution....................................................................................................................................................74
PrefixSeg................................................................................................................................................................................74
Word = 0................................................................................................................................................................................74
Préfixe de segment de programme........................................................................................................................................74
StackLimit.............................................................................................................................................................................74
Word = 0................................................................................................................................................................................74
Limite inférieure du pointeur de pile....................................................................................................................................74
InOutRes................................................................................................................................................................................74
Integer = 0..............................................................................................................................................................................74
Tampon de résultat des E/S...................................................................................................................................................74
RandSeed...............................................................................................................................................................................74
LongInt = 0............................................................................................................................................................................74
Nombre aléatoire initial........................................................................................................................................................74
FileMode................................................................................................................................................................................74
Byte = 2.................................................................................................................................................................................74
Mode d'ouverture fichier.......................................................................................................................................................74
Test87....................................................................................................................................................................................74
Byte = 0.................................................................................................................................................................................74
Résultat du test de présence 80x87.......................................................................................................................................74
XIV.7 DECLARATIONS FORWARD-EXTERNAL-INLINE............................................................75
FORWARD...........................................................................................................................................................................75
Si un sous-programme P doit appeler un autre sous-programme Q, il est nécessaire de déclarer le sous-programme Q
avant le sous-programme P....................................................................................................................................................75
Si P appelle Q Déclaration de Q..........................................................................................................................................75
-............................................................................................................................................................................................75
-............................................................................................................................................................................................75
Déclaration de P..................................................................................................................................................................75
Si un sous-programme P doit appeler un sous-programme Q qui doit lui-même appeler P, il est nécessaire de préciser
que le deuxième sous-programme est déclaré plus loin dans le programme. Ceci est réalisé en spécifiant son en-tête
séparément du bloc. L'en-tête du sous-programme séparé est exactement comme une en-tête normale, sauf qu'elle se
termine par le mot réservé Forward.......................................................................................................................................75
Le bloc se trouve plus loin dans la même partie déclaration et commence par une copie de l'en-tête spécifiant seulement
le nom et sans paramètre ni type............................................................................................................................................75
EXEMPLE:............................................................................................................................................................................75
Program Essai;.......................................................................................................................................................................75
Var.........................................................................................................................................................................................75
I : Integer;............................................................................................................................................................................75
Procedure Q(A:Integer);Forward; {déclaration différée}...................................................................................................75
Procedure P(B:Integer);.........................................................................................................................................................75
Begin......................................................................................................................................................................................75
-.............................................................................................................................................................................................75
Q(B);.....................................................................................................................................................................................75
-.............................................................................................................................................................................................75
End;........................................................................................................................................................................................75
Procedure Q; {déclaration descriptive}................................................................................................................................75
Begin......................................................................................................................................................................................75
-.............................................................................................................................................................................................75
P(A);......................................................................................................................................................................................75
-.............................................................................................................................................................................................75
End;........................................................................................................................................................................................75
Begin { Programme Principal }...........................................................................................................................................75
-.............................................................................................................................................................................................75
I := 3;....................................................................................................................................................................................75
Q(I);......................................................................................................................................................................................75
-.............................................................................................................................................................................................75
End.........................................................................................................................................................................................75
Remarques :...........................................................................................................................................................................76
La partie déclaration descriptive d'une procédure FORWARD peut être une déclaration EXTERNAL; il ne peut, en
revanche, s'agir ni d'une déclaration INLINE ni d'une autre déclaration FORWARD. Elle ne peut pas contenir non plus
la directive INTERRUPT.......................................................................................................................................................76
Les déclarations FORWARD sont interdites dans la partie INTERFACE d'une unité.......................................................76
EXTERNAL..........................................................................................................................................................................76
Le mot réservé External déclare des sous-programmes comme étant externes c'est-à-dire permettant d'interfacer les
programmes avec des procédures ou fonctions écrites en langage d'assemblage (fichiers .OBJ). .....................................76
Un sous-programme externe n'a pas de bloc, seule l'en-tête est spécifiée, suivie du mot réservé External. Le fichier
correspondant doit être lié au programme ou à l'unité par la directive {$L Nom_de_Fichier}...........................................76
EXEMPLE:...........................................................................................................................................................................76
Procedure Deplace(Var Source, Dest: LongInt); External;................................................................................................76
{$L BLOC.OBJ}.................................................................................................................................................................76
ASM.......................................................................................................................................................................................76
Les déclarations assembler permettent d'écrire des procédures entièrement en assembleur..............................................76
EXEMPLE:...........................................................................................................................................................................76
Function LongMul(X, Y : Integer) : LongInt; Assembler ;................................................................................................76
asm........................................................................................................................................................................................76
MOV AX, X.......................................................................................................................................................................76
IMUL Y...............................................................................................................................................................................76
end;.......................................................................................................................................................................................76
L'instruction ASM permet d'insérer une ou plusieurs instructions assembleur séparées par un point-virgule, un saut de
ligne ou un commentaire Pascal............................................................................................................................................76
EXEMPLE:...........................................................................................................................................................................76
If Inter_Autorise ..................................................................................................................................................................76
Then ....................................................................................................................................................................................76
asm STI end.......................................................................................................................................................................76
Else .....................................................................................................................................................................................76
asm CLI end;......................................................................................................................................................................76
INLINE..................................................................................................................................................................................77
La directive INLINE permet d'insérer directement des instructions en code machine au sein d'un flot d'instructions
(l'effet de cette directive est proche des macro-instructions disponibles en langage d'assemblage). .................................77
Ces directives ne contiennent ni déclaration locale ni bloc Begin..End. Leur structure ne comporte que l'en-tête suivi
par une instruction en ligne....................................................................................................................................................77
EXEMPLE : ......................................................................................................................................................................77
Procedure ActvInterr ; INLINE($FA) ; { mnémonique = CLI }.......................................................................................77
L'instruction inline permet d'insérer un ou plusieurs éléments en ligne séparés par une barre (/) et encadrés par des
parenthèses. Les instructions inline peuvent être librement mélées aux autres instructions...............................................77
EXEMPLE:............................................................................................................................................................................77
Function LongMul(X, Y : Integer) : LongInt;......................................................................................................................77
INLINE ( $58 / { POP AX soit POP Y }...........................................................................................................................77
$5A / { POP DX soit POP X }..........................................................................................................................................77
$F7 / $EA ) ; { IMUL DX soit DX:AX = X * Y }.............................................................................................................77
XV LA RECURSIVITE.........................................................................................................................................................78
Le langage PASCAL autorise la récursivité simple et la récursivité croisée. Il y a récursivité simple lorsqu'une fonction
ou une procédure en cours d'exécution s'appelle elle-même, et demande donc une nouvelle activation. Il y a récursivité
croisée entre deux procédures A et B si la procédure A appelle la procédure B qui elle-même appelle la procédure A...78
XV.1 LA RECURSIVITE SIMPLE......................................................................................................78
Un exemple de récursivité simple est le suivant:.................................................................................................................78
Procedure Rec(...);.................................................................................................................................................................78
Begin......................................................................................................................................................................................78
-.............................................................................................................................................................................................78
Rec(...);.................................................................................................................................................................................78
-.............................................................................................................................................................................................78
End;........................................................................................................................................................................................78
L'emploi de la récursivité est pratique pour résoudre les problèmes dont la définition est naturellement récursive.........78
Soit par exemple le calcul de Factorielle N:........................................................................................................................78
N! = N * (N-1) * (N-2) * . . . * 2 * 1....................................................................................................................................78
La fonction suivante permet ce calcul:.................................................................................................................................78
Program Factoriel;.................................................................................................................................................................78
Var.........................................................................................................................................................................................78
N : LongInt;.........................................................................................................................................................................78
Function Fact (M : LongInt):LongInt;..................................................................................................................................78
Begin......................................................................................................................................................................................78
If M > 1 ................................................................................................................................................................................78
Then Fact := M * Fact(M-1)................................................................................................................................................78
Else Fact := 1;......................................................................................................................................................................78
End;........................................................................................................................................................................................78
Begin......................................................................................................................................................................................78
Write('ENTRER UN NOMBRE ENTIER ');......................................................................................................................78
Readln(N);............................................................................................................................................................................78
Writeln('La Factorielle de ',N:5,' EST ',Fact(N):6);............................................................................................................78
End.........................................................................................................................................................................................78
Remarque: il existe bien entendu une méthode plus simple pour résoudre ce problème...................................................78
Pour bien comprendre le fonctionnement de la récursivité, il faut bien connaître comment un sous-programme est
activé.......................................................................................................................................................................................79
La récursivité.........................................................................................................................................................................78
Lors de l'appel, il y a création des variables locales au sous-programme, chaque appel se traduit par une réservation de
mémoire différente pour les variables locales......................................................................................................................79
Les paramètres effectifs sont passés. Il s'agit d'une valeur pour les paramètres par valeur et d'une adresse pour les
paramètres par variables........................................................................................................................................................79
Le sous-programme s'exécute en travaillant avec ses variables locales..............................................................................79
A la fin de l'exécution, il y a restitution de la zone mémoire réservée aux variables locales, donc destruction de celle-
ci. Dans le cas d'une fonction, il y a retour du résultat........................................................................................................79
Dans l'exemple précédent, le calcul de Factorielle 4 se traduit par:...................................................................................79
Première activation de la fonction Fact(M) .........................................................................................................................79
avec la variable locale M = 4 qui calcule 4 * Fact(3).........................................................................................................79
Deuxième activation de la fonction Fact(M)........................................................................................................................79
avec la variable locale M = 3 qui calcule 3 * Fact(2)..........................................................................................................79
Troisième activation de la fonction Fact(M)........................................................................................................................79
avec la variable locale M = 2 qui calcule 2 * Fact(1)..........................................................................................................79
Quatrième activation de la fonction Fact(M).......................................................................................................................79
avec la variable locale M = 1 qui rend la valeur 1...............................................................................................................79
Il n'y a pas d'autre activation, cette fonction se termine en End et rend la valeur 1..........................................................79
Retour à la troisième activation avec la valeur Fact = 1 qui se termine donc avec ...........................................................79
Fact = 2 * Fact(1) = 2 * 1 = 2...............................................................................................................................................79
Cette activation se termine donc en rendant la valeur 2......................................................................................................79
Retour à la deuxième activation avec la valeur Fact = 2 qui se termine par ......................................................................79
Fact = 3 * Fact(2) = 3 * 2 = 6..............................................................................................................................................79
Cette activation se termine donc en rendant la valeur 6.....................................................................................................79
Retour à la première activation avec la valeur Fact = 6 qui se termine par........................................................................79
Fact = 4 * Fact(3) = 4 * 6 = 24.............................................................................................................................................79
L'appel à la fonction rend donc 24........................................................................................................................................79
XV.2 LA RECURSIVITE CROISEE....................................................................................................80
Il y a récursivité croisée lorsqu'un sous-programme A appelle un sous-programme B qui appelle lui-même le sous-
programme A ou lorsqu'un sous-programme A appelle un sous- programme B qui appelle un sous-programme C qui
rappelle le sous-programme A ou le sous-programme B......................................................................................................80
Il faut bien entendu utiliser la déclaration Forward qui permet une déclaration en-avant d'un sous-programme.............80
EXEMPLE:............................................................................................................................................................................80
Procedure Recur2(Paramètres Formels);FORWARD;.........................................................................................................80
Procedure Recur1(Paramètres Formels);..............................................................................................................................80
Begin......................................................................................................................................................................................80
... ..........................................................................................................................................................................................80
Recur2(Paramètres effectifs);..............................................................................................................................................80
... ..........................................................................................................................................................................................80
End;........................................................................................................................................................................................80
...........................................................................................................................................................................................80
Procedure Recur2;.................................................................................................................................................................80
Begin......................................................................................................................................................................................80
... ......................................................................................................................................................................................80
Recur1(Paramètres effectifs);..............................................................................................................................................80
... ..........................................................................................................................................................................................80
End;........................................................................................................................................................................................80
DMSI/PROGRAMMATION - 161 -.....................................................................................................................................78
XVI LES UNITES..................................................................................................................................................................81
Une unité est un ensemble de constantes, types de données, variables, procédures et fonctions.......................................81
Elle peut comporter un point d'entrée principal qui sera appelé avant le début du programme pour exécuter différentes
initialisations...........................................................................................................................................................................81
XVI.1 SYNTAXES RELATIVES AUX UNITES................................................................................81
Le nom de l'unité est celui référencé dans les clauses Uses................................................................................................81
PARTIE INTERFACE..........................................................................................................................................................81
La partie interface ne comporte que l'en-tête de procédure ou de fonction. Le corps de la procédure ou de la fonction se
trouve dans la partie implémentation.....................................................................................................................................81
L'en-tête de procédure ou de fonction peut être mentionné à nouveau dans la partie implémentation mais l'on n'a pas
besoin de spécifier à nouveau la liste des paramètres formels..............................................................................................81
Le Turbo Pascal est livré avec neuf unites :.........................................................................................................................82
CRT........................................................................................................................................................................................82
permet d'exploiter la puissance de l'affichage et du clavier du PC......................................................................................82
DOS........................................................................................................................................................................................82
donne accès à de nombreuses fonctions du DOS.................................................................................................................82
PRINTER...............................................................................................................................................................................82
permet d'accéder à l'imprimante...........................................................................................................................................82
SYSTEM................................................................................................................................................................................82
est la librairie de phase d'exécution de Turbo Pascal. Cette unité est automatiquement référencée..................................82
OVERLAY............................................................................................................................................................................82
contient le mécanisme de gestion des partiels......................................................................................................................82
GRAPH..................................................................................................................................................................................82
est un module graphique acceptant les normes d'affichage CGA, EGA, VGA, Hercules, IBM 3270 PC, MCGA, AT&T
6300 et IBM 8514...................................................................................................................................................................82
GRAPH3................................................................................................................................................................................82
contient les fonctions du graphisme du Turbo Pascal 3.......................................................................................................82
TURBO3................................................................................................................................................................................82
assure la compatibilité ascendante avec la version 3 du Turbo Pascal................................................................................82
WINDOS...............................................................................................................................................................................82
Cette unité rassemble les services liés au système d'exploitation et à la gestion des fichiers............................................82
XVI.2 L'UNITE CRT............................................................................................................................83
L'unité standard CRT contient les variables, procédures et fonctions suivantes :..............................................................83
ASSIGNCRT AssignCrt(Var F : Text);................................................................................................................................83
AssignCrt agit exactement comme la procédure Assign (cf chapitre XIV) à la différence près qu'aucun nom de fichier
disque n'est spécifié. La variable de type fichier texte est associée à l'écran.......................................................................83
CHECKBREAK Variable de type Boolean..........................................................................................................................83
Permet à un programme d'être ou non sensible à la frappe de la séquence d'interruption utilisateur Ctrl-Break au
clavier. CheckBreak est égale à TRUE par défaut................................................................................................................83
CHECKEOF Variable de type Boolean................................................................................................................................83
Active et désactive la génération du marqueur de fin de fichier lors des lectures clavier. CheckEOF est égale à FALSE
par défaut................................................................................................................................................................................83
CHECKSNOW Variable de type Boolean...........................................................................................................................83
Active et désactive le test d'écran neigeux qui peut s'avérer nécessaire lors des écritures directes dans la mémoire vidéo.
CheckSnow est égale à TRUE quand un mode texte couleur est sélectionné......................................................................83
CLREOL ClrEol;...................................................................................................................................................................83
Efface tous les caractères de la position du curseur jusqu'à la fin de la ligne sans changer la position du curseur...........83
CLRSCR ClrScr;...................................................................................................................................................................83
Efface l'écran et place le curseur en haut à gauche de l'écran. Cette procédure agit par rapport à la fenêtre active.........83
DELAY Delay(ms : Word);..................................................................................................................................................83
Attente de ms millisecondes (approximatif).........................................................................................................................83
DELLINE DelLine;...............................................................................................................................................................83
Efface la ligne sur laquelle est positionné le curseur. Toutes les lignes suivantes sont remontées d'une ligne.................83
DIRECTVIDEO Variable de type Boolean..........................................................................................................................83
Active et désactive l'accès direct à la mémoire vidéo pour les instructions Write et Writeln qui affichent des caractères
à l'écran. DirectVideo est égale à TRUE par défaut.............................................................................................................83
GOTOXY GotoXY(X, Y : Byte);.........................................................................................................................................83
Positionne le curseur à la colonne X et à la ligne Y, le coin supérieur gauche étant le point de coordonnées 1,1............83
HIGHVIDEO HighVideo;.....................................................................................................................................................83
Initialise l'affichage des caractères en sur-intensité.............................................................................................................83
INSLINE InsLine;.................................................................................................................................................................84
Insère une ligne vide à la position du curseur......................................................................................................................84
KEYPRESSED KeyPressed : Boolean.................................................................................................................................84
Renvoie la valeur booléenne True si une touche du clavier a été touchée. Le caractère est disponible dans la mémoire
tampon....................................................................................................................................................................................84
LASTMODE variable de type Word....................................................................................................................................84
La variable LastMode mémorise la valeur du mode vidéo courant avant tout changement de mode vidéo......................84
LOWVIDEO LowVideo;......................................................................................................................................................84
Initialise l'affichage des caractères en sous-intensité...........................................................................................................84
NORMVIDEO NormVideo;..................................................................................................................................................84
Restaure l'attribut video du mode texte tel qu'il a été lu à la position du curseur lors de l'entrée dans le programme......84
NOSOUND NoSound;...........................................................................................................................................................84
Désactive le haut-parleur interne..........................................................................................................................................84
READKEY ReadKey : Char.................................................................................................................................................84
Lit un caractère frappé au clavier. Le caractère lu n'est pas visualisé.................................................................................84
SOUND Sound(Hz : Word);.................................................................................................................................................84
Active le haut-parleur interne...............................................................................................................................................84
TEXTATTR Variable de type Byte......................................................................................................................................84
La variable TextAttr mémorise les attributs vidéo courants. Vous pouvez modifier les attributs vidéo en écrivant
directement dans la variable TextAttr dont la structure est donnée ci-dessous:...................................................................84
Bit...........................................................................................................................................................................................84
7.............................................................................................................................................................................................84
6.............................................................................................................................................................................................84
5.............................................................................................................................................................................................84
4.............................................................................................................................................................................................84
3.............................................................................................................................................................................................84
2.............................................................................................................................................................................................84
1.............................................................................................................................................................................................84
0.............................................................................................................................................................................................84
B.............................................................................................................................................................................................84
f..............................................................................................................................................................................................84
f..............................................................................................................................................................................................84
f..............................................................................................................................................................................................84
c..............................................................................................................................................................................................84
c..............................................................................................................................................................................................84
c..............................................................................................................................................................................................84
c..............................................................................................................................................................................................84
où B est le bit de clignotement, fff reçoit les 3 bits de la couleur de fond et cccc reçoit les 4 bits de la couleur du
caractère..................................................................................................................................................................................84
Cf TextColor, TextBackGround...........................................................................................................................................84
TEXTBACKGROUND TextBackGround(Couleur: Byte);.................................................................................................84
Définit la couleur du fond d'affichage. Couleur est une expression choisie dans l'intervalle 0..7.....................................84
Cf TextColor .........................................................................................................................................................................84
TEXTCOLOR TextColor(Couleur : Byte);..........................................................................................................................85
Définit la couleur d'affichage des caractères. Couleur est une expression choisie dans l'intervalle 0..15.........................85
Black = 0 Brown = 6 LightRed = 12............................................................................................................................85
Blue = 1 LightGray = 7 LightMagenta = 13.................................................................................................................85
Green = 2 DarkGray = 8 Yellow = 14....................................................................................................................85
Cyan = 3 LightBlue = 9 White = 15......................................................................................................................85
Red = 4 LightGreen = 10 ...............................................................................................................................................85
Magenta = 5 LightCyan = 11 Blink = 128................................................................................................................85
TEXTMODE TextMode(Mode : Integer);...........................................................................................................................85
Définit un mode texte spécifique..........................................................................................................................................85
BW40 = 0 CO80 = 3.............................................................................................................................................................85
CO40 = 1 Mono = 4..............................................................................................................................................................85
BW80 = 2 Font8x8 = 256.....................................................................................................................................................85
WHEREX WhereX : Byte.....................................................................................................................................................85
Renvoie l'abscisse X de la position courante du curseur .....................................................................................................85
WHEREY WhereY : Byte.....................................................................................................................................................85
Renvoie l'ordonnée Y de la position courante du curseur ...................................................................................................85
WINDMIN, WINDMAX Variables de type Word...............................................................................................................85
Les variables WindMin et WindMax mémorisent les coordonnées écran de la fenêtre active. L'abscisse X est rangée
dans l'octet de poids faible et l'ordonnée Y dans l'octet de poids fort..................................................................................85
WINDOW Window(x1, y1, x2, y2 : Byte);..........................................................................................................................85
Définit une fenêtre d'affichage dans un écran texte. X1 et Y1 sont les coordonnées du coin supérieur gauche, X2 et Y2
les coordonnées du coin inférieur droit..................................................................................................................................85
XVI.3 L'UNITE DOS............................................................................................................................86
L'unité DOS contient un ensemble de sous-programmes liés au système d'exploitation et à la gestion des fichiers........86
Variable DosError.................................................................................................................................................................86
Cette variable est utilisée par de nombreux sous-programmes pour donner des renseignements sur les situations
d'erreurs..................................................................................................................................................................................86
La valeur 0 indique qu'il n'y a pas d'erreur...........................................................................................................................86
Autres codes d'erreurs...........................................................................................................................................................86
2.............................................................................................................................................................................................86
Fichier non trouvé.................................................................................................................................................................86
3.............................................................................................................................................................................................86
Chemin non trouvé................................................................................................................................................................86
5.............................................................................................................................................................................................86
Accès refusé...........................................................................................................................................................................86
6.............................................................................................................................................................................................86
Identificateur de fichier invalide...........................................................................................................................................86
8.............................................................................................................................................................................................86
Mémoire insuffisante.............................................................................................................................................................86
10...........................................................................................................................................................................................86
Environnement invalide........................................................................................................................................................86
11...........................................................................................................................................................................................86
Format invalide......................................................................................................................................................................86
18...........................................................................................................................................................................................86
Plus de fichiers......................................................................................................................................................................86
DISKFREE DiskFree(Disque : Word) : LongInt..................................................................................................................86
Renvoie la quantité d'octets disponibles sur l'unité de disque spécifiée. Disque = 0 signifie le disque courant, Disque =
1 le disqueA, Disque = 2 le disque B, etc..............................................................................................................................86
DISKSIZE DiskSize(Disque : Word) : LongInt...................................................................................................................86
Renvoie la capacité totale du disque spécifié, exprimée en octets......................................................................................86
DOSEXITCODE DosExitCode : Word................................................................................................................................86
Renvoie le code de sortie d'un sous-programme. L'octet de poids faible est le code renvoyé par le sous-programme qui
se termine. ..............................................................................................................................................................................86
L'octet de poids fort est égal à .............................................................................................................................................86
0 dans le cas d'une fin normale............................................................................................................................................86
1 en cas d'une fin provoquée par Ctrl-C..............................................................................................................................86
2 en cas d'erreur causée par un périphérique.......................................................................................................................86
3 en cas d'appel à la procédure Keep....................................................................................................................................86
DOSVERSION DosVersion : Word.....................................................................................................................................86
Renvoie le numéro de la version du DOS utilisé.................................................................................................................86
ENVCOUNT EnvCount : Integer.........................................................................................................................................86
Renvoie le nombre de chaînes de caractères que contient la zone d'environnement du DOS............................................86
ENVSTR EnvStr(I : Integer) : String....................................................................................................................................87
Extrait la Ième chaîne de l'environnement DOS. ................................................................................................................87
EXEC Exec(Chemin, LigneCmd : String);..........................................................................................................................87
Lance l'exécution d'un programme avec une ligne de commande.......................................................................................87
FEXPAND FExpand(chemin : PathStr) : PathStr................................................................................................................87
Perfectionne un nom de fichier en le transformant en spécification absolue d'accès. Le type PathStr est défini dans
l'unité DOS en tant que String[79].........................................................................................................................................87
FINDFIRST FindFirst(Chemin:String;Attr:Word;Var S:SearchRec);.................................................................................87
Cherche dans le répertoire spécifié la première entrée correspondant au nom de fichier et aux attributs indiqués. Chemin
est le masque de recherche. Attr est l'attribut défini dans l'unité DOS.................................................................................87
Constantes..............................................................................................................................................................................87
Valeur....................................................................................................................................................................................87
ReadOnly...............................................................................................................................................................................87
$01.........................................................................................................................................................................................87
Hidden....................................................................................................................................................................................87
$02.........................................................................................................................................................................................87
SysFile...................................................................................................................................................................................87
$04.........................................................................................................................................................................................87
VolumeId...............................................................................................................................................................................87
$08.........................................................................................................................................................................................87
Directory................................................................................................................................................................................87
$10.........................................................................................................................................................................................87
Archive..................................................................................................................................................................................87
$20.........................................................................................................................................................................................87
AnyFile..................................................................................................................................................................................87
$3F.........................................................................................................................................................................................87
SearchRec = RECORD........................................................................................................................................................87
Fill : Array[1..21] Of Byte;.................................................................................................................................................87
Attr : Byte; { Date }.........................................................................................................................................................87
Time : LongInt; { Heure }.................................................................................................................................................87
Size : LongInt; { Taille }....................................................................................................................................................87
Name : String[12]; { Nom_de_Fichier }...........................................................................................................................87
End;........................................................................................................................................................................................87
FINDNEXT FindNext(Var S : SearchRec);.........................................................................................................................87
Renvoie l'entrée suivante correspondant au nom et attributs définis dans un appel préalable à FindFirst.........................87
FSEARCH FSearch(Chemin: PathStr;ListeRep: String) : PathStr......................................................................................87
Recherche un nom de fichier dans une liste.........................................................................................................................87
FSPLIT .................................................................................................................................................................................87
FSplit(Chemin:PathStr;VarRep:DirStr;Var NomFic:NameStr;VarExt:ExtStr);.................................................................87
Subdivise une spécification de fichier en trois composantes: Rep reçoit le nom d'unité logique, NomFic le nom de base
du fichier et Ext l'extension du nom du fichier.....................................................................................................................87
DMSI/PROGRAMMATION - 161 -.....................................................................................................................................81
GETCBREAK GetCBreak(Var Break : Boolean);...............................................................................................................88
Renvoie l'état du mécanisme d'interruption clavier (Ctrl-Break)........................................................................................88
GETDATE GetDate(Var Annee, Mois, Jour, Jour_Sem : Word);.......................................................................................88
Renvoie la date en vigueur dans le système d'exploitation..................................................................................................88
GETENV GetEnv(EnVar : String) : String..........................................................................................................................88
Renvoie la valeur de la variable d'environnement spécifiée................................................................................................88
GETFATTR GetFAttr(Var F; Var Attr : Word);..................................................................................................................88
Renvoie les attributs d'un fichier. F est une variable de type fichier (typé, non-typé ou texte). Cf constantes de FindFirst.
.................................................................................................................................................................................................88
GETFTIME GetFTime(Var F; Var Date_Heure : LongInt);...............................................................................................88
Renvoie la date et l'heure de la dernière mise à jour d'un fichier........................................................................................88
GETINTVEC GetIntVec(IntNo : Byte; Var Vecteur : Pointer);..........................................................................................88
Renvoie l'adresse contenue dans le vecteur d'interruption spécifié.....................................................................................88
GETTIME GetTime(Var Heure, Minute, Seconde, Sec100 : Word);.................................................................................88
Renvoie l'heure en vigueur dans le système d'exploitation..................................................................................................88
GETVERIFY GetVerify(Var Verify : Boolean);.................................................................................................................88
Renvoie l'état de l'indicateur VERIFY du DOS...................................................................................................................88
KEEP Keep(CodeSortie : Word);.........................................................................................................................................88
Arrête le déroulement du programme concerné et rend le contrôle au DOS. Tout le programme reste en mémoire. Le
code de sortie correspond à celui qui est passé à la procédure Halt.....................................................................................88
PACKTIME PackTime(Var DT : DateTime;Var Date_Heure : LongInt);.........................................................................88
Convertit un enregistrement DateTime sous forme compressée dans un entier long Date_Heure utilisable par SetFTime.
.................................................................................................................................................................................................88
DateTime = Record...............................................................................................................................................................88
Year, Month, Day, Hour, Min, Sec : Integer;....................................................................................................................88
End;.......................................................................................................................................................................................88
MSDOS MsDos(Var Regs : Registers);................................................................................................................................88
Exécute une fonction MS-DOS. Equivaut à un appel à Intr avec IntNo égal à $21...........................................................88
SWAPVECTORS SwapVectors;..........................................................................................................................................88
Echange les vecteurs d'interruption (le contenu des pointeurs SaveIntXX de l'unité System avec le contenu des vecteurs
d'interruption en vigueur).......................................................................................................................................................88
INTR Intr(IntNo : Byte; Var Regs : Registers);...................................................................................................................89
IntNo est le numéro du vecteur d'interruption (0..255)........................................................................................................89
Registers est un enregistrement défini dans l'unité DOS:....................................................................................................89
Registers = RECORD............................................................................................................................................................89
Case Integer Of....................................................................................................................................................................89
0 : (AX,BX,CX,DX,BP,SI,DI,DS,ES,Flags:Word);.........................................................................................................89
1 : (AL,AH,BL,BH,CH,DL,DH : Byte);...........................................................................................................................89
End;......................................................................................................................................................................................89
End;........................................................................................................................................................................................89
Remarquez qu'il s'agit d'un enregistrement à partie variable permettant de manipuler les registres dans le format 8 bits
ou 16 bits................................................................................................................................................................................89
Les constantes suivantes sont utilisées pour tester les bits indicateurs du Flag register.....................................................89
Constante...............................................................................................................................................................................89
Valeur....................................................................................................................................................................................89
Fcarry.....................................................................................................................................................................................89
$0001.....................................................................................................................................................................................89
Fparity....................................................................................................................................................................................89
$0004.....................................................................................................................................................................................89
Fauxiliary...............................................................................................................................................................................89
$0010.....................................................................................................................................................................................89
Fzero......................................................................................................................................................................................89
$0040.....................................................................................................................................................................................89
Fsign.......................................................................................................................................................................................89
$0080.....................................................................................................................................................................................89
Foverflow...............................................................................................................................................................................89
$0800.....................................................................................................................................................................................89
SETCBREAK SetCBreak(Break : Boolean);.......................................................................................................................89
Configure l'état du mécanisme de détection d'interruption clavier du DOS (Ctrl-Break)..................................................89
SETDATE SetDate(Annee, Mois, Jour : Word);.................................................................................................................89
Initialise la date maintenue par le système d'exploitation...................................................................................................89
SETFATTR SetFAttr(Var F; Attr : Word);..........................................................................................................................89
Définit les attributs d'un fichier. F est une variable fichier (typé, non-typé ou texte), Attr est la valeur de l'attribut (cf
FindFirst).Cf constantes de FindFirst.....................................................................................................................................89
SETFTIME SetFTime(Var F; Date_Heure : LongInt);........................................................................................................89
Ecrit la date et l'heure de la dernière mise à jour d'un fichier.............................................................................................89
SETINTVEC SetIntVec(IntNo : Byte; Vecteur : Pointer);..................................................................................................89
Affecte une adresse au vecteur d'interruption spécifié.........................................................................................................89
SETTIME SetTime(heure, minute, seconde, sec100 : Word);............................................................................................89
Initialise l'heure courante du système d'exploitation............................................................................................................89
SETVERIFY SetVerify(Var Verify : Boolean);...................................................................................................................89
Configure l'état de l'indicateur VERIFY du DOS................................................................................................................89
UNPACKTIME ....................................................................................................................................................................90
UnPackTime(Pack_D_H : LongInt;Var UnPack_D_H : DateTime);..................................................................................90
Convertit un entier long représentant une date compactée en une variable de type DateTime.Cf PackTime...................90
XVI.4 L’UNITE WINDOS....................................................................................................................90
Elle fournit une interface de type PChar pour les fonctions de gestion fichier de l'unité Dos. Dans la mesure MS-DOS
nécessite des chaînes AZT (à zéro terminal), l'unité WinDos est plus efficace dans les relations avec le MS-DOS que
l'unité Dos...............................................................................................................................................................................90
Aucune des routines de WinDos n'est définie par le standard Pascal..................................................................................90
Un certain nombre de constantes, procédures, fonctions, types et variables de l’unité WINDOS existent et ont déjà été
décrites dans la partie consacrée à l’unité DOS....................................................................................................................90
XVI.4.1 CONSTANTES DE L’UNITE WINDOS...............................................................................90
Constantes fXXXX utilisées pour tester les bits indicateurs du Flag Register (cf unité Dos)............................................90
Constantes de modes fichier (unités WinDos et Dos).........................................................................................................90
Les procédures de gestion de fichier utilisent les constantes du groupe fmXXXX lors de l'ouverture et de la fermeture
des fichiers disque..................................................................................................................................................................90
Les champs de mode de TFileRec et TtextRec contiennent une des valeurs suivantes:.....................................................90
Constante...............................................................................................................................................................................90
Valeur....................................................................................................................................................................................90
fmClosed................................................................................................................................................................................90
$D7B0....................................................................................................................................................................................90
fmInput..................................................................................................................................................................................90
$D7B1....................................................................................................................................................................................90
fmOutput................................................................................................................................................................................90
$D7B2....................................................................................................................................................................................90
fmInOut..................................................................................................................................................................................90
$D7B3....................................................................................................................................................................................90
Constantes d'attributs fichiers (unités WinDos et Dos)......................................................................................................90
Le groupe de constantes faXXXX contrôle les bits d'attributs utilisés avec GetFAttr, SetFAttr, FindFirst et FindNext . 90
Ces constantes s'additionnent. faAnyFile est la somme de tous les attributs......................................................................90
Constante WinDos.................................................................................................................................................................90
Valeur....................................................................................................................................................................................90
Constantes Dos......................................................................................................................................................................90
Valeur....................................................................................................................................................................................90
faReadOnly............................................................................................................................................................................90
$01.........................................................................................................................................................................................90
ReadOnly...............................................................................................................................................................................90
$01.........................................................................................................................................................................................90
faHidden................................................................................................................................................................................90
$02.........................................................................................................................................................................................90
Hidden....................................................................................................................................................................................90
$02.........................................................................................................................................................................................90
faSysFile................................................................................................................................................................................90
$04.........................................................................................................................................................................................90
SysFile...................................................................................................................................................................................90
$04.........................................................................................................................................................................................90
faVolumeID...........................................................................................................................................................................90
$08.........................................................................................................................................................................................90
VolumeId...............................................................................................................................................................................90
$08.........................................................................................................................................................................................90
faDirectory.............................................................................................................................................................................90
$10.........................................................................................................................................................................................90
Directory................................................................................................................................................................................90
$10.........................................................................................................................................................................................90
faArchive...............................................................................................................................................................................90
$20.........................................................................................................................................................................................90
Archive..................................................................................................................................................................................90
$20.........................................................................................................................................................................................90
faAnyFile...............................................................................................................................................................................90
$3F.........................................................................................................................................................................................90
AnyFile..................................................................................................................................................................................90
$3F.........................................................................................................................................................................................90
Constantes de longueurs de membres de nom de fichier (unités WinDos et Dos).............................................................91
Le groupe de constantes fsXXXX détermine les longueurs autorisées pour chaque chaîne composant un nom de fichier
(racine, extension, chemin, répertoire). Elles servent à FileSearch et à FileExpand..........................................................91
WinDos..................................................................................................................................................................................91
Valeur....................................................................................................................................................................................91
Dos.........................................................................................................................................................................................91
Valeur....................................................................................................................................................................................91
fsPathName............................................................................................................................................................................91
79...........................................................................................................................................................................................91
PathStr....................................................................................................................................................................................91
string [79}..............................................................................................................................................................................91
fsDirectory.............................................................................................................................................................................91
67...........................................................................................................................................................................................91
fsDirectory.............................................................................................................................................................................91
string [67]...............................................................................................................................................................................91
fsFileName.............................................................................................................................................................................91
8.............................................................................................................................................................................................91
fsFileName.............................................................................................................................................................................91
string [8].................................................................................................................................................................................91
fsExtension............................................................................................................................................................................91
4.............................................................................................................................................................................................91
fsExtension............................................................................................................................................................................91
string [4].................................................................................................................................................................................91
ComStr...................................................................................................................................................................................91
string [127].............................................................................................................................................................................91
Constantes renvoyées par FileSplit (unité WinDos).............................................................................................................91
Le groupe de constantes fcXXXX sert à la fonction FileSplit.............................................................................................91
La valeur renvoyée est une combinaison des champs binaires fcDirectory, fcFileName et fcExtension . Elle décrit les
composants présents dans la spécification.............................................................................................................................91
Si le nom ou l'extension contiennent un caractère générique (* ou ?), fcWildcards est armé...........................................91
Constante...............................................................................................................................................................................91
Valeur....................................................................................................................................................................................91
fcExtension............................................................................................................................................................................91
$0001.....................................................................................................................................................................................91
fcFileName............................................................................................................................................................................91
$0002.....................................................................................................................................................................................91
fcDirectory.............................................................................................................................................................................91
$0004.....................................................................................................................................................................................91
fcWildcards............................................................................................................................................................................91
$0008.....................................................................................................................................................................................91
XVI.4.2 ROUTINES DE L’UNITE WINDOS (par catégories)...........................................................91
CreateDir CreateDir(Dir: PChar)..........................................................................................................................................91
Réalise le même travail que MkDir, mais en manipulant des chaînes AZT (à zéro terminal) et non des chaînes Pascal
standard...................................................................................................................................................................................91
GetCurDir GetCurDir(Rep: PChar; Unite: Byte): PChar;....................................................................................................91
La chaîne renvoyée dans Rep commence toujours par une lettre d'unité de disque, un symbole : et une barre oblique
inverse. Pour Unite, la valeur 0 représente l'unité courante, la valeur 1 représente l'unité A, la valeur 2 l'unité B, et ainsi
de suite. La valeur renvoyée est identique à Rep. Les erreurs sont renvoyées dans DosError............................................91
RemoveDir RemoveDir(Rep: PChar);..................................................................................................................................92
Le sous-répertoire désigné par le chemin d'accès Rep est supprimé. Les erreurs éventuelles...........................................92
(sous-répertoire inexistant ou non vide) sont signalées dans DosError...............................................................................92
SetCurDir SetCurDir(Rep: PChar).......................................................................................................................................92
Si le paramètre Rep comporte une lettre d'unité de disque, celle-ci est également adoptée comme nouvelle unité
courante..................................................................................................................................................................................92
GetArgCount GetArgCount :Integer ;................................................................................................................................92
Renvoie le nombre de paramètres transmis au programme sur la ligne de commande......................................................92
GetArgStr GetArgStr(Dest: PChar; Numero: Integer;LongMax: Word): PChar;...............................................................92
Renvoie le paramètre de la ligne de commande désigné par Numero.................................................................................92
Si Numero est inférieur à zéro ou supérieur à la valeur de GetArgCount, GetArgStr renvoie une chaîne vide. Si Numero
est égal à zéro, GetArgStr renvoie le nom de fichier du module courant. La valeur est renvoyée dans Dest et sa longueur
maximum est LongMax.........................................................................................................................................................92
GetEnvVar GetEnvVar(NomVar: PChar): PChar;..............................................................................................................92
Renvoie un pointeur sur la valeur de la variable d'environnement spécifiée.....................................................................92
Si la variable d'environnement spécifiée n'existe pas, GetEnvVar renvoie nil...................................................................92
FileExpand FileExpand(Dest, Source: PChar): PChar;........................................................................................................92
Etend un nom de fichier en le transformant en spécification absolue d'accès....................................................................92
Convertit le nom de fichier indiqué dans Source en une spécification absolue d'accès, écrite en.....................................92
lettres majuscules. Cette spécification se compose d'une lettre d'unité logique, d'un signe :, d'une suite de noms de
répertoires (séparés par des barres obliques inverses \) et d'un nom de fichier. Les références relatives spéciales '.' et '..'
éventuellement présentes sont supprimées. Les noms ont au maximum 8 caractères et les extensions 3 caractères. Le
résultat est renvoyé dans Dest. Les paramètres Dest et Source peuvent pointer sur le même emplacement en mémoire. 92
La fonction FileSplit peut être utilisée ensuite pour subdiviser le résultat renvoyé par FileExpand en 3 chaînes, l'une
pour l'unité et les répertoires, une autre pour le nom du fichier et une dernière pour l'extension.......................................92
FileSearch FileSearch(Dest, Nom, Liste: PChar): PChar;...................................................................................................93
Recherche le fichier spécifié par Nom dans la liste de répertoires. Les répertoires doivent être séparés les uns des autres
par des points-virgules............................................................................................................................................................93
FileSplit FileSplit(Chemin, Rep, Nom, Ext: PChar): Word.................................................................................................93
Cette procédure subdivise la spécification complète d'accès à un fichier désignée par Chemin en ses trois composantes.
.................................................................................................................................................................................................93
Rep reçoit le nom d'unité logique (disque) et la suite de répertoires menant au fichier, barres obliques inverses (\)
initiales et finales comprises..................................................................................................................................................93
Nom reçoit le nom de base du fichier...................................................................................................................................93
Ext son extension précédée d'un point..................................................................................................................................93
Si l'un des paramètres chaîne élément vaut nil, la partie correspondante du chemin n'est pas mémorisée. Si le chemin ne
contient pas l'une des composantes, la chaîne correspondante est renvoyée à vide. Les longueurs maximales des chaînes
composantes renvoyées dans Rep, Nom et Ext sont définies par les trois constantes fsDirectory, fsFileName et
fsExtension.............................................................................................................................................................................93
La valeur renvoyée par la fonction est une combinaison des masques binaires fcDirectory, fcFileName et fcExtension
indiquant quelles composantes ont été trouvées dans le chemin. Si le nom ou l'extension contient des caractères
génériques (* ou ?), l'indicateur binaire fcWildcards est également positionné dans la valeur renvoyée...........................93
XVI.4.3 LES TYPES DE L’UNITE WINDOS....................................................................................93
Structures fichier (types) (unités WinDos et Dos)..........................................................................................................93
Les définitions de structures RECORD internes à Turbo Pascal sont déclarées aussi dans WinDos.................................93
TFileRec s'applique aux fichiers typés et non typés............................................................................................................93
TTextRec s'applique aux fichiers texte.................................................................................................................................93
TYPE.....................................................................................................................................................................................93
{ Fichiers typés et non typés }..............................................................................................................................................93
TFileRec = record.................................................................................................................................................................93
Handle: Word;.....................................................................................................................................................................93
Mode: Word;.......................................................................................................................................................................93
RecSize: Word;...................................................................................................................................................................93
Private: array[1..26] of Byte;..............................................................................................................................................93
UserData: array[1..16] of Byte;..........................................................................................................................................93
Name: array[0..79] of Char;................................................................................................................................................93
end;.........................................................................................................................................................................................93
{ Fichiers texte Textfile record }..........................................................................................................................................94
PTextBuf = ^TTextBuf;........................................................................................................................................................94
TTextBuf = array[0..127] of Char;.......................................................................................................................................94
TTextRec = record................................................................................................................................................................94
Handle: Word;......................................................................................................................................................................94
Mode: Word;........................................................................................................................................................................94
BufSize: Word;.....................................................................................................................................................................94
Private: Word;......................................................................................................................................................................94
BufPos: Word;......................................................................................................................................................................94
BufEnd: Word;.....................................................................................................................................................................94
BufPtr: PTextBuf;.................................................................................................................................................................94
OpenFunc: Pointer;...............................................................................................................................................................94
InOutFunc: Pointer;..............................................................................................................................................................94
FlushFunc: Pointer;..............................................................................................................................................................94
CloseFunc: Pointer;..............................................................................................................................................................94
UserData: array[1..16] of Byte;...........................................................................................................................................94
Name: array[0..79] of Char;.................................................................................................................................................94
Buffer: TTextBuf;.................................................................................................................................................................94
end;.........................................................................................................................................................................................94
TRegisters (type) (unité WinDos).....................................................................................................................................94
Les procédures Intr et MsDos se servent de variables de type TRegisters pour indiquer le contenu des registres en entrée
et lire le contenu des registres en sortie d'une interruption logicielle...................................................................................94
TYPE.....................................................................................................................................................................................94
TRegisters = RECORD........................................................................................................................................................94
CASE Integer OF.................................................................................................................................................................94
0: (AX, BX, CX, DX, BP, SI, DI, DS, ES, Flags: Word);................................................................................................94
1: (AL, AH, BL, BH, CL, CH, DL, DH: Byte);................................................................................................................94
END ;....................................................................................................................................................................................94
END ;....................................................................................................................................................................................94
Notez la partie variante du RECORD pour recadrer les registres sur 8 bits avec ceux sur 16 bits....................................94
TDateTime (type) (unité WinDos)...................................................................................................................................95
Les unités...............................................................................................................................................................................81
Les variables du type TDateTime servent avec UnpackTime et PackTime pour analyser et construire des valeurs
compactées sur 4 octets pour GetFTime, SetFTime, FindFirst et FindNext........................................................................95
TYPE.....................................................................................................................................................................................95
TDateTime = RECORD.......................................................................................................................................................95
Year,Month,Day,Hour,Min,Sec: Word;.............................................................................................................................95
END;.....................................................................................................................................................................................95
TSearchRec (type) (unité WinDos)..................................................................................................................................95
Les routines FindFirst et FindNext se basent sur des variables du type TSearchRec pour scruter les répertoires.............95
TYPE.....................................................................................................................................................................................95
TSearchRec = RECORD......................................................................................................................................................95
Fill: array[1..21] of Byte;....................................................................................................................................................95
Attr: Byte;............................................................................................................................................................................95
Time: Longint;.....................................................................................................................................................................95
Size: Longint;......................................................................................................................................................................95
Name: array[0..12] of Char;................................................................................................................................................95
END;.....................................................................................................................................................................................95
Les informations pour chaque fichier trouvé sont renvoyées dans TSearchRec.................................................................95
Attr contient les attributs (construits avec les constantes adéquates) - Time contient la date et l'heure compactés
(UnpackTime décompacte)....................................................................................................................................................95
Size contient la taille en octets.............................................................................................................................................95
Name contient le nom...........................................................................................................................................................95
Fill est réservé par le DOS et ne doit jamais être altéré.......................................................................................................95
XVI.5 L'UNITE GRAPH.......................................................................................................................96
L'unité GRAPH est une bibliothèque complète comportant plus de 50 routines graphiques.............................................96
ARC Arc(X, Y :Integer; AngleDep, AngleFin, Rayon : Word);.........................................................................................96
Dessine un arc de cercle par rapport au centre de coordonnées X,Y...................................................................................96
BAR Bar(X1, Y1, X2, Y2 : Integer);....................................................................................................................................96
Dessine une barre dans le style et la couleur de remplissage courants................................................................................96
BAR3D Bar3D(X1, Y1, X2, Y2: Integer; Profond : Word;Top: Boolean);........................................................................96
Dessine une pile en 3 dimensions.........................................................................................................................................96
TopOn : Boolean = TRUE { si le haut de l'histogramme doit être en relief }..............................................................96
TopOff : Boolean = FALSE..............................................................................................................................................96
CIRCLE Circle(X, Y: Integer; Rayon: Word);....................................................................................................................96
Dessine un cercle de centre X,Y et de rayon Rayon............................................................................................................96
CLEARDEVICE ClearDevice;.............................................................................................................................................96
Initialise le périphérique graphique de sortie courant et le prépare.....................................................................................96
CLEARVIEWPORT ClearViewPort;...................................................................................................................................96
Efface la fenêtre graphique courante....................................................................................................................................96
DRAWPOLY DrawPoly(NbPoints: Word; Var PolyPoints);..............................................................................................96
Dessine les contours d'un polygone. PolyPoints est un paramètre sans type contenant les coordonnées de chaque
intersection du polygone........................................................................................................................................................96
ELLIPSE Ellipse(X,Y: Integer; AngleDeb, AngleFin:Word; XRayon,YRayon:Word);....................................................96
Dessine un arc elliptique.......................................................................................................................................................96
FILLELLIPSE FillEllipse(X, Y: Integer; XRayon, YRayon: Word);.................................................................................96
Trace une surface elliptique..................................................................................................................................................96
FILLPOLY FillPoly(NbPoints: word; Var PolyPoints);......................................................................................................96
Remplit un polygone.............................................................................................................................................................96
CLOSEGRAPH CloseGraph;................................................................................................................................................96
Désactive le mode graphique................................................................................................................................................96
FLOODFILL FloodFill(X, Y, Border: Word);....................................................................................................................96
Peint une surface délimitée avec le motif de remplissage courant......................................................................................96
DETECTGRAPH DetectGraph(Var Pilote, GraphMode : Integer);....................................................................................96
Vérifie la configuration matérielle et détermine quels sont le pilote et le mode graphique courants................................96
Constante...............................................................................................................................................................................97
Valeur....................................................................................................................................................................................97
Detect.....................................................................................................................................................................................97
0.............................................................................................................................................................................................97
Demande d'auto détection.....................................................................................................................................................97
CGA.......................................................................................................................................................................................97
1.............................................................................................................................................................................................97
MGCA....................................................................................................................................................................................97
2.............................................................................................................................................................................................97
EGA.......................................................................................................................................................................................97
3.............................................................................................................................................................................................97
EGA64...................................................................................................................................................................................97
4.............................................................................................................................................................................................97
EGAMono..............................................................................................................................................................................97
5.............................................................................................................................................................................................97
IBM8514................................................................................................................................................................................97
6.............................................................................................................................................................................................97
HercMono..............................................................................................................................................................................97
7.............................................................................................................................................................................................97
ATT400..................................................................................................................................................................................97
8.............................................................................................................................................................................................97
VGA.......................................................................................................................................................................................97
9.............................................................................................................................................................................................97
PC3270...................................................................................................................................................................................97
10...........................................................................................................................................................................................97
Currentdriver.........................................................................................................................................................................97
-128........................................................................................................................................................................................97
Passé à GetModeRange.........................................................................................................................................................97
CGAC0..................................................................................................................................................................................97
0.............................................................................................................................................................................................97
320x200 ................................................................................................................................................................................97
palette 0 : vert, rouge, jaune; 1 page.....................................................................................................................................97
CGAC1..................................................................................................................................................................................97
1.............................................................................................................................................................................................97
320x200 ................................................................................................................................................................................97
palette 1 : rouge, jaune, vert; 1 page.....................................................................................................................................97
CGAC2..................................................................................................................................................................................97
2.............................................................................................................................................................................................97
320x200 ................................................................................................................................................................................97
palette 2 : vert, rouge, marron; 1 page..................................................................................................................................97
CGAC3..................................................................................................................................................................................97
3.............................................................................................................................................................................................97
320x200 ................................................................................................................................................................................97
palette 3 : cyan, magenta, gris; 1 page.................................................................................................................................97
MCGAC0...............................................................................................................................................................................97
0.............................................................................................................................................................................................97
320x200 ................................................................................................................................................................................97
palette 0 : vert, rouge, jaune; 1 page.....................................................................................................................................97
MCGAC1...............................................................................................................................................................................97
1.............................................................................................................................................................................................97
320x200 ................................................................................................................................................................................97
palette 1 : cyan, magenta, blanc; 1 page...............................................................................................................................97
MCGAC2...............................................................................................................................................................................97
2.............................................................................................................................................................................................97
320x200 ................................................................................................................................................................................97
palette 2 : vert, rouge, marron; 1 page..................................................................................................................................97
MCGAC3...............................................................................................................................................................................97
3.............................................................................................................................................................................................97
320x200 ................................................................................................................................................................................97
palette 3 : vert, rouge, gris; 1 page.......................................................................................................................................97
MCGAMed ...........................................................................................................................................................................97
2.............................................................................................................................................................................................97
640x200.................................................................................................................................................................................97
1 page.....................................................................................................................................................................................97
MCGAHi ..............................................................................................................................................................................97
3.............................................................................................................................................................................................97
640x480 ................................................................................................................................................................................97
1 page.....................................................................................................................................................................................97
EGALo...................................................................................................................................................................................97
0.............................................................................................................................................................................................97
640x200 ................................................................................................................................................................................97
4 pages...................................................................................................................................................................................97
EGAHi...................................................................................................................................................................................97
1.............................................................................................................................................................................................97
640x350 ................................................................................................................................................................................97
16 couleurs; 2 pages ............................................................................................................................................................97
EGA64Lo...............................................................................................................................................................................97
0.............................................................................................................................................................................................97
640x200 ................................................................................................................................................................................97
16 couleurs; 1 page................................................................................................................................................................97
EGA64Hi ..............................................................................................................................................................................97
1.............................................................................................................................................................................................97
640x350 ...............................................................................................................................................................................97
4 couleurs; 1 page..................................................................................................................................................................97
EGAMonoHi .........................................................................................................................................................................97
3.............................................................................................................................................................................................97
640x350.................................................................................................................................................................................97
HercMonoHi..........................................................................................................................................................................97
0.............................................................................................................................................................................................97
720x348 ...............................................................................................................................................................................97
2 pages...................................................................................................................................................................................97
ATT400C0.............................................................................................................................................................................97
0.............................................................................................................................................................................................97
320x200 ................................................................................................................................................................................97
palette 0 : vert, rouge, jaune; 1 page.....................................................................................................................................97
ATT400C1 ...........................................................................................................................................................................97
1.............................................................................................................................................................................................97
320x200 ................................................................................................................................................................................97
palette 1 : rouge, jaune, vert; 1 page.....................................................................................................................................97
ATT400C2.............................................................................................................................................................................97
2.............................................................................................................................................................................................97
320x200 ................................................................................................................................................................................97
palette 2 : vert, rouge, marron; 1 page..................................................................................................................................97
ATT400C3.............................................................................................................................................................................97
3.............................................................................................................................................................................................97
320x200 ................................................................................................................................................................................97
palette 3 : cyan, magenta, gris; 1 page.................................................................................................................................97
ATT400Med .........................................................................................................................................................................97
2.............................................................................................................................................................................................97
640x200.................................................................................................................................................................................97
ATT400Hi..............................................................................................................................................................................97
3.............................................................................................................................................................................................97
640x400.................................................................................................................................................................................97
VGALo..................................................................................................................................................................................97
0.............................................................................................................................................................................................97
640x200 ................................................................................................................................................................................97
16 couleurs 4 pages...............................................................................................................................................................97
VGAMed...............................................................................................................................................................................97
1.............................................................................................................................................................................................97
640x350 ................................................................................................................................................................................97
16 couleurs 2 pages...............................................................................................................................................................97
VGAHi...................................................................................................................................................................................97
2.............................................................................................................................................................................................97
640x480 ................................................................................................................................................................................97
16 couleurs.............................................................................................................................................................................97
VGAHi2.................................................................................................................................................................................97
3.............................................................................................................................................................................................97
640x480 ...............................................................................................................................................................................97
2 couleurs...............................................................................................................................................................................97
PC3270Hi...............................................................................................................................................................................97
0.............................................................................................................................................................................................97
720x350.................................................................................................................................................................................97
IBM8514Lo...........................................................................................................................................................................97
0.............................................................................................................................................................................................97
640x480 ...............................................................................................................................................................................97
256 couleurs; 1 page..............................................................................................................................................................97
IBM8514Hi............................................................................................................................................................................97
0.............................................................................................................................................................................................97
1024x768 ..............................................................................................................................................................................97
256 couleurs; 1 page..............................................................................................................................................................97
GETCOLOR GetColor : Word;............................................................................................................................................98
Renvoie la valeur de la couleur transmise lors du précédent appel àSetColor....................................................................98
GETARCCOORDS GetArcCoords(Var ArcCoords : ArcCoordsType);.............................................................................98
Permet de récupérer les coordonnées utilisées lors du précedent appel à la procédure Arc...............................................98
ArcCoordsType = Record.....................................................................................................................................................98
X, Y : Integer;.......................................................................................................................................................................98
Xs, Ys, Xend, Yend : Word;................................................................................................................................................98
End;........................................................................................................................................................................................98
GETASPECTRATIO GetAspectRatio(Var XAsp, YAsp : Word); ...................................................................................98
Donne la résolution de l'écran graphique à partir de laquelle peut être calculé l'allongement des formes ciculaires (XAsp
/ YAsp)....................................................................................................................................................................................98
GETBKCOLOR GetBkColor : Word;.................................................................................................................................98
Renvoie l'indice dans la palette de la couleur courante du fond d'affichage.......................................................................98
GETDEFAULTPALETTE GetDefaultPalette(Var Pal: PaletteType):PaletteType;...........................................................98
Renvoie l'enregistrement de définition de la palette............................................................................................................98
GETDRIVERNAME GetDriverName : String;...................................................................................................................98
Renvoie une chaîne contenant le nom du pilote graphique courant....................................................................................98
GETFILLPATTERN GetFillPattern(Var FillPattern : FillPaternType);.............................................................................98
Renvoie le dernier motif de remplissage..............................................................................................................................98
FillPatternType = Array[1..8] Of Byte;...............................................................................................................................98
GETFILLSETTINGS GetFillSettings(Var FillInfo: FillSettingsType);.............................................................................98
Permet de récupérer la couleur et le motif de remplissage courants définis par SetFillStyle et SetFillPatern..................98
FillSettingsType = Record....................................................................................................................................................98
Pattern Word;......................................................................................................................................................................98
Color : Word;........................................................................................................................................................................98
End;........................................................................................................................................................................................98
Constante...............................................................................................................................................................................99
Valeur....................................................................................................................................................................................99
EmptyFill...............................................................................................................................................................................99
0.............................................................................................................................................................................................99
{ Couleur de Fond = effacement }.......................................................................................................................................99
SolidFill.................................................................................................................................................................................99
1.............................................................................................................................................................................................99
{Couleur d'avant-plan uniforme }.........................................................................................................................................99
LineFill..................................................................................................................................................................................99
2.............................................................................................................................................................................................99
{ Traits horizontaux }............................................................................................................................................................99
LtSlashFill.............................................................................................................................................................................99
3.............................................................................................................................................................................................99
{ Traits Droit fin ..................................................................................................................................................................99
/ / / }.......................................................................................................................................................................................99
SlashFill.................................................................................................................................................................................99
4.............................................................................................................................................................................................99
{ Traits Droit épais ............................................................................................................................................................99
/ / / }.......................................................................................................................................................................................99
BkSlashFill............................................................................................................................................................................99
5.............................................................................................................................................................................................99
{ Traits Gauche épais............................................................................................................................................................99
\ \ \ }.......................................................................................................................................................................................99
LtBkSlashFill.........................................................................................................................................................................99
6.............................................................................................................................................................................................99
{ Traits Gauche fin................................................................................................................................................................99
\ \ \ }......................................................................................................................................................................................99
HatchFill................................................................................................................................................................................99
7.............................................................................................................................................................................................99
{ Trame }...............................................................................................................................................................................99
XHatchFill.............................................................................................................................................................................99
8.............................................................................................................................................................................................99
{ Trame oblique }..................................................................................................................................................................99
InterLeaveFill........................................................................................................................................................................99
9.............................................................................................................................................................................................99
{ Trame serrée }....................................................................................................................................................................99
WideDotFill...........................................................................................................................................................................99
10...........................................................................................................................................................................................99
{ Points espacés }..................................................................................................................................................................99
CloseDotFill...........................................................................................................................................................................99
11...........................................................................................................................................................................................99
{ Points rapprochés }.............................................................................................................................................................99
UserFill..................................................................................................................................................................................99
12...........................................................................................................................................................................................99
{ Défini par le programmeur }..............................................................................................................................................99
GETGRAPHMODE GetGraphMode : Integer;....................................................................................................................99
Renvoie le mode graphique courant (en fonction du pilote graphique courant).................................................................99
Cf DetectGraph......................................................................................................................................................................99
GETIMAGE GetImage(X1, Y1, X2, Y2: Word; Var BitMap);...........................................................................................99
Sauvegarde une partie d'image graphique dans une mémoire tampon. BitMap est un paramètre sans type dont la taille
doit être supérieure ou égale au nombre de pixels inclus dans le rectangle + 4...................................................................99
GETLINESETTINGS GetLineSettings(Var LigneInfo : lineSettingsType);......................................................................99
Renvoie le style, le motif et l'épaisseur de ligne initialisés par SetLineStyle.....................................................................99
LineSettingsType = Record..................................................................................................................................................99
LineStyle : Word;.................................................................................................................................................................99
Pattern : Word;.....................................................................................................................................................................99
Thickness : Word;................................................................................................................................................................99
End;........................................................................................................................................................................................99
Constante...............................................................................................................................................................................99
Valeur....................................................................................................................................................................................99
SolidLn..................................................................................................................................................................................99
0.............................................................................................................................................................................................99
DottedLn................................................................................................................................................................................99
1.............................................................................................................................................................................................99
CenterLn................................................................................................................................................................................99
2.............................................................................................................................................................................................99
DashedLn...............................................................................................................................................................................99
3.............................................................................................................................................................................................99
UserBitLn..............................................................................................................................................................................99
4.............................................................................................................................................................................................99
Style défini par l'utilisateur...................................................................................................................................................99
NormWidth............................................................................................................................................................................99
1.............................................................................................................................................................................................99
ThickWidth............................................................................................................................................................................99
3.............................................................................................................................................................................................99
Triple épaisseur.....................................................................................................................................................................99
GETMAXCOLOR GetMaxColor : Word;..........................................................................................................................100
Renvoie la plus haute valeur de couleur pouvant être transmise à la procédure SetColor...............................................100
GETMAXCODE GetMaxMode : Word;............................................................................................................................100
Renvoie le plus grand numéro de mode supporté par le pilote courant.............................................................................100
GETMAXX GetMaxX : Integer;........................................................................................................................................100
Renvoie le numéro de la colonne la plus à droite..............................................................................................................100
GETMAXY GetMaxY : Integer;........................................................................................................................................100
Renvoie le numéro de la ligne la plus basse. .....................................................................................................................100
GETMODENAME GetModeName(NumeroMode: Word) : String;.................................................................................100
Renvoie une chaîne de caractères contenant le nom du mode graphique spécifié............................................................100
GETMODERANGE............................................................................................................................................................100
GetModeRange(PiloteGrafic: Integer; Var ModeInf, ModeSup: Integer);........................................................................100
Renvoie la plus grande et la plus petite valeur de mode graphique supportées par le pilote spécifié..............................100
Cf DetectGraph....................................................................................................................................................................100
GETPALETTE GetPalette(Var Palette: PaletteType);......................................................................................................100
Renvoie la palette courante et sa taille...............................................................................................................................100
PaletteType = Record..........................................................................................................................................................100
Size : Byte;.........................................................................................................................................................................100
Colors : Array[0..MaxColors] Of Shortint;........................................................................................................................100
End;......................................................................................................................................................................................100
GETPALETTESIZE GetPaletteSize : Word;.....................................................................................................................100
Renvoie la taille de la table de conversion de la palette de couleurs................................................................................100
GETPIXEL GetPixel(X, Y: Integer) : Word;.....................................................................................................................100
Renvoie la valeur du pixel situé en X,Y.............................................................................................................................100
GETTEXTSETTINGS GetTextSettings(Var TextInfo : TextSettingsType);..................................................................101
Renvoie les différentes valeurs courantes de configuration d'affichage de texte : police, taille et justification..............101
TextSettingsType = Record................................................................................................................................................101
Font : Word;.......................................................................................................................................................................101
Direction : Word;...............................................................................................................................................................101
CharSize : Word;................................................................................................................................................................101
Horiz : Word;......................................................................................................................................................................101
Vert : Word;........................................................................................................................................................................101
End; .....................................................................................................................................................................................101
Constante.............................................................................................................................................................................101
Valeur..................................................................................................................................................................................101
DefaultFont..........................................................................................................................................................................101
0...........................................................................................................................................................................................101
Police en matrice 8x8 bits...................................................................................................................................................101
TriplexFont..........................................................................................................................................................................101
1...........................................................................................................................................................................................101
Polices vectorielles..............................................................................................................................................................101
SmallFont.............................................................................................................................................................................101
2...........................................................................................................................................................................................101
SansSeriFont........................................................................................................................................................................101
3...........................................................................................................................................................................................101
GothicFont...........................................................................................................................................................................101
4...........................................................................................................................................................................................101
HorizDir...............................................................................................................................................................................101
0...........................................................................................................................................................................................101
De gauche à droite...............................................................................................................................................................101
VertDir.................................................................................................................................................................................101
1...........................................................................................................................................................................................101
De haut en bas.....................................................................................................................................................................101
UserCharSize.......................................................................................................................................................................101
0...........................................................................................................................................................................................101
Taille de caractère modifiable............................................................................................................................................101
GETVIEWSETTINGS GetViewSettings(Var ViewPort: ViewPortType);......................................................................101
Permet de récupérer les coordonnées de la fenêtre graphique active ainsi que les paramètres définis par SetViewPort.
...............................................................................................................................................................................................101
ViewPortType = Record......................................................................................................................................................101
X1, Y1, X2, Y2 : Integer;...................................................................................................................................................101
Clip : Boolean;...................................................................................................................................................................101
End;......................................................................................................................................................................................101
GETX GetX : Integer;.........................................................................................................................................................101
Renvoie la coordonnée X de la position courante..............................................................................................................101
GETY GetY : Integer;.........................................................................................................................................................101
Renvoie la coordonnée Y de la position courante..............................................................................................................101
GRAPHDEFAULTS GraphDefaults;.................................................................................................................................101
Réinitialise la configuration du mode graphique...............................................................................................................101
GRAPHERRORMSG GraphErrorMsg(CodeErreur: Integer) : String;.............................................................................101
Renvoie le message d'erreur correspondant au code d'erreur indiqué...............................................................................101
GRAPHRESULT GraphResult : Integer;...........................................................................................................................101
Renvoie le code d'erreur de la dernière opération graphique.............................................................................................101
Codes d'erreurs renvoyés par la fonction GraphResult......................................................................................................102
GrOk....................................................................................................................................................................................102
0...........................................................................................................................................................................................102
pas d'erreur...........................................................................................................................................................................102
GrNoInitGraph.....................................................................................................................................................................102
-1..........................................................................................................................................................................................102
graphique non installé.........................................................................................................................................................102
GrNotDetected.....................................................................................................................................................................102
-2..........................................................................................................................................................................................102
équipement graphique non détecté.....................................................................................................................................102
GrFileNotFound...................................................................................................................................................................102
-3..........................................................................................................................................................................................102
fichier du pilote graphique introuvable...............................................................................................................................102
GrInvalidDriver...................................................................................................................................................................102
-4..........................................................................................................................................................................................102
fichier du pilote graphique invalide....................................................................................................................................102
GrNoLoadMem...................................................................................................................................................................102
-5..........................................................................................................................................................................................102
mémoire insuffisante pour charger le pilote.......................................................................................................................102
GrNoScanMem....................................................................................................................................................................102
-6..........................................................................................................................................................................................102
dépassement de capacité mémoire (type scan)...................................................................................................................102
GrNoFloodMem..................................................................................................................................................................102
-7..........................................................................................................................................................................................102
dépassement de capacité mémoire (type flood) ................................................................................................................102
GrFontNotFound..................................................................................................................................................................102
-8..........................................................................................................................................................................................102
fichier de police de caractères non trouvé..........................................................................................................................102
GrNoFontMem....................................................................................................................................................................102
-9..........................................................................................................................................................................................102
mémoire insuffisante pour charger la police......................................................................................................................102
GrInvalidMode....................................................................................................................................................................102
-10........................................................................................................................................................................................102
mode graphique invalide pour le pilote sélectionné...........................................................................................................102
GrError.................................................................................................................................................................................102
-11........................................................................................................................................................................................102
erreur graphique...................................................................................................................................................................102
GrIOerror.............................................................................................................................................................................102
-12........................................................................................................................................................................................102
erreur d'entrées/sorties graphique.......................................................................................................................................102
GrInvalidFont......................................................................................................................................................................102
-13........................................................................................................................................................................................102
fichier de police invalide.....................................................................................................................................................102
GrInvalidFontNum..............................................................................................................................................................102
-14........................................................................................................................................................................................102
numéro de police invalide...................................................................................................................................................102
GrInvalidDeviceNum..........................................................................................................................................................102
-15........................................................................................................................................................................................102
erreur de numéro de pilote graphique.................................................................................................................................102
IMAGESIZE ImageSize(X1, Y1, X2, Y2: Integer) : Word;..............................................................................................102
Renvoie le nombre d'octets nécessaires pour stocker une zone rectangulaire de l'écran..................................................102
INITGRAPH .......................................................................................................................................................................102
InitGraph(Var GraphPilote: Integer;Var GraphMode: Integer;CheminPilote : String);...................................................102
Initialise le système graphique et configure le matériel dans un mode graphique............................................................102
Cf DetectGraph....................................................................................................................................................................102
INSTALLUSERDRIVER ..................................................................................................................................................102
InstallUserDriver(Nom:String;AutoDetectPtr:Pointer) : Word;.....................................................................................102
Ajoute un pilote de périphérique supplémentaire dans la table des pilotes de périphériques gérée par le système
graphique BGI. Affecte et renvoie un numéro de pilote.....................................................................................................102
INSTALLUSERFONT InstallUserFont(NomFichierPolice:String):Integer;....................................................................102
Insère une nouvelle police de caractères graphique dans le système BGI........................................................................102
LINE Line(X1, Y1, X2, Y2: Integer);................................................................................................................................102
Trace une ligne du point (X1,Y1) au point (X2,Y2)..........................................................................................................102
LINEREL LineRel(Dx, Dy);...............................................................................................................................................102
Trace une ligne de la position courante (PC) jusqu'à un point dont les coordonnées sont exprimées relativement à cette
position courante..................................................................................................................................................................102
LINETO LineTo(X, Y: Integer);........................................................................................................................................102
Trace une ligne à partir de la position courante jusqu'au point de coordonnées (X, Y)...................................................102
MOVEREL MoveRel(Dx, Dy: Integer);............................................................................................................................103
Déplace le pointeur courant (PC) relativement à sa position courante..............................................................................103
MOVETO MoveTo(X, Y: Integer);....................................................................................................................................103
Place le pointeur courant aux coordonnées (X, Y).............................................................................................................103
OUTTEXT OutText(Texte: String);...................................................................................................................................103
Envoie une chaîne de caractères au périphérique de sortie, à la position courante..........................................................103
Le pointeur courant est modifié en fonction des caractéristiques de la chaîne de caractères (hauteur et largeur)..........103
OUTTEXTXY OutTextXY(X, Y: Integer; Texte: String);................................................................................................103
Envoie une chaîne de caractères au périphérique de sortie aux coordonnées (X, Y)........................................................103
OutTextXY ne met pas à jour le pointeur courant.............................................................................................................103
PIESLICE PieSlice(X, Y: Integer; AngleDeb, AngleFin, Rayon : Word);.......................................................................103
Trace et remplit un diagramme par secteurs......................................................................................................................103
PUTIMAGE PutImage(X, Y: Integer; Var BitMap; BitBlt:Word);..................................................................................103
Affiche une image binaire (par pixels)...............................................................................................................................103
Constante.............................................................................................................................................................................103
Valeur..................................................................................................................................................................................103
CopyPut...............................................................................................................................................................................103
0...........................................................................................................................................................................................103
MOV....................................................................................................................................................................................103
(NormalPut en TP 5.5)........................................................................................................................................................103
XorPut..................................................................................................................................................................................103
1...........................................................................................................................................................................................103
XOR.....................................................................................................................................................................................103
OrPut....................................................................................................................................................................................103
2...........................................................................................................................................................................................103
OR........................................................................................................................................................................................103
AndPut.................................................................................................................................................................................103
3...........................................................................................................................................................................................103
AND.....................................................................................................................................................................................103
NotPut..................................................................................................................................................................................103
4...........................................................................................................................................................................................103
NOT.....................................................................................................................................................................................103
PUTPIXEL PutPixel(X, Y: Integer; PixelCoul: Word);....................................................................................................103
Redessine un pixel en (X, Y)..............................................................................................................................................103
RECTANGLE Rectangle(X1, Y1, X2, Y2: Integer);........................................................................................................103
Dessine un rectangle............................................................................................................................................................103
REGISTERBGIDRIVER ...................................................................................................................................................103
RegisterBGIdriver(Pilote: Pointer): Integer;......................................................................................................................103
Enregistre un fichier pilote graphique. En cas d'erreur, la valeur renvoyée est inférieure à 0, sinon, elle correspond au
numéro de gestion du pilote. ...............................................................................................................................................103
REGISTERBGIFONT RegisterBGIfont(Police: Pointer): Integer;..................................................................................103
Enregistre un fichier de police de caractères. En cas d'erreur, la valeur renvoyée est inférieure à 0, sinon, elle
correspond au numéro assigné à la police...........................................................................................................................103
RESTORECRTMODE RestoreCrtMode;...........................................................................................................................103
Restaure le mode d'affichage dans l'état précédant l'initialisation du mode graphique....................................................103
SECTOR ............................................................................................................................................................................104
Sector(X, Y: Integer;AngleDeb, AngleFin, XRayon, YRayon: Word);...........................................................................104
Dessine et remplit un secteur elliptique..............................................................................................................................104
SETACTIVEPAGE SetActivePage(Page: Word);.............................................................................................................104
Choisit la page active pour les sorties graphiques..............................................................................................................104
SETALLPALETTE SetAllPalette(Var palette);................................................................................................................104
Change toutes les couleurs de la palette spécifiée.............................................................................................................104
SETASPECTRATIO SetAspectRatio(XAsp, YAsp: Word);.............................................................................................104
Modifie le facteur de correction des proportions de l'écran...............................................................................................104
SETBKCOLOR SetBkColor(Couleur: Word);...................................................................................................................104
Définit la couleur de fond en vigueur dans la palette........................................................................................................104
SETCOLOR SetColor(couleur: Word);..............................................................................................................................104
Définit la couleur de dessin courante dans la palette.........................................................................................................104
SETFILLPATTERN SetFillPattern(Pattern: FillPatternType;Couleur: Word);...............................................................104
Sélectionne un motif et une couleur de remplissage définis par le programmeur............................................................104
SETFILLSTYLE SetFillStyle(Pattern: Word; Couleur: Word);.......................................................................................104
Définit la couleur et le motif de remplissage. ...................................................................................................................104
Cf GetFillSettings................................................................................................................................................................104
SETGRAPHBUFSIZE SetGraphBufSize(TailleTampon: Word);....................................................................................104
Permet de modifier la taille du tampon utilisé lors des remplissages de type scan et flood.............................................104
SETGRAPHMODE SetGraphMode(Mode: Integer);........................................................................................................104
Place le système en mode graphique et efface l'écran.......................................................................................................104
SETLINESTYLE SetLineStyle(style, Pattern, Epaisseur: Word);....................................................................................104
Choisit la taille et le style de ligne courants. .....................................................................................................................104
Cf GetLineSettings..............................................................................................................................................................104
SETPALETTE SetPalette(Numcoul: Word; Couleur: ShortInt);......................................................................................104
Modifie une des couleurs de la palette...............................................................................................................................104
SETRGBPALETTE SetRGBPalette(CouleurNum,Rouge,Vert,Bleu: Integer);................................................................104
Permet de modifier la palette de couleurs pour les pilotes VGAet IBM8514...................................................................104
SETTEXTJUSTIFY SetTextJustify(Horiz, Vert: Word);..................................................................................................105
Définit le type de justification utilisé par OutText.............................................................................................................105
Constante.............................................................................................................................................................................105
Valeur..................................................................................................................................................................................105
LeftText...............................................................................................................................................................................105
0...........................................................................................................................................................................................105
Justification à gauche..........................................................................................................................................................105
CenterText...........................................................................................................................................................................105
1...........................................................................................................................................................................................105
RightText.............................................................................................................................................................................105
2...........................................................................................................................................................................................105
Justification à droite............................................................................................................................................................105
BottomText..........................................................................................................................................................................105
0...........................................................................................................................................................................................105
CenterText...........................................................................................................................................................................105
1...........................................................................................................................................................................................105
TopText...............................................................................................................................................................................105
2...........................................................................................................................................................................................105
SETTEXTSTYLE SetTextStyle(Police, Direction: Word; Taille: Word);.......................................................................105
Définit la police, le style et le facteur de grossissement des caractères............................................................................105
Cf GetTextSettings..............................................................................................................................................................105
SETUSERCHARSIZE SetUserCharSize(MultX, DivX, MultY, DivY: Word);..............................................................105
Permet de faire varier la largeur et la hauteur des caractères des polices vectorielles.....................................................105
SETVIEWPORT SetViewPort(X1,Y1,X2,Y2: Word; Lim : Boolean);............................................................................105
Définit la fenêtre courante pour les affichages graphiques................................................................................................105
ClipOn : Boolean = TRUE si les affichages sont limités à la fenêtre active.....................................................................105
ClipOff : Boolean= FALSE ...............................................................................................................................................105
SETVISUALPAGE SetVisualPage(Page: Word);.............................................................................................................105
Définit le numéro de la page graphique active...................................................................................................................105
SETWRITEMODE SetWriteMode(ModeEcriture: Integer); ...........................................................................................105
Configure le mode d'écriture pour le tracé de lignes.........................................................................................................105
Cf constantes de PutImage..................................................................................................................................................105
TEXTHEIGHT TextHeight(Texte: String) : Word;...........................................................................................................105
Renvoie la hauteur d'une chaîne exprimée en pixels.........................................................................................................105
TEXTWIDTH TextWidth(Texte: String) : Word;.............................................................................................................105
Renvoie la largeur d'une chaîne exprimée en pixels..........................................................................................................105
XVI.6 L'UNITE PRINTER..................................................................................................................106
L'unité PRINTER permet de faciliter les communications avec l'imprimante.................................................................106
Printer contient une variable fichier de type texte appelée LST, variable qui est associée au périphérique LPT1.........106
............................................................................................................................................................................................106
Exemple:..............................................................................................................................................................................106
Program Essai_Imprimante;...............................................................................................................................................106
Uses ....................................................................................................................................................................................106
Printer;...............................................................................................................................................................................106
Begin...................................................................................................................................................................................106
Writeln(Lst,'BONJOUR');.................................................................................................................................................106
End......................................................................................................................................................................................106
XVI.7 L'UNITE OVERLAY...............................................................................................................106
Le système de recouvrement permet de créer des programmes plus grands que la mémoire disponible. Cette technique
permet de rassembler des parties de programme appelées partiels dans un fichier séparé du fichier principal. A un
moment donné, ces partiels peuvent occuper l'espace mémoire d'autres routines inutiles à cet instant là. .....................106
Ces recouvrements ont lieu dans une région mémoire appelée tampon de recouvrement................................................106
Turbo Pascal gère les partiels au niveau des unités; une unité est la plus petite partie de programme pouvant être
constituée sous forme de partiel...........................................................................................................................................106
Lors de la construction de l'exécutable, Turbo Pascal, en plus du fichier exécutable (.EXE), génère un fichier de
recouvrement (.OVR). Le fichier .EXE contient le 'noyau' (partie statique du programme non recouvrable) et le
fichier .OVR regroupe tous les partiels qui seront chargés puis recouverts.......................................................................106
Le gestionnaire de recouvrement de partiels est implémenté par l'unité standard Overlay..............................................106
Toutes les unités recouvrables doivent comporter la directive {$O+} indiquant que le code peut être recouvert et la
directive {$F+} indiquant que toutes les procédures et fonctions actives doivent être du type à appel long..................106
OVRINIT OvrInit(File_Name : String);.............................................................................................................................106
Initialise le mécanisme de recouvrement de partiels et ouvre le fichier .OVR. Les erreurs éventuelles sont indiquées par
la variable OvrResult............................................................................................................................................................106
OVRINITEMS OvrInitEMS;..............................................................................................................................................106
Charge le fichier de recouvrement en mémoire EMS, si possible.La variable OvrResult indique une erreur éventuelle.
...............................................................................................................................................................................................106
OVRSETBUF OvrSetBuf(Size : LongInt);........................................................................................................................106
Définit la taille du tampon de recouvrement. La variableOvrResult indique une erreur éventuelle................................106
OVRGETBUF OvrGetBuf : LongInt;.................................................................................................................................106
Renvoie la taille actuelle du tampon de recouvrement departiels.....................................................................................106
OVRCLEARBUF OvrClearBuf;.........................................................................................................................................107
Vide le tampon de recouvrement de partiels......................................................................................................................107
OVRSETRETRY OvrSetRetry(Taille : LongInt);.............................................................................................................107
Permet de spécifier la taille de la zone probatoire au sein du tampon de recouvrement. Un partiel est mis en période
probatoire si l'espace qu'il occupe empiète sur les tailles octets avant la fin du tampon...................................................107
OVRGETRETRY OvrGetRetry : LongInt;........................................................................................................................107
Renvoie la taille actuelle de la zone probatoire (0 s'il n'y a pas eu de création de zone probatoire)...............................107
Exemple:..............................................................................................................................................................................107
Contenu du fichier DEMO.PAS..........................................................................................................................................107
{$F+,O+}.............................................................................................................................................................................107
Program Demonstration_Ovr ;............................................................................................................................................107
Uses......................................................................................................................................................................................107
Overlay,Crt,Demo1,Demo2;..............................................................................................................................................107
{$O Demo1}.......................................................................................................................................................................107
{$O Demo2}.......................................................................................................................................................................107
Begin....................................................................................................................................................................................107
ClrScr;.................................................................................................................................................................................107
OvrInit('Demo.OVR');........................................................................................................................................................107
If OvrResult = 0..................................................................................................................................................................107
Then....................................................................................................................................................................................107
Begin..................................................................................................................................................................................107
Write1;..............................................................................................................................................................................107
Write2;..............................................................................................................................................................................107
End.....................................................................................................................................................................................107
Else.....................................................................................................................................................................................107
Writeln('Overlay Error : ',OvrResult);..............................................................................................................................107
End.......................................................................................................................................................................................107
Contenu du fichier DEMO1.PAS........................................................................................................................................108
{$F+,O+}.............................................................................................................................................................................108
Unit Demo1;........................................................................................................................................................................108
Interface...............................................................................................................................................................................108
Procedure Write1;...............................................................................................................................................................108
Implementation....................................................................................................................................................................108
Procedure Write1;................................................................................................................................................................108
Begin...................................................................................................................................................................................108
Writeln('premier partiel');.................................................................................................................................................108
End;.....................................................................................................................................................................................108
End.......................................................................................................................................................................................108
Contenu du fichier DEMO2.PAS........................................................................................................................................108
{$F+,O+}.............................................................................................................................................................................108
Unit Demo2;........................................................................................................................................................................108
Interface...............................................................................................................................................................................108
Procedure Write2;................................................................................................................................................................108
Implementation....................................................................................................................................................................108
Procedure Write2;................................................................................................................................................................108
Begin....................................................................................................................................................................................108
Writeln('deuxième partiel');...............................................................................................................................................108
End;......................................................................................................................................................................................108
End.......................................................................................................................................................................................108
XVII LES TYPES FICHIERS..............................................................................................................................................109
Un fichier est un canal logique à travers lequel le programme peut passer des données. Un fichier peut être soit un
fichier disque, dans ce cas, lecture et écriture sur un support magnétique, soit un organe logique tel que les fichiers pré-
définis Input et Output, c'est-à-dire le clavier et l'écran.....................................................................................................109
Un fichier est constitué d'une séquence de composants de même type. Le nombre de composants d'un fichier (ou la
taille du fichier) n'est pas déterminé dans la définition du fichier. PASCAL garde la trace des accès au fichier grâce à un
pointeur de fichier. Chaque fois qu'un composant est écrit ou lu dans un fichier, le pointeur de fichier est avancé sur le
composant suivant................................................................................................................................................................109
Tous les composants d'un fichier étant de longueur égale, la position d'un composant particulier peut être calculée. Le
pointeur de fichier peut donc être déplacé vers tout composant dans le fichier, procurant ainsi un accès direct à tout
élément..................................................................................................................................................................................109
XVII.1 DEFINITION DU TYPE FICHIER........................................................................................109
Un type fichier est défini par le mot réservé 'File of' suivi par le type des composants de ce fichier. Un identificateur de
fichier est déclaré également par le mot réservé 'File of' suivi par l'identificateur d'un type fichier préalablement défini.
...............................................................................................................................................................................................109
EXEMPLES :......................................................................................................................................................................109
Type.....................................................................................................................................................................................109
ProductName = String[80];................................................................................................................................................109
Product = Record................................................................................................................................................................109
Name : ProductName;.......................................................................................................................................................109
ItemNumber : Real;..........................................................................................................................................................109
InStock : Real;...............................................................................................................................................................109
MinStock : Real;............................................................................................................................................................109
Supplier : Integer;...........................................................................................................................................................109
End;.....................................................................................................................................................................................109
Var.......................................................................................................................................................................................109
ProductFile : FILE of Product;...........................................................................................................................................109
XVII.2 PROCEDURES STANDARD SUR LES FICHIERS TYPES...............................................110
Les types fichiers.................................................................................................................................................................110
Pour les procédures et fonctions suivantes, FilVar est l'identificateur d'une variable fichier...........................................110
ASSIGN Assign(FilVar,Nom_Fic : String);.......................................................................................................................110
Nom_Fic est une expression de type chaîne (nom de fichier valide). Le nom de fichier est affecté à la variable FilVar et
toutes les opérations suivantes sur FilVar affecteront le fichier disque Nom_Fic. ...........................................................110
Si la chaîne Nom_Fic est une chaîne vide, FilVar est associé au fichier d'entrée ou de sortie standard. .......................110
Assign ne doit jamais être utilisé sur un fichier en cours d'utilisation..............................................................................110
REWRITE Rewrite(FilVar);...............................................................................................................................................110
Un nouveau fichier disque dont le nom est assigné à la variable FilVar est crée et préparé pour le traitement. Le
pointeur de fichier est placé au début de ce fichier, c'est- à-dire sur le composant numéro 0. Tout fichier pré-existant
avec le même nom est détruit. Un fichier disque créé par Rewrite est vide, il ne contient aucun élément......................110
RESET Reset(FilVar);.........................................................................................................................................................110
Le fichier disque affecté à FilVar est préparé pour traitement. Le pointeur du fichier est positionné au début de ce
fichier sur le composant numéro 0. FilVar doit référencer un fichier existant, sinon il se produira une erreur
d'entrée/sortie........................................................................................................................................................................110
READ Read(FilVar,Var);....................................................................................................................................................110
Var représente une ou plusieurs variables du type des éléments de FilVar séparées par des virgules. Chaque variable est
lue sur le fichier disque et après chaque opération de lecture le pointeur de fichier est avancé sur le composant suivant.
...............................................................................................................................................................................................110
WRITE Write(FilVar, Var);................................................................................................................................................110
Var représente une ou plusieurs variables du type des éléments de FilVar séparées par des virgules. Chaque variable est
écrite sur le fichier disque et après chaque opération d'écriture le pointeur de fichier est avancé sur le composant suivant.
...............................................................................................................................................................................................110
SEEK Seek(FilVar, N : LongInt);.......................................................................................................................................110
Seek déplace le pointeur de fichier sur le nième composant du fichier référencé par FilVar. N est une expression de type
entier long. La position du premier composant est 0. Pour pouvoir agrandir un fichier on peut déplacer le pointeur un
élément après le dernier élément.........................................................................................................................................110
CLOSE Close(FilVar);........................................................................................................................................................110
Le fichier disque associé à FilVar est fermé et le répertoire du disque est mis à jour pour tenir compte des modifications
apportées au fichier..............................................................................................................................................................110
Remarque: Il est nécessaire de fermer un fichier même si on n'a fait que des opérations de lecture sinon on aurait
rapidement trop de fichiers ouverts à la fois.......................................................................................................................110
DMSI/PROGRAMMATION - 161 -...................................................................................................................................110
ERASE Erase(FilVar);........................................................................................................................................................111
Le fichier disque associé à FilVar est effacé. Erase ne doit jamais être utilisé sur un fichier ouvert..............................111
RENAME Rename(FilVar,Str : String);.............................................................................................................................111
Le fichier disque associé à FilVar est renommé avec l'expression chaîne Str. Les opérations ultérieures sur FilVar
agiront sur le fichier disque portant le nouveau nom. Le répertoire du disque est mis à jour pour montrer les nouveaux
noms......................................................................................................................................................................................111
TRUNCATE Truncate(FilVar);..........................................................................................................................................111
Tronque le fichier à la position courante du pointeur de fichier. Tous les enregistrements situés après le pointeur de
fichier sont supprimés et la position courante dans le fichier devient la fin de fichier......................................................111
CHDIR ChDir(Str : String);................................................................................................................................................111
Change le répertoire courant. Si Str comporte une spécification d'unité logique (disque, disquette etc.), l'unité logique
courante est également modifiée..........................................................................................................................................111
MKDIR MkDir(Str : String);..............................................................................................................................................111
Crée un sous-répertoire.......................................................................................................................................................111
RMDIR RmDir(Str : String);..............................................................................................................................................111
Supprime un sous-répertoire vide.......................................................................................................................................111
GETDIR GetDir(B : Byte;Var Str : String);.......................................................................................................................111
Renvoie le répertoire courant pour le disque spécifié. B est une expression de type entier spécifiant le disque concerné.
B = 0 indiquele disque courant, B = 1 indique le lecteur A, B = 2 le disque B et ainsi de suite.......................................111
XVII.3 FONCTIONS STANDARD SUR LES FICHIERS TYPES...................................................111
EOF Eof(FilVar) : Boolean;................................................................................................................................................111
Fonction booléenne retournant VRAI si le pointeur de fichier pointe après le dernier élément du fichier ou si le fichier
ne contient aucun élément. ..................................................................................................................................................111
FILEPOS FilePos(FilVar) : LongInt;..................................................................................................................................111
Fonction entière retournant la position courante du pointeur de fichier. Le premier composant d'un fichier a le numéro
0............................................................................................................................................................................................111
FILESIZE FileSize(FilVar) : LongInt;...............................................................................................................................111
Fonction entière retournant la taille d'un fichier disque exprimée en nombre d'éléments de ce fichier. Si
FileSize(FilVar) est égale à 0, le fichier est vide................................................................................................................111
IORESULT IOResult : Word;.............................................................................................................................................112
Renvoie une valeur entière informant sur l'état de la dernière opération d'entrée/sortie exécutée. Le contrôle des
entrées/sortie doit être désactivé ({$I-}) pour pouvoir intercepter un code d'erreur. Les codes d'erreur sont indiqués dans
l'annexe B.............................................................................................................................................................................112
XVII.4 UTILISATION DES FICHIERS............................................................................................112
Avant d'utiliser un fichier, la procédure Assign doit être appelée pour affecter le nom du fichier à une variable fichier.
Avant d'effectuer toute opération de lecture ou d'écriture, le fichier doit être ouvert par un appel à Reset ou Rewrite. Cet
appel place le pointeur de fichier sur le premier élément du fichier disque.......................................................................112
Un fichier disque peut être agrandi seulement en ajoutant des composants à la fin du fichier existant. ........................112
Le pointeur de fichier peut être déplacé à la fin du fichier par l'instruction suivante :.....................................................112
Seek(FilVar,FileSize(FilVar));............................................................................................................................................112
XVII.5 FICHIERS TEXTES...............................................................................................................112
Contrairement aux autres types fichiers, les fichiers textes ne sont pas seulement des suites de valeurs de même type.
Bien que les éléments de base d'un fichier texte soient les caractères, ils sont structurés en lignes, chaque ligne étant
terminée par une marque de fin de ligne (séquence CR/LF). Le fichier est de plus terminé par une marque de fin de
fichier (Ctrl-Z). La longueur des lignes étant variable, la position d'une ligne dans un fichier ne peut pas être calculée.
En conséquence, les fichiers texte ne peuvent être manipulés que séquentiellement........................................................112
Le type TEXT est différent du type File Of Char..............................................................................................................112
Une variable fichier texte est déclarée par le mot réservé Text.........................................................................................112
EXEMPLE:.........................................................................................................................................................................112
Var fichier : Text;..............................................................................................................................................................112
Toute opération sur les fichiers doit être précédée par un appel à la procédure Assign et un appel à Reset ou à Rewrite
doit précéder toute opération d'écriture ou de lecture.........................................................................................................112
Rewrite permet de créer un nouveau fichier texte et la seule opération autorisée est l'écriture. .....................................112
Reset est utilisé pour ouvrir un fichier existant en lecture, la seule opération permise sur ce fichier est la lecture
séquentielle. Lorsqu'un nouveau fichier texte est fermé, une marque de fin de fichier est mise à la fin du fichier.........112
L'entrée et la sortie des caractères dans les fichiers textes s'effectuent par les procédures Read et Write. Les procédures
Readln, Writeln et Eoln permettent le traitement des lignes..............................................................................................112
READLN Readln(FilVarTxt);.............................................................................................................................................112
Va au début de la ligne suivante, c'est-à-dire écarte tous les caractères jusque et y compris la séquence CR/LF..........112
WRITELN Writeln(FilVarTxt);..........................................................................................................................................112
Ecrit une marque de fin de ligne, c'est-à-dire une séquence CR/LF dans le fichier texte................................................113
EOF Eof(FilVarTxt) : Boolean;..........................................................................................................................................113
Fonction booléenne retournant VRAI si le pointeur de fichier pointe après le dernier caractère du fichier ou si le fichier
ne contient aucun caractère. Si FilVarTxt est omis, le fichier d'entrée standard est supposé............................................113
EOLN Eoln(FilVarTxt) : Boolean;.....................................................................................................................................113
Fonction booléenne retournant VRAI si la fin de ligne a été atteinte, c'est-à-dire si le pointeur de fichier est positionné
sur le caractère CR de la séquence CR/LF. Si EOF(FilVarTxt) est vrai, alors Eoln(FilVarTxt) est également vrai. Si
FilVarTxt est omis, le fichier d'entrée standard est supposé...............................................................................................113
SEEKEOF SeekEof(FilVarTxt) : Boolean;........................................................................................................................113
Similaire à EOF, mais écarte les blancs, les TABs et les marques de fin de ligne, avant de tester la marque de fin de
fichier. Le résultat est de type Booléen...............................................................................................................................113
SEEKEOLN SeekEoln(FilVarTxt);....................................................................................................................................113
Similaire à Eoln, mais écarte les espaces et les TABs avant de faire le test. Le résultat est de type Booléen................113
FLUSH Flush(FilVarTxt);...................................................................................................................................................113
Flush vide le buffer interne du fichier disque FilVarTxt et assure que le buffer a été écrit sur le disque si une opération
d'écriture a eu lieu depuis la dernière mise à jour du disque. Flush n'a aucun effet sur les fichiers ouverts en lecture....113
APPEND Append(FilVarTxt);............................................................................................................................................113
Procédure ouvrant un fichier texte en mode Ajout. Si FilVarTxt est déjà ouvert, le fichier est d'abord fermé puis ouvert
de nouveau. Le pointeur de fichier est positionné en fin de fichier....................................................................................113
SETTEXTBUF SetTextBuf(FilVarTxt;Var Tamp[;Taille: Word]);..................................................................................113
Procédure permettant d'affecter à la variable FilVarTxt le tampon identifié par la variable Tamp et non plus le tampon
affecté par défaut à FilVarTxt. Taille (de type Word) spécifie la taille du tampon en octets. Si Taille est omis,
SizeOf(Tamp) est présumée.................................................................................................................................................113
XVII.6 FICHIERS NON TYPES........................................................................................................114
Les fichiers non typés sont des canaux d'entrée/sortie de bas niveau, utilisés principalement pour l'accès direct à tout
fichier disque. ......................................................................................................................................................................114
Un fichier sans type est compatible avec tout autre fichier. Dans les opérations d'entrée/sortie sur des fichiers sans type,
les données sont transférées directement entre le fichier disque et la variable, économisant ainsi l'espace nécessaire du
buffer requis pour les fichiers avec type. Un fichier sans type est déclaré avec le mot réservé file.................................114
Var.......................................................................................................................................................................................114
DataFile : file;...................................................................................................................................................................114
Dans le cas des fichiers non typés, les procédures RESET et REWRITE acceptent un paramètre supplémentaire
permettant de spécifier la taille de l'enregistrement utilisé pour les transferts..................................................................114
Reset(FilVar,Taille: Word) et Rewrite(FilVar,Taille: Word);.........................................................................................114
Si Taille est omis, la taille de l'enregistrement est de 128 octets......................................................................................114
BLOCKREAD / BLOCKWRITE.......................................................................................................................................114
Toutes les procédures et les fonctions standards de manipulation de fichiers, excepté Read, Write et Flush sont
autorisées sur les fichiers sans type. Read et Write sont remplacées par deux procédures de transfert à haute vitesse :
BlockRead et BlockWrite....................................................................................................................................................114
BlockRead(FilVar,Var Buf; Quanti: Word);.....................................................................................................................114
BlockWrite(FilVar,Var Buf; Quanti: Word);....................................................................................................................114
ou.........................................................................................................................................................................................114
BlockRead(FilVar,Var Buf; Quanti: Word; Var Result: Word);......................................................................................114
BlockWrite(FilVar,Var Buf; Quanti: Word; Var Result: Word);.....................................................................................114
où Buf est toute variable et Quanti est une expression entière donnant le nombre d'enregistrements de Taille octets à
transférer entre le fichier disque et la variable. Le bloc transféré aura au maximum la taille de Quanti * Taille. Le
paramètre facultatif Result retourne le nombre d'enregistrements réellement transféré. Si Result n'est pas précisé, une
erreur d'entrée/sortie surviendra si le nombre d'enregistrements lus n'est pas égal à Quanti............................................114
Un appel à BlockRead ou BlockWrite avance le pointeur de fichier de Result enregistrements.....................................114
XVII.7 PERIPHERIQUES DANS TURBO PASCAL........................................................................115
TURBO PASCAL et le MS/PC-DOS considèrent les équipements externes tels que le clavier, l'écran et l'imprimante
comme des périphériques. Au niveau programmation, ces périphériques sont traités comme des fichiers......................115
Le périphérique CON..........................................................................................................................................................115
CON se rapporte au périphérique CONsole qui permet d'envoyer des informations vers l'écran et d'en recevoir à partir
du clavier. Les entrées depuis CON sont 'orientées ligne'. Un caractère de fin de fichier est généré en frappant la
séquence Ctrl-Z....................................................................................................................................................................115
Les périphériques LPT1, LPT2 et LPT3.............................................................................................................................115
La famille LPTx concerne les trois imprimantes que l'on peut utiliser sur le système. Si une seule imprimante est
connectée, elle est référencée LPT1 (synonyme PRN).......................................................................................................115
L'unité standard PRINTER contient la déclaration d'une variable de fichier texte appelée Lst qu'elle associe au
périphérique LPT1................................................................................................................................................................115
Les périphériques COM1 et COM2....................................................................................................................................115
Ces périphériques de communication concernent les deux ports de communication série. Le synonyme de COM1 est
AUX......................................................................................................................................................................................115
Le périphérique NUL..........................................................................................................................................................115
Ce périphérique ignore toute écriture et génère une fin de fichier immédiate. Il peut être utilisé lorsque l'on ne veut pas
créer de fichier particulier....................................................................................................................................................115
Les variables de fichiers texte INPUT et OUTPUT...........................................................................................................115
Ces variables sont disponibles dès le démarrage de tout programme PASCAL. Input correspond à un fichier en lecture
seule associé au clavier et Output à un fichier en écriture seule associé à l'écran.............................................................115
Write(Ch) équivalent à Write(Output,Ch)..........................................................................................................................115
Read(Ch) équivalent à Read(Input,Ch)..............................................................................................................................115
Writeln équivalent à Writeln(Output).................................................................................................................................115
Readln équivalent à Readln(Input).....................................................................................................................................115
Eof équivalent à Eof(Input).................................................................................................................................................115
Eoln équivalent à Eoln(Input).............................................................................................................................................115
XVII.8 ENTREE ET SORTIE DE TEXTE........................................................................................116
Si le premier paramètre d'une procédure d'entrée/sortie est l'identificateur d'une variable représentant un fichier,
l'opération d'entrée/sortie aura lieu sur ce fichier. Dans le cas contraire, l'opération se fera sur les fichiers standards Input
et Output...............................................................................................................................................................................116
PROCEDURE READ..........................................................................................................................................................116
La procédure READ permet l'entrée de caractères, chaînes et de données numériques...................................................116
Read(Var1,Var2,...,VarN).................................................................................................................................................116
ou........................................................................................................................................................................................116
Read(FilVar,Var1,Var2,...,VarN).....................................................................................................................................116
où Var1,Var2,...,VarN sont des variables de type Caractère, Chaîne, Entier, ou Réel....................................................116
Avec une variable de type Char, Read lit un caractère dans le fichier et affecte ce caractère à la variable....................116
Avec une variable de type Chaîne, Read lit tous les caractères jusqu'au prochain indicateur de fin de ligne (ce dernier
exclus). Si cette chaîne est plus longue que la chaîne destinataire, la chaîne est tronquée. .............................................116
Avec une variable numérique, Read attend une chaîne de caractères se conformant au format d'une constante numérique
du type adéquat. Tous les caractères délimiteurs (espaces, tabulation ou indicateur de fin de ligne) sont ignorés. La
lecture s'arrête soit au premier caractère délimiteur soit lorsque Eof(FilVar) devient vrai. .............................................116
PROCEDURE READLN....................................................................................................................................................116
La procédure Readln est identique à la procédure Read, excepté que lorsque la dernière variable a été lue, le reste de la
ligne est ignoré. Tous les caractères, jusque et y compris la prochaine séquenceCR/LF sont écartés..............................116
Readln(Var1,Var2,...,VarN);.............................................................................................................................................116
ou........................................................................................................................................................................................116
Readln(FilVar,Var1,Var2,...,VarN)..................................................................................................................................116
Readln peut également être appelé sans paramètre. Dans ce cas, le reste de la ligne est écarté et le retour chariot est
envoyé à l'écran comme une séquence CR/LF....................................................................................................................116
PROCEDURE WRITE........................................................................................................................................................117
La procédure Write permet la sortie de caractères, chaînes, de valeurs booléennes et de valeurs numériques...............117
Write(Var1,Var2,...,VarN)................................................................................................................................................117
ou........................................................................................................................................................................................117
Write(FilVar,Var1,Var2,...,VarN)....................................................................................................................................117
où Var1,Var2,...,VarN (les paramètres d'écriture) sont des variables du type Char, Chaîne, Booléen, Entier ou Réel
suivies éventuellement du signe : et d'une expression définissant les paramètres d'écriture. ...........................................117
Un paramètre d'écriture peut prendre la forme : ExprSortie [:TailleMini [:NbDecimal ]]...............................................117
ExprSortie représente une expression de sortie. TailleMini et NbDecimal sont des expressions de type entier.............117
TailleMini spécifie la taille minimum du champ et doit être supérieure à 0. A moins que ExprSortie ne soit représentée
par plus de caractères que TailleMini, TailleMini caractères seront écrits dans le fichier (en ajoutant des espaces au
préalable si nécessaire). Si la longueur de ExprSortie est supérieure à TailleMini, le nombre de caractères nécessaires à
la représentation de ExprSortie sera écrit............................................................................................................................117
NbDecimal précise le nombre de décimales demandé pour une valeur de type réel en notation à virgule fixe. Cette
option ne peut être spécifié que si ExprSortie est de type réel et si TailleMini est elle aussi spécifiée. Si NbDecimal est
omis, une valeur à virgule flottante convertie en chaîne est écrite. ...................................................................................117
Si TailleMini est également omise, une taille de 17 est utilisée par défaut. Si TailleMini est inférieure à 8, sa valeur est
ramenée à 8...........................................................................................................................................................................117
Composants d'une chaîne de sortie avec une valeur de type réel :....................................................................................117
[ | -]....................................................................................................................................................................................117
" " ou "-" suivant le signe de ExprSortie.............................................................................................................................117
<chiffre>..............................................................................................................................................................................117
un seul chiffre, "0" si ExprSortie = 0..................................................................................................................................117
<décimales>.........................................................................................................................................................................117
chaîne de chiffres de TailleMini - 7 (mais au plus 10) chiffres.........................................................................................117
E...........................................................................................................................................................................................117
Lettre "E" en majuscule......................................................................................................................................................117
[ + | -]..................................................................................................................................................................................117
Suivant le signe de l'exposant.............................................................................................................................................117
<exposant>...........................................................................................................................................................................117
Nombre à 2 chiffres.............................................................................................................................................................117
Composants d'une chaîne en format à virgule fixe :..........................................................................................................117
[<espaces>]..........................................................................................................................................................................117
Espaces pour ajuster à TailleMini.......................................................................................................................................117
[ - ].......................................................................................................................................................................................117
Si ExprSortie est négative...................................................................................................................................................117
<Chiffres>............................................................................................................................................................................117
Au moins un chiffre, mais pas de 0 en tête.........................................................................................................................117
[<décimales>]......................................................................................................................................................................117
Décimales, si NbDecimal > 0.............................................................................................................................................117
Dans les descriptions suivantes, les symboles :..................................................................................................................117
I,m,n ....................................................................................................................................................................................117
représentent une expression entière....................................................................................................................................117
R...........................................................................................................................................................................................118
représente une expression Réelle........................................................................................................................................118
Ch.........................................................................................................................................................................................118
représente une expression Char...........................................................................................................................................118
S...........................................................................................................................................................................................118
représente une expression Chaîne.......................................................................................................................................118
B...........................................................................................................................................................................................118
représente une expression Booléenne.................................................................................................................................118
Ch.........................................................................................................................................................................................118
Le caractère Ch est sorti......................................................................................................................................................118
Ch:n......................................................................................................................................................................................118
Le caractère Ch est sorti, justifié à droite dans un champ de n caractères........................................................................118
S...........................................................................................................................................................................................118
La chaîne S est sortie. Les tableaux de caractères peuvent être également sortis.............................................................118
S:n........................................................................................................................................................................................118
La chaîne S est sortie, justifiée à droite dans un champ de n caractères...........................................................................118
B...........................................................................................................................................................................................118
En fonction de la valeur de B, le mot TRUE ou FALSE est sorti.....................................................................................118
B:n........................................................................................................................................................................................118
TRUE ou FALSE est sorti, justifié à droite dans un champ de n caractères.....................................................................118
I............................................................................................................................................................................................118
La représentation décimale de la valeur de I est sortie......................................................................................................118
I:n.........................................................................................................................................................................................118
La représentation décimale de la valeur de I est sortie, justifiée à droite dans un champ de n caractères.......................118
R...........................................................................................................................................................................................118
La représentation décimale de R est sortie dans un champ de 17 caractères, en utilisant la notation en virgule flottante.
...............................................................................................................................................................................................118
Pour R >= 0.0,le format est _#.##########E*##..............................................................................................................118
Pour R < 0.0,le format est - #.##########E*##................................................................................................................118
où _ représente un espace, le signe # représente un digit et * représente le signe + ou -................................................118
R:n........................................................................................................................................................................................118
La représentation décimale de la valeur de R est sortie, justifiée à droite dans un champ de n caractères. ...................118
Pour R >= 0.0 blancs#.digitsE*##......................................................................................................................................118
Pour R < 0.0 blancs-#.digitsE*##.......................................................................................................................................118
où blancs représente zéro ou plusieurs espaces, digits représente de un à dix chiffres.....................................................118
R:n:m...................................................................................................................................................................................118
La représentation décimale de la valeur de R est sortie, justifiée à droite dans un champ de n caractères avec m digits
après le point décimal. m doit être dans l'intervalle 0..11. Si m est supérieur à 11, sa valeur est ramenée à 11..............118
PROCEDURE WRITELN..................................................................................................................................................118
La procédure Writeln est identique à la procédure Write, excepté qu'une séquence CR/LF est sortie après la dernière
valeur....................................................................................................................................................................................118
Writeln(Var1,Var2,...,VarN)..............................................................................................................................................118
ou.........................................................................................................................................................................................118
Writeln(FilVar,Var1,Var2,...,VarN)..................................................................................................................................118
Une instruction Writeln sans paramètres d'écriture écrit seulement une ligne vide consistant en une séquence CR/LF.
...............................................................................................................................................................................................118
XVIII LE TYPE POINTEUR...............................................................................................................................................119
Un type fichier permet de regrouper des informations de même type et en nombre indéterminé sur un support externe
(disque, bande, etc...). Le type pointeur offre la même possibilité mais sur un support interne : la mémoire.................119
Il est possible en cours d'exécution de demander des zones mémoires pour mettre de nouvelles variables. Ces variables
sont appelées variables dynamiques par opposition aux variables statiques utilisées jusqu'à présent..............................119
Ces variables dynamiques ne sont pas déclarées dans une déclaration de variables comme pour des variables statiques et
elles ne peuvent pas être référencées directement par un identificateur. Au contraire, une variable spéciale contenant
l'adresse mémoire de la variable est utilisée pour pointer vers cette variable. Cette variable spéciale est appelée variable
pointeur.................................................................................................................................................................................119
XVIII.1 DEFINITION D'UNE VARIABLE POINTEUR..................................................................119
A chaque variable dynamique de type X est associée un objet de type^X appelé pointeur sur X, il contient l'adresse de
la variable dynamique..........................................................................................................................................................119
L'exemple suivant montre comment déclarer un enregistrement et les pointeurs associés..............................................119
Type....................................................................................................................................................................................119
Lien = ^Personne;..............................................................................................................................................................119
Personne = Record............................................................................................................................................................119
Nom : String[15];.............................................................................................................................................................119
Prenom : String[15];.........................................................................................................................................................119
Emploi : String[40];.........................................................................................................................................................119
Suivant : Lien;..................................................................................................................................................................119
End;....................................................................................................................................................................................119
Var......................................................................................................................................................................................119
Premier, Pcourant : Lien;.................................................................................................................................................119
Remarque : Cette construction n'est rendue possible que par une exception à la règle d'ordonnancement qui oblige à
déclarer un identificateur avant son utilisation....................................................................................................................119
Les variables Premier et Pcourant sont donc des variables pointeurs qui peuvent pointer sur des enregistrements de type
Personne................................................................................................................................................................................119
XVIII.2 ALLOCATION DES VARIABLES - NEW - GETMEM....................................................120
Avant de pouvoir utiliser une variable pointeur, nous devons avoir des variables sur lesquelles pointer. Les nouvelles
variables de tout type sont créées avec les procédures standards New ou GetMem..........................................................120
Syntaxe des procédures New et GetMem :........................................................................................................................120
Procedure New(Var P : Pointer);........................................................................................................................................120
Procedure GetMem(Var P : Pointer; Taille : Word);.........................................................................................................120
où P est une variable pointeur (pointant sur une variable de n'importe quel type) et Taille une expression de type Word
spécifiant la taille en octets de la variable dynamique à allouer. Dans le cas de New, la taille du bloc mémoire alloué
correspond à la taille de la variable pointée par P. La variable nouvellement créée peut être référencée par P^............120
Une nouvelle variable du type Personne est donc créee par l'instruction :......................................................................120
New(Pcourant);..................................................................................................................................................................120
............................................................................................................................................................................................120
ou par l'instruction :.............................................................................................................................................................120
GetMem(Pcourant,Taille);................................................................................................................................................120
qui a pour effet de faire pointer Pcourant sur un enregistrement du type Personne alloué dynamiquement...................120
Les affectations entre les variables pointeurs sont possibles à condition que les deux pointeurs soient d'un type
identique. Les pointeurs de type identique peuvent être comparés en utilisant les opérateurs relationnels =, <>, qui
retournent une valeur booléenne..........................................................................................................................................120
La valeur de pointeur Nil est une constante symbolique destinée à représenter le cas où une variable pointeur ne fait
référence à aucun élément de type associé. La valeur Nil est compatible avec tous les types pointeurs et peut être utilisée
dans les comparaisons..........................................................................................................................................................120
Les variables créées par la procédure New sont rangées dans une structure de type Pile partant du bas de la mémoire,
appelée le Tas (Heap). .........................................................................................................................................................120
L'origine du tas est mémorisé dans la variable HeapOrg et le haut du tas (correspondant au début de la mémoire
disponible) dans la variable HeapPtr, le pointeur de tas.....................................................................................................120
A chaque appel à New ou à GetMem, le pointeur de Tas est déplacé vers le haut de la mémoire libre, d'un nombre
d'octets correspondant à la taille de la nouvelle variable allouée.......................................................................................120
DMSI/PROGRAMMATION - 161 -...................................................................................................................................119
XVIII.3 LIBERATION DE LA MEMOIRE - MARK - RELEASE - DISPOSE - FREEMEM........121
Le type pointeur...................................................................................................................................................................119
Lorsqu'une variable dynamique n'est plus nécessaire dans un programme, les procédures standards MARK et
RELEASE sont utilisées pour récupérer la mémoire utilisée par ces variables.................................................................121
La procédure Mark affecte la valeur du pointeur de tas à une variable............................................................................121
Mark(Var); où Var est une variable pointeur. .................................................................................................................121
La procédure Release donne au pointeur de tas l'adresse de cet argument.......................................................................121
Release(Var);......................................................................................................................................................................121
Var est une variable pointeur préalablement initialisée par Mark. Release supprime donc toutes les variables
dynamiques au-dessus de cette adresse et ne peut pas récupérer de l'espace utilisé par des variables au milieu du tas.. 121
Au lieu de Mark et Release, la procédure DISPOSE du PASCAL STANDARD peut être utilisée pour récupérer de
l'espace dans le Tas..............................................................................................................................................................121
Dispose(Var); où Var est une variable Pointeur...............................................................................................................121
Dispose récupère la mémoire utilisée par une variable pointeur spécifique, alors que Mark/Release récupèrent toute la
partie du Tas à partir d'une variable pointeur spécifique indiquée et au-dessus................................................................121
REMARQUE : Dispose et Mark/Release utilisent des approches totalement différentes de la gestion du Tas. Ils ne
doivent jamais être utilisés en même temps. (voir schéma page suivante) .......................................................................121
FreeMem libère la mémoire d'une variable dynamique d'une certaine taille...................................................................121
Procedure FreeMem(Var P : Pointer; Taille : Word);.......................................................................................................121
Taille doit représenter exactement le même nombre d'octets que la quantité précédemment allouée à cette variable par
GetMem................................................................................................................................................................................121
Le schéma suivant montre le contenu du Tas avant et après l'utilisation de Dispose et de Mark/Release......................121
Tas........................................................................................................................................................................................121
Dispose (Var3);....................................................................................................................................................................121
Mark(Var3);.........................................................................................................................................................................121
Release(Var3);.....................................................................................................................................................................121
Var1.....................................................................................................................................................................................121
Var1.....................................................................................................................................................................................121
Var1.....................................................................................................................................................................................121
Var2.....................................................................................................................................................................................121
Var2.....................................................................................................................................................................................121
Var2.....................................................................................................................................................................................121
Var3.....................................................................................................................................................................................121
Var4.....................................................................................................................................................................................121
Var4.....................................................................................................................................................................................121
Var5.....................................................................................................................................................................................121
Var5.....................................................................................................................................................................................121
Var6.....................................................................................................................................................................................121
Var6.....................................................................................................................................................................................121
XVIII.4 UTILISATION DU TYPE POINTEUR................................................................................121
Les pointeurs permettent la création de structures de données complexes mais souples. Ils ne nécessitent pas la
connaissance préalable du nombre d'éléments qui seront traités par le programme..........................................................122
Les principales structures de données que l'on peut construire sont les listes à simple chaînage, les listes à double
chaînage, les arbres binaires ou à N branches, etc..............................................................................................................122
Exemple:..............................................................................................................................................................................122
Type....................................................................................................................................................................................122
Lien = ^Personne;..............................................................................................................................................................122
Personne = Record............................................................................................................................................................122
Nom : String[15];.............................................................................................................................................................122
Prenom : String[15];.........................................................................................................................................................122
Suivant : Lien;..................................................................................................................................................................122
End;...................................................................................................................................................................................122
Var......................................................................................................................................................................................122
Premier, Pcourant : Lien;.................................................................................................................................................122
Name : String[15];............................................................................................................................................................122
I,N : Integer;.....................................................................................................................................................................122
Begin...................................................................................................................................................................................122
Premier := Nil;...................................................................................................................................................................122
Write('Entrez un nom : ');.................................................................................................................................................122
ReadLn(Name);.................................................................................................................................................................122
While Not(Name = '') Do..................................................................................................................................................122
Begin..................................................................................................................................................................................122
New(Pcourant);.................................................................................................................................................................122
Pcourant^.Nom := Name;................................................................................................................................................122
Readln(Pcourant^.Prenom);.............................................................................................................................................122
Pcourant^.Suivant := Premier;.........................................................................................................................................122
Premier := Pcourant;........................................................................................................................................................122
Write('Entrez un nom : ');................................................................................................................................................122
ReadLn(Name);................................................................................................................................................................122
End;....................................................................................................................................................................................122
End......................................................................................................................................................................................122
XVIII.5 AUTRES PROCEDURES ET FONCTIONS........................................................................122
MAXAVAIL MaxAvail : LongInt;.....................................................................................................................................122
La fonction standard MaxAvail retourne la taille du plus grand espace disponible dans le Tas, ce qui correspond à la
taille de la plus grande variable dynamique qui puisse être allouée après cette évaluation. ............................................122
MEMAVAIL MemAvail : LongInt;...................................................................................................................................122
La fonction standard MemAvail retourne la somme de tous les blocs de mémoire libres dans le Tas. ..........................122
XVIII.6 LES STRUCTURES NON LINEAIRES..............................................................................123
Les structures non linéaires les plus simples sont les structures d'arbre............................................................................123
QUELQUES DEFINITIONS..............................................................................................................................................123
Un arbre A est un ensemble fini d'éléments appelés nœuds tel que :................................................................................123
Il existe un nœud spécial appelé racine (R)........................................................................................................................123
L'ensemble des nœuds (autres que R) est partagé en M >= 0 ensembles disjoints A1,A2,...AM, qui sont eux-mêmes des
arbres. Les arbres A1,A2,...AM sont appelés sous-arbres de la racine...............................................................................123
Il s'agit là d'une définition récursive, puisqu'un arbre est défini à partir d'autres arbres. La décomposition d'un arbre
conduit finalement à un ensemble de racines (un seul élément). Les nœuds terminaux sont appelés feuilles.................123
Degré d'un nœud : Le nombre de sous-arbres d'un nœud est appelé le degré du nœud Un nœud terminal (ou feuille) a
pour degré 0..........................................................................................................................................................................123
Niveau d'un nœud :· Le niveau d'un nœud se définit par rapport à celui de la racine......................................................123
EXEMPLE:.........................................................................................................................................................................123
A est relié à deux sous-arbres B et C, D, E , F, G, H ; son degré est 2 ............................................................................123
Le degré de C est égal à 3. Le degré de D et F est égal à 1. ............................................................................................123
Le degré de B,G,E,H est égal à 0; il s'agit donc de feuilles...............................................................................................123
Arbres ordonnés: Si l'ordre relatif des sous-arbres A1,A2,...AM est important, l'arbre est dit ordonné..........................123
Arbres orientés: Des arbres qui diffèrent par le seul ordre de leurs sous-arbres sont dits orientés...................................123
Arbres binaires: Un arbre binaire est un ensemble de noeuds qui est soit vide soit composé d'une racine et de deux
arbres binaires disjoints appelés sous-arbre droit et sous-arbre gauche..............................................................................123
XVIII.6.1 CREATION D'UN ARBRE BINAIRE..............................................................................124
Un arbre binaire peut être créé en définissant un type correspondant à un noeud de l'arbre............................................124
Type.....................................................................................................................................................................................124
Pointeur = ^Noeud;............................................................................................................................................................124
Noeud = Record..................................................................................................................................................................124
Nom : String[10];.............................................................................................................................................................124
Gauche : Pointeur;............................................................................................................................................................124
Droit : Pointeur;................................................................................................................................................................124
End;.....................................................................................................................................................................................124
Une telle structure peut être utilisée pour ordonner des éléments, en considérant que le sous-arbre gauche d'un noeud
contient les éléments situés avant l'élément correspondant au noeud tandis que le sous-arbre droit contient les éléments
situés après l'élément associé au noeud...............................................................................................................................124
La procédure ARBRE ci-dessous permet la création d'un arbre binaire...........................................................................124
Program ArbreBin;..............................................................................................................................................................124
Type.....................................................................................................................................................................................124
Mot = String[10];................................................................................................................................................................124
Pointeur = ^Noeud;............................................................................................................................................................124
Noeud = Record..................................................................................................................................................................124
Nom : Mot;.......................................................................................................................................................................124
Gauche : Pointeur;............................................................................................................................................................124
Droit : Pointeur;...............................................................................................................................................................124
End;....................................................................................................................................................................................124
Var.......................................................................................................................................................................................124
Racine : Pointeur;...............................................................................................................................................................124
Element : Mot;....................................................................................................................................................................124
Procedure ARBRE(Var Rac : Pointeur; Elt : Mot);...........................................................................................................124
Begin....................................................................................................................................................................................124
If Rac = Nil ........................................................................................................................................................................124
Then ...................................................................................................................................................................................124
Begin..................................................................................................................................................................................124
New(Rac);.........................................................................................................................................................................124
Rac^.Nom := Elt;.............................................................................................................................................................124
Rac^.Gauche := Nil;.........................................................................................................................................................124
Rac^.Droit := Nil;.............................................................................................................................................................124
End.....................................................................................................................................................................................124
Else ....................................................................................................................................................................................124
If Elt < Rac^.Nom ...........................................................................................................................................................124
Then.................................................................................................................................................................................124
Arbre(Rac^.Gauche,Elt).................................................................................................................................................124
Else..................................................................................................................................................................................124
Arbre(Rac^.Droit,Elt);...................................................................................................................................................124
End;......................................................................................................................................................................................124
XIX NOTIONS DE PROGRAMMATION OBJET............................................................................................................125
XIX.1 GENERALITES SUR LES OBJETS.......................................................................................125
Qu’est-ce qu’un objet ?.......................................................................................................................................................125
Une entité regroupant .........................................................................................................................................................125
les données (constantes, variables) nommées attributs......................................................................................................125
les actions, méthodes sur ces objets....................................................................................................................................125
XIX.1.1 APPROCHE STRUCTURÉE – APPROCHE OBJET..........................................................125
La méthodologie objet est très différente de l’algorithmique structurée. Elle s’appuie sur des méthodes nommées :. . .125
OMT (Object Modeling Technique)...................................................................................................................................125
OOD (Object Oriented Designed).......................................................................................................................................125
MERISE OBJET..................................................................................................................................................................125
UML (Unified Modeling Language)...................................................................................................................................125
Programmation Structurée...................................................................................................................................................125
POO......................................................................................................................................................................................125
- Procédures qui manipulent les données............................................................................................................................125
Object...................................................................................................................................................................................125
Données..............................................................................................................................................................................125
Procédures qui manipulent ces données............................................................................................................................125
Exemple :.............................................................................................................................................................................125
Etude d’un point dans le plan............................................................................................................................................125
Approche structurée :..........................................................................................................................................................125
TYPE.................................................................................................................................................................................125
T_Point = Record.............................................................................................................................................................125
Abscisse, Ordonnee : Integer ;........................................................................................................................................125
End ;..................................................................................................................................................................................125
VAR...................................................................................................................................................................................125
Point : T_Point ;...............................................................................................................................................................125
Procedure Placer(Var P : T_Point ; X,Y : Integer) ;........................................................................................................125
Begin..................................................................................................................................................................................125
P.Abscisse := X ;..............................................................................................................................................................125
P.Ordonnee := Y ;............................................................................................................................................................125
End ;...................................................................................................................................................................................125
Utilisation :.........................................................................................................................................................................125
Placer un point Pt_A en (1,3) s’écrira..............................................................................................................................125
Placer(Pt_A, 1, 3) ;...........................................................................................................................................................125
Approche objet :..................................................................................................................................................................126
Unit Upoint ;........................................................................................................................................................................126
INTERFACE.......................................................................................................................................................................126
TYPE...................................................................................................................................................................................126
T_Point = Object................................................................................................................................................................126
Public.................................................................................................................................................................................126
Procedure Placer(X, Y : Integer) ;...................................................................................................................................126
Procedure Afficher ;.........................................................................................................................................................126
Private................................................................................................................................................................................126
Abscisse, Ordonnee : Integer ;.........................................................................................................................................126
End ;....................................................................................................................................................................................126
IMPLEMENTATION..........................................................................................................................................................126
Procedure T_Point.Placer(X, Y : Integer) ;.......................................................................................................................126
Begin...................................................................................................................................................................................126
Abscisse := X ;..................................................................................................................................................................126
Ordonnee := Y ;.................................................................................................................................................................126
End ;....................................................................................................................................................................................126
Procedure T_Point.Afficher ;.............................................................................................................................................126
Begin...................................................................................................................................................................................126
Writeln(‘L’’abscisse vaut : ‘,abscisse) ;...........................................................................................................................126
Writeln(‘L’’ordonnée vaut : ‘,ordonnee) ;........................................................................................................................126
End ;....................................................................................................................................................................................126
End.......................................................................................................................................................................................126
Program Utilisation_Classe_Point ;....................................................................................................................................126
Uses......................................................................................................................................................................................126
Upoint ;...............................................................................................................................................................................126
Var.......................................................................................................................................................................................126
Pt1 : T_Point ;.....................................................................................................................................................................126
Begin....................................................................................................................................................................................126
Pt1.Placer(5, 8) ;.................................................................................................................................................................126
Pt1.Afficher ;......................................................................................................................................................................126
............................................................................................................................................................................................126
End.......................................................................................................................................................................................126
XIX.2 TERMINOLOGIE OBJET.......................................................................................................127
Objet....................................................................................................................................................................................127
Entité qui possède des caractéristiques, sur laquelle on peut appliquer des actions, à laquelle on peut envoyer des
messages...............................................................................................................................................................................127
Propriétés.............................................................................................................................................................................127
Attributs...............................................................................................................................................................................127
Données membres...............................................................................................................................................................127
Méthodes..............................................................................................................................................................................127
Messages..............................................................................................................................................................................127
Fonctions membres..............................................................................................................................................................127
= Actions sur les objets.......................................................................................................................................................127
Membres..............................................................................................................................................................................127
Les caractéristiques et les Actions......................................................................................................................................127
Classe...................................................................................................................................................................................127
Modèle d’objet qui décrit les membres..............................................................................................................................127
Instance de classe................................................................................................................................................................127
Un objet...............................................................................................................................................................................127
Chaque objet reçoit une copie des données membres de la classe.
Tous les objets d’une classe se partagent les méthodes de la classe...................................................................................127
Abstraction...........................................................................................................................................................................127
Private .................................................................................................................................................................................127
Données Membres +............................................................................................................................................................127
Implémentation....................................................................................................................................................................127
(En général).........................................................................................................................................................................127
Public...................................................................................................................................................................................127
Méthodes..............................................................................................................................................................................127
Composition.........................................................................................................................................................................127
Objet composé d’un ou plusieurs objets.............................................................................................................................127
Héritage...............................................................................................................................................................................127
Objet qui hérite des membres d’un autre objet...................................................................................................................127
Phrase clef : " est un type de " ...........................................................................................................................................127
Surcharge.............................................................................................................................................................................127
Réécrire le comportement d'une méthode héritée..............................................................................................................127
Encapsulation......................................................................................................................................................................127
Assurer un maximum de fiabilité, de garantie, de souplesse d'utilisation.........................................................................127
La manipulation des attributs de l'objet, l'utilisation ne peut se faire qu'en utilisant les méthodes.................................127
Les attributs ne sont pas utilisables directement par le programme. Par exemple, Pt.Abscisse est interdit....................127
Les attributs, contrairement aux méthodes, ne sont pas visibles à l'extérieur...................................................................127
La classe définie doit être complète, ie, posséder toutes les méthodes nécessaires à l'utilisation des attributs...............127
Polymorphisme....................................................................................................................................................................127
Capacité pour une méthode d'adapter son comportement suivant l'objet auquel elle s'applique. Cf exemple suivant....127
Nb: Les mots Objets et Classes sont interchangeables suivant le contexte.......................................................................127
DMSI/PROGRAMMATION - 161 -...................................................................................................................................125
XIX.3 EXEMPLE D'UTILISATION..................................................................................................128
Définition d'une classe:.......................................................................................................................................................128
Unit U_Vehic; { sera enregistrée dans le fichier U_Vehic.pas }.......................................................................................128
INTERFACE.......................................................................................................................................................................128
TYPE...................................................................................................................................................................................128
Pt_Vehicule = ^T_Vehicule; { Type Pointeur sur un T_Vehicule }................................................................................128
T_Vehicule = Object..........................................................................................................................................................128
Public.................................................................................................................................................................................128
Couleur : Integer;.............................................................................................................................................................128
Procedure Initialiser;........................................................................................................................................................128
Procedure Demarrer;........................................................................................................................................................128
Function Obtenir_Immatriculation : String;....................................................................................................................128
Private................................................................................................................................................................................128
Immatriculation : String;..................................................................................................................................................128
..........................................................................................................................................................................................128
Procedure Immatriculer;..................................................................................................................................................128
End;.....................................................................................................................................................................................128
IMPLEMENTATION..........................................................................................................................................................128
Procedure T_Vehicule.Initialiser;.......................................................................................................................................128
Begin....................................................................................................................................................................................128
............................................................................................................................................................................................128
............................................................................................................................................................................................128
End;......................................................................................................................................................................................128
{ Autres procédures et fonctions }......................................................................................................................................128
Utilisation de la classe T_Vehicule....................................................................................................................................128
Uses U_Vehic; { Utilisation de l'unité U_Vehic (dans le fichier U_Vehic.TPU) }..........................................................128
Var.......................................................................................................................................................................................128
Voiture : T_Vehicule;........................................................................................................................................................128
............................................................................................................................................................................................128
Begin....................................................................................................................................................................................128
Voiture.Couleur := 10; { OK }..........................................................................................................................................128
Voiture.Initialiser; { OK }.................................................................................................................................................128
Voiture.Immatriculer; { Interdit car la procédure Immatriculer est private }..................................................................128
XIX.4 LES CONSTRUCTEURS ET LES DESTRUCTEURS..........................................................129
Les constructeurs et les destructeurs sont des méthodes spéciales utilisées pour initialiser et construire un objet ou pour
supprimer un objet de l'espace du Tas. ...............................................................................................................................129
Les constructeurs et destructeurs se déclarent au moyen des mots réservés constructor et destructor à la place du mot
réservé procedure..................................................................................................................................................................129
XIX.4.1 LES CONSTRUCTEURS.....................................................................................................129
Les constructeurs sont des méthodes qui permettent d'initialiser les données membres des objets.................................129
EXEMPLE :.........................................................................................................................................................................129
INTERFACE.......................................................................................................................................................................129
TYPE..................................................................................................................................................................................129
T_Obj = OBJECT..............................................................................................................................................................129
Public................................................................................................................................................................................129
Constructor Initialiser;....................................................................................................................................................129
Constructor Init(A:Integer);............................................................................................................................................129
Private...............................................................................................................................................................................129
Donnee_M : Integer;.......................................................................................................................................................129
End;....................................................................................................................................................................................129
IMPLEMENTATION..........................................................................................................................................................129
Constructor T_Obj.Initialiser;............................................................................................................................................129
Begin...................................................................................................................................................................................129
Donnee_M := 0;.................................................................................................................................................................129
End;.....................................................................................................................................................................................129
Constructor T_Obj.Init(A : Integer);..................................................................................................................................129
Begin...................................................................................................................................................................................129
Donnee_M := A;................................................................................................................................................................129
End;.....................................................................................................................................................................................129
En Pascal, les constructeurs sont publics par défaut..........................................................................................................129
Utilisation............................................................................................................................................................................129
VAR....................................................................................................................................................................................129
Objet1 : T_Obj;.................................................................................................................................................................129
Begin...................................................................................................................................................................................129
Objet1.Initialiser;...............................................................................................................................................................129
Objet1.Initialiser_2(17);....................................................................................................................................................129
...........................................................................................................................................................................................129
End......................................................................................................................................................................................129
XIX.4.2 LES DESTRUCTEURS........................................................................................................130
Notions de Programmation Objet.......................................................................................................................................125
Les destructeurs sont des méthodes qui permettent de finaliser un objet (Inverse du constructeur). Ils sont utilisés pour
...............................................................................................................................................................................................130
libérer la mémoire...............................................................................................................................................................130
fermer des fichiers...............................................................................................................................................................130
détruire des objets contenus dans l'objet.............................................................................................................................130
etc.........................................................................................................................................................................................130
EXEMPLE :.........................................................................................................................................................................130
INTERFACE.......................................................................................................................................................................130
TYPE..................................................................................................................................................................................130
T_Obj = OBJECT..............................................................................................................................................................130
Public................................................................................................................................................................................130
Constructor Init;..............................................................................................................................................................130
Destructor Done;.............................................................................................................................................................130
Procedure ChangerValeur(Valeur : Integer);.................................................................................................................130
Private...............................................................................................................................................................................130
Pt_M : ^Integer;...............................................................................................................................................................130
End;....................................................................................................................................................................................130
IMPLEMENTATION..........................................................................................................................................................130
Constructor T_Obj.Init;......................................................................................................................................................130
Begin...................................................................................................................................................................................130
New(Pt_M); ......................................................................................................................................................................130
End;.....................................................................................................................................................................................130
Destructor T_Obj.Done;.....................................................................................................................................................130
Begin...................................................................................................................................................................................130
If Pt_M <> NIL Then Begin.............................................................................................................................................130
Dispose(Pt_M);.................................................................................................................................................................130
Pt_M := NIL;...................................................................................................................................................................130
End;....................................................................................................................................................................................130
End;.....................................................................................................................................................................................130
Procedure T_Obj. ChangerValeur(Valeur : Integer);........................................................................................................130
Begin...................................................................................................................................................................................130
Pt_M^ := Valeur;..............................................................................................................................................................130
End;.....................................................................................................................................................................................130
Utilisation............................................................................................................................................................................130
VAR....................................................................................................................................................................................130
Objet1 : T_Obj;................................................................................................................................................................130
Begin (1)............................................................................................................................................................................130
Objet1.Init; (2)...................................................................................................................................................................130
Objet1. ChangerValeur(25); (3)........................................................................................................................................130
Objet1.Done; (4)................................................................................................................................................................130
End. (5)..............................................................................................................................................................................130
(1) Déclaration de Objet1 ...................................................................................................................................................131
Pt_M P.................................................................................................................................................................................131
?............................................................................................................................................................................................131
(2) Appel du Constructeur...................................................................................................................................................131
(3) Objet1. ChangerValeur(25)...........................................................................................................................................131
(4) Appel du Destructeur.....................................................................................................................................................131
(5) Objet1 n'existe plus........................................................................................................................................................131
XIX.4.3 L'HERITAGE........................................................................................................................132
Soit le programme suivant qui utilise un objet dérivé de la classe T_Obj définie précédemment...................................132
EXEMPLE...........................................................................................................................................................................132
INTERFACE......................................................................................................................................................................132
TYPE..................................................................................................................................................................................132
T_ObjetDerive = Object ( T_Obj)....................................................................................................................................132
Public.................................................................................................................................................................................132
Constructor Init;...............................................................................................................................................................132
Destructor Done;..............................................................................................................................................................132
Procedure P50;.................................................................................................................................................................132
Private................................................................................................................................................................................132
Nb : Real;........................................................................................................................................................................132
End;....................................................................................................................................................................................132
IMPLEMENTATION........................................................................................................................................................132
Constructor T_ObjetDerive.Init;.......................................................................................................................................132
Begin..................................................................................................................................................................................132
inherited Init; { Appelle le Init de la Classe de Base }...................................................................................................132
N := 0.0;...........................................................................................................................................................................132
End;....................................................................................................................................................................................132
Procedure T_ObjetDerive.P50;.........................................................................................................................................132
Begin..................................................................................................................................................................................132
N := 50.0;.........................................................................................................................................................................132
End;....................................................................................................................................................................................132
...........................................................................................................................................................................................132
Le mot réservé inherited est mentionné pour indiquer que c'est le constructeur Init de la classe de base qui est appelé.
...............................................................................................................................................................................................132
XIX.5 POLYMORPHISME - SURCHARGES DES METHODES...................................................132
Soit la méthode M1 d'une classe de base. Si cette méthode est redéfinie dans la classe dérivée, on dit qu'elle est
surchargée.............................................................................................................................................................................132
Soient C_Base une classe de Base et C_Derivee une classe dérivée de C_Base..............................................................132
Soit Pt une variable déclarée comme pointeur sur un objet de type C_Base....................................................................132
Alors Pt peut pointer sur un objet de type C_Base ou sur un objet de type C_Derivee (car C_Derivee hérite de C_Base).
...............................................................................................................................................................................................132
EXEMPLE...........................................................................................................................................................................133
Uses......................................................................................................................................................................................133
CRT;...................................................................................................................................................................................133
TYPE...................................................................................................................................................................................133
T_PT_C_Base=^C_Base;...................................................................................................................................................133
C_Base =object...................................................................................................................................................................133
public.................................................................................................................................................................................133
Constructor Init; { Constructeur obligatoire dans la classe de Base }............................................................................133
procedure P1;virtual;........................................................................................................................................................133
private................................................................................................................................................................................133
end;.....................................................................................................................................................................................133
T_PT_C_Derivee = ^C_Derivee;.......................................................................................................................................133
C_Derivee =object(C_Base) { La classe dérivée hérite de la classe de base }...............................................................133
public.................................................................................................................................................................................133
procedure P1;virtual;........................................................................................................................................................133
private................................................................................................................................................................................133
end;.....................................................................................................................................................................................133
Constructor C_Base.Init;.....................................................................................................................................................133
Begin...................................................................................................................................................................................133
End;.....................................................................................................................................................................................133
Procedure C_Base.P1;.........................................................................................................................................................133
Begin...................................................................................................................................................................................133
Writeln('Méthode P1 de C_Base (Classe de base)');........................................................................................................133
End;.....................................................................................................................................................................................133
Procedure C_Derivee.P1;....................................................................................................................................................133
Begin....................................................................................................................................................................................133
Writeln('Méthode P1 de C_Derivee (Classe qui hérite de la Classe de base)');...............................................................133
End;......................................................................................................................................................................................133
Var.......................................................................................................................................................................................133
Ptr : T_PT_C_Base;............................................................................................................................................................133
Begin....................................................................................................................................................................................133
ClrScr;.................................................................................................................................................................................133
Ptr := New(T_Pt_C_Derivee,Init);.....................................................................................................................................133
Ptr^.P1;...............................................................................................................................................................................133
Dispose(Ptr);.......................................................................................................................................................................133
Ptr := New(T_Pt_C_Base,Init);..........................................................................................................................................133
Ptr^.P1;...............................................................................................................................................................................133
Dispose(Ptr);.......................................................................................................................................................................133
End.......................................................................................................................................................................................133
NB :......................................................................................................................................................................................133
L'utilisation du mot réservé virtual qui indique que la méthode concernée n'est liée au code qu'au moment de
l'exécution, de l'appel (ligature dynamique)........................................................................................................................133
L'utilisation de New avec comme paramètres le type du pointeur renvoyé et le constructeur.........................................133
XIX.6 LE PARAMETRE CACHE (IMPLICITE) SELF....................................................................134
Le paramètre caché Self référence l'objet auquel la méthode s'applique..........................................................................134
EXEMPLES.........................................................................................................................................................................134
TYPE..................................................................................................................................................................................134
C_Obj = Object.................................................................................................................................................................134
Public................................................................................................................................................................................134
Constructor Init (LeNombre : Integer);.........................................................................................................................134
Function ObtenirNombre : Integer;...............................................................................................................................134
Private...............................................................................................................................................................................134
Nombre_M : Integer;.....................................................................................................................................................134
End;....................................................................................................................................................................................134
Constructor C_Obj.Init(LeNombre : Integer);...................................................................................................................134
Begin...................................................................................................................................................................................134
Nombre_M := LeNombre;...............................................................................................................................................134
End;.....................................................................................................................................................................................134
Function C_Obj.ObtenirNombre : Integer;........................................................................................................................134
Begin...................................................................................................................................................................................134
ObtenirNombre := Nombre_M;........................................................................................................................................134
End;.....................................................................................................................................................................................134
Les déclarations précédentes sont en fait les suivantes :....................................................................................................134
TYPE..................................................................................................................................................................................134
C_Obj = Object.................................................................................................................................................................134
Public................................................................................................................................................................................134
Constructor Init (Var Self : C_Obj;LeNombre : Integer);............................................................................................134
Function ObtenirNombre (Var Self : C_Obj) : Integer;................................................................................................134
Private...............................................................................................................................................................................134
Nombre_M : Integer;.....................................................................................................................................................134
End;....................................................................................................................................................................................134
Constructor C_Obj.Init(Var Self : C_Obj;LeNombre : Integer);......................................................................................134
Begin...................................................................................................................................................................................134
Self.Nombre_M := LeNombre;........................................................................................................................................134
End;.....................................................................................................................................................................................134
Function C_Obj.ObtenirNombre (Var Self : C_Obj) : Integer;........................................................................................134
Begin...................................................................................................................................................................................134
ObtenirNombre := Self.Nombre_M;.................................................................................................................................134
End;.....................................................................................................................................................................................134
Var.......................................................................................................................................................................................134
Obj1, Obj2 : C_Obj;..........................................................................................................................................................134
Begin....................................................................................................................................................................................134
Obj1.Init(100);....................................................................................................................................................................134
Obj2.Init(110);....................................................................................................................................................................134
Writeln(Obj1.ObtenirNombre);.........................................................................................................................................134
End.......................................................................................................................................................................................134
Traduction............................................................................................................................................................................134
C_Obj.Init(Obj1, 100);........................................................................................................................................................134
C_Obj.Init(Obj2,110);.........................................................................................................................................................134
Writeln(C_Obj.ObtenirNombre(Obj1));.............................................................................................................................134
Self est un pointeur. Mais Attention, on n'utilise pas la notation pointeur (Self^)...........................................................135
Soit l'objet Obj1 de la classe C_Obj...................................................................................................................................135
Self.Nombre_M := LeNombre;..........................................................................................................................................135
XX UTILISATION DU TURBO PASCAL.........................................................................................................................136
XX.1 L'ENVIRONNEMENT DE DEVELOPPEMENT INTEGRE DU TURBO PASCAL............136
Lorsque l'on utilise Turbo Pascal dans la version Environnement Intégré, l'écran se présente sous la forme de menus
déroulants. Cet environnement de développement intégré (EDI) combine un éditeur de texte, un compilateur et un
débogueur, le tout accessible depuis un menu principal.....................................................................................................136
Les différentes options du menu sont accessibles soit.......................................................................................................136
à l’aide de la souris..............................................................................................................................................................136
par F10, puis les flèches de direction et Enter....................................................................................................................136
par Alt + la première lettre de l’option choisie..................................................................................................................136
par un raccourci (Exemple Alt+F9 = Compile)..................................................................................................................136
XX.1.1 PRESENTATION DE L’ECRAN PRINCIPAL ET DES SOUS-MENUS...........................136
..............................................................................................................................................................................................136
Sous-menu File....................................................................................................................................................................137
..............................................................................................................................................................................................137
New ....................................................................................................................................................................................137
Provoque l'ouverture d'une nouvelle fenêtre NONAMExx.PAS.......................................................................................137
Open F3 ............................................................................................................................................................................137
Ouvre une boite de chargement de fichier..........................................................................................................................137
Save F2..............................................................................................................................................................................137
Copie le contenu de la fenêtre d'édition dans un fichier disque........................................................................................137
Save as ................................................................................................................................................................................137
Permet de sauvegarder le fichier en cours sous un autre nom...........................................................................................137
Save all................................................................................................................................................................................137
Permet de sauvegarder tous les fichiers ouverts.................................................................................................................137
Change Dir...........................................................................................................................................................................137
Ouvre la boite permettant de spécifier le nom du répertoire.............................................................................................137
Print......................................................................................................................................................................................137
Provoque l'impression du contenu de la fenêtre d'édition active.......................................................................................137
Printer Setup........................................................................................................................................................................137
Provoque l’ouverture de la boîte Printer Setup qui sert à configurer le chemin d’accès et les éléments de ligne de
commande. Le filtre est en général le fichier PRNFLTR.EXE dont le source (modifiable) est livré dans le répertoire
TP\BIN. ................................................................................................................................................................................137
DOS shell ............................................................................................................................................................................137
Sortie temporaire de l'EDI pour réaliser des opérations DOS (retour par EXIT)..............................................................137
Exit Alt X ........................................................................................................................................................................137
Provoque la fin normale de la session dans l'EDI..............................................................................................................137
Sous-menu Edit...................................................................................................................................................................138
..............................................................................................................................................................................................138
Undo Alt+BkSp.................................................................................................................................................................138
Annule l'effet de la dernière action d'édition par rapport à une ligne de texte. Vous pouvez continuer à taper Undo pour
défaire d’autres actions........................................................................................................................................................138
Redo.....................................................................................................................................................................................138
Annule l’effet de la dernière commande Undo..................................................................................................................138
Cut Shift+Del...................................................................................................................................................................138
Supprime le bloc marqué et le transfère dans le presse-papier..........................................................................................138
Copy Ctrl+Ins...................................................................................................................................................................138
Copie le bloc marqué dans le presse-papier.......................................................................................................................138
Paste Shift+Ins .................................................................................................................................................................138
Insère une copie du contenu du presse-papier à la position du curseur.............................................................................138
Clear Ctrl+Del .................................................................................................................................................................138
Efface le bloc marqué..........................................................................................................................................................138
Show clipboard ...................................................................................................................................................................138
Permet d'afficher le contenu du presse-papier....................................................................................................................138
Pour marquer un bloc, vous pouvez toujours utiliser les commandes clavier (les séquences Crtl-K-B, Ctrl-K-K etc...) ou
bien utiliser la touche Shift associée aux touches de déplacement de curseur ou bien encore utiliser directement la souris
(cliquer sur le bouton gauche sur le début du bloc souhaité et déplacer la souris en maintenant le bouton gauche appuyé).
...............................................................................................................................................................................................138
Sous-menu Search...............................................................................................................................................................139
..............................................................................................................................................................................................139
Find ... ................................................................................................................................................................................139
Ouvre la boite Find pour permettre de définir le texte à rechercher..................................................................................139
Replace ...............................................................................................................................................................................139
Affiche une fenêtre de dialogue permettant de taper un texte à chercher et un autre de remplacement..........................139
Search again Ctrl-L ..........................................................................................................................................................139
Reprend la dernière commande Find ou Replace. Tous les paramètres spécifiés restent actifs.......................................139
Goto line number ... ............................................................................................................................................................139
Aller à la ligne N°...............................................................................................................................................................139
Show last compiler error.....................................................................................................................................................139
Affiche le dernier message d’erreur et amène le curseur sur la ligne source correspondante..........................................139
Find error.............................................................................................................................................................................139
Recherche la position d'une erreur d'exécution..................................................................................................................139
Find procedure ....................................................................................................................................................................139
Permet de rechercher une procédure pendant le débogage................................................................................................139
Previous browser.................................................................................................................................................................139
Affiche le résultat de la dernière opération dans la fenêtre Browser.................................................................................139
Objects.................................................................................................................................................................................139
Affiche tous les objets d’une application............................................................................................................................139
Units.....................................................................................................................................................................................139
Affiche les informations au sujet des unités.......................................................................................................................139
Globals.................................................................................................................................................................................139
Affiche les informations au sujet des identificateurs globaux...........................................................................................139
Symbol.................................................................................................................................................................................139
Provoque l’ouverture de la boîte Browse Symbol..............................................................................................................139
Sous-menu Run....................................................................................................................................................................140
Utilisation du Turbo Pascal.................................................................................................................................................136
..............................................................................................................................................................................................140
Run Ctrl-F9 ......................................................................................................................................................................140
Lance l'exécution du programme. Si le fichier Source a été modifié depuis la dernière compilation, provoque une
reconstruction Make.............................................................................................................................................................140
Step over F8........................................................................................................................................................................140
Provoque l'exécution de la prochaine instruction en considérant comme une seule instruction l'appel et le retour du
niveau inférieur (procédures ou fonctions)..........................................................................................................................140
Trace into F7 ....................................................................................................................................................................140
Provoque l'exécution de la prochaine instruction même si cela suppose de descendre dans un niveau inférieur (sous-
programme)..........................................................................................................................................................................140
Go to cursor F4..................................................................................................................................................................140
Lance l'exécution jusqu'à la ligne curseur (si la ligne est exécutable)..............................................................................140
Program reset Ctrl-F2 .........................................................................................................................................................140
Abandonne le débogage, libère la mémoire et ferme tous les fichiers ouverts par le programme...................................140
Parameters ..........................................................................................................................................................................140
Ouvre une boite de dialogue permettant de spécifier les options de ligne de commande qui seront transmises en début
d'exécution............................................................................................................................................................................140
Sous-menu Compile............................................................................................................................................................141
..............................................................................................................................................................................................141
Compile Alt-F9 ..................................................................................................................................................................141
Provoque la compilation du texte source dans la fenêtre d'édition active.........................................................................141
Make F9 ...........................................................................................................................................................................141
Construction sélective du fichier indiqué par Primary File ou du fichier de la fenêtre d'édition.....................................141
si le source d'une unité a été mis à jour (.TPU obsolète), elle est recompilée..................................................................141
si la partie Interface d'une unité a été modifiée, toutes les unités qui la référencent sont recompilées...........................141
si une unité référence un fichier Include ou .OBJ modifié (.TPU obsolète), l'unité est recompilée................................141
Build ...................................................................................................................................................................................141
Provoque la reconstruction systématique du projet............................................................................................................141
Primary File.........................................................................................................................................................................141
Permet de définir le nom du fichier source .PAS principal qui sera compilé par le Make et le Build.............................141
Clear primary file................................................................................................................................................................141
Désélectionne le fichier principal courant. Les commandes Compile et Build vont s’appliquer au fichier de la fenêtre
active.....................................................................................................................................................................................141
Information..........................................................................................................................................................................141
Provoque l’ouverture de la boîte Information qui indique.................................................................................................141
le statut de la dernière compilation.....................................................................................................................................141
l’utilisation mémoire...........................................................................................................................................................141
l’environnement...................................................................................................................................................................141
DMSI/PROGRAMMATION - 161 -...................................................................................................................................136
Sous-menu Debug................................................................................................................................................................142
..............................................................................................................................................................................................142
BreakPoints..........................................................................................................................................................................142
Provoque l'ouverture d'une boite de dialogue qui contrôle l'utilisation des points d’arrêt aussi bien conditionnels
qu’inconditionnels................................................................................................................................................................142
Call Stack Ctrl-F3...............................................................................................................................................................142
Provoque l'ouverture de la fenêtre Call Stack. Cette fenêtre montre la pile d'appels des différentes routines. La pile
symbolique peut mémoriser 128 appels...............................................................................................................................142
Register................................................................................................................................................................................142
Provoque l'ouverture de la fenêtre Register. Cette fenêtre présente le contenu des registres du microprocesseur (très
utile lors du débogage des parties d’assembleur)................................................................................................................142
Watch...................................................................................................................................................................................142
Provoque l'ouverture de la fenêtre de suivi Watch. Cette fenêtre contient les expressions choisies comme témoins.....142
Output..................................................................................................................................................................................142
Provoque l'ouverture de la fenêtre de résultats d'exécution (pas de graphiques)..............................................................142
User Screen Alt-F5.............................................................................................................................................................142
Bascule sur la page vidéo, l'écran d'exécution (aussi bien les affichages texte que les tracés graphiques).....................142
Evaluate/modify... Ctrl-F4.................................................................................................................................................142
Permet d'évaluer une variable ou une expression, de visualiser ou de modifier la valeur d'une variable........................142
Add Watch... Ctrl F7 .........................................................................................................................................................142
Permet de spécifier une expression témoin........................................................................................................................142
Add Breakpoint...................................................................................................................................................................142
Provoque l’ouverture d’une boîte qui sert à définir de nouveaux points d’arrêts conditionnels ou inconditionnels.......142
Sous-menu Tools.................................................................................................................................................................143
..............................................................................................................................................................................................143
Messages..............................................................................................................................................................................143
Affiche la fenêtre Message (messages des programmes qui utilisent un filtre DOS comme GREP)...............................143
Go to next Alt+F8...............................................................................................................................................................143
Dans une fenêtre Messages ou Browser, le focus va sur le prochain élément, puis l’EDI affiche le source correspondant.
...............................................................................................................................................................................................143
Go to previous Alt+F7.........................................................................................................................................................143
Idem sur l’élément précédent..............................................................................................................................................143
Grep Shift+F2....................................................................................................................................................................143
Grep (Acronyme de Get Regular Expression Pattern) est un utilitaire installé par défaut. Son rôle est de rechercher un
texte dans plusieurs fichiers à la fois. On peut modifier ses paramètres dans Options/Tools............................................143
Sous-menu Options..............................................................................................................................................................143
..............................................................................................................................................................................................143
Compiler..............................................................................................................................................................................143
Ouvre une fenêtre permettant de fixer soit pour l’application en cours, soit pour les applications futures, différentes
options de compilation. Ces options seront détaillées en Annexe A..................................................................................143
Memory Sizes......................................................................................................................................................................144
Permet de modifier trois paramètres de taille mémoire :...................................................................................................144
Taille Pile (Stack size)........................................................................................................................................................144
Limite Mini du Tas (Low Heap limit)...............................................................................................................................144
Limite Maxi du Tas (High Heap limit)..............................................................................................................................144
L'option $M est équivalente................................................................................................................................................144
Taille Pile : Ce paramètre définit la taille du segment de pile, en octets. La valeur par défaut est de 16 Ko, le maximum
étant bien sûr de 64 Ko........................................................................................................................................................144
Limite mini du Tas : Ce paramètre définit la taille minimale du tas (>Heap). La valeur par défaut est de 0 Ko. Si la
taille du tas ne permet pas la bonne exécution d'un programme, celui-ci se termine sur une erreur d'exécution.............144
Limite maxi du Tas : Ce paramètre définit la taille maximale du tas (>Heap). La valeur par défaut est de 655360, ce qui
correspond en général à la totalité de la mémoire disponible. Cette valeur doit être supérieure ou égale à la valeur
minimale du tas....................................................................................................................................................................144
Linker..................................................................................................................................................................................144
Permet de préciser les fichiers éventuellement produits par le linker...............................................................................144
Debugger.............................................................................................................................................................................144
Permet de fixer différentes options de débogage ..............................................................................................................144
Integrated debugging : par défaut (débogage par débogueur intégré et par Turbo Debugger).........................................144
Standalone : débogage uniquement par Turbo Debugger..................................................................................................144
Display Swapping : pour spécifier quand le débogueur intégré peut permuter les fenêtres d’affichage..........................144
Directories...........................................................................................................................................................................144
Permet de spécifier les répertoires que Turbo Pascal doit utiliser pour les fichiers EXE & TPU, les fichiers Include, les
fichier Units et les fichiers Objets........................................................................................................................................144
Browser................................................................................................................................................................................144
Provoque l’ouverture d’une boîte définissant les options de ObjectBrowser qui permet de naviguer au milieu des
hierarchies d’objets, d’unités et d’identificateurs de votre projet.......................................................................................144
Tools....................................................................................................................................................................................144
Provoque l’ouverture d’une boîte qui sert à aménager l’accès aux utilitaires associés (Ex GREP) en fixant les répertoires
et différentes options de la ligne de commande..................................................................................................................144
Sous-menu Window............................................................................................................................................................145
..............................................................................................................................................................................................145
Tile (mosaïque)....................................................................................................................................................................145
Permet de juxtaposer les fenêtres........................................................................................................................................145
Cascade................................................................................................................................................................................145
Permet d'empiler les fenêtres avec un léger décalage........................................................................................................145
Close all...............................................................................................................................................................................145
Permet de fermer toutes les fenêtres...................................................................................................................................145
Refresh display....................................................................................................................................................................145
Restaure l’affichage.............................................................................................................................................................145
Size/Move Ctrl-F5..............................................................................................................................................................145
Permet de retailler et de déplacer la fenêtre active à l'aide des touches curseur associées à la touche Shift. On peut
également utiliser la souris en cliquant sur la poignée en bas à droite...............................................................................145
Zoom F5............................................................................................................................................................................145
Permet de déplier (ou replier) la fenêtre active pour qu'elle occupe tout l'écran. C'est une commande bascule.............145
Next F6..............................................................................................................................................................................145
Permet de circuler entre les fenêtres selon un schéma d'appel circulaire..........................................................................145
Previous Shift-F6................................................................................................................................................................145
Permet d'activer la dernière fenêtre active avant la fenêtre active actuelle......................................................................145
Close Alt-F3......................................................................................................................................................................145
Provoque la fermeture de la fenêtre active.........................................................................................................................145
List Alt-0...........................................................................................................................................................................145
Provoque l'ouverture de la liste des fenêtres actuellement ouvertes..................................................................................145
Sous-menu Help..................................................................................................................................................................146
..............................................................................................................................................................................................146
Contents...............................................................................................................................................................................146
Présente un sommaire des entrées principales du système d'aide......................................................................................146
Index Shift+F1...................................................................................................................................................................146
Présente un index alphabétique complet............................................................................................................................146
Topic Search Ctrl+F1.........................................................................................................................................................146
Permet d'accéder à l'aide langage sur un mot standard (pointé par le curseur).................................................................146
Previous Topic Alt+F1........................................................................................................................................................146
Dans le système d'aide, vous pouvez consulter les 20 derniers écrans d'aide...................................................................146
Using Help...........................................................................................................................................................................146
Permet d'accéder à un écran expliquant comment utiliser l'aide.......................................................................................146
Files.....................................................................................................................................................................................146
Ouvre une boîte permettant d’ajouter/ôter des fichiers d’aide...........................................................................................146
Compiler Directives ...........................................................................................................................................................146
Reserved Words .................................................................................................................................................................146
Différentes aides particulières sur les sujets indiqués........................................................................................................146
XX.1.2 COMMANDES DE L'EDITEUR...........................................................................................147
Mouvements du curseur......................................................................................................................................................147
Caractère à gauche..............................................................................................................................................................147
Ctrl-S ...................................................................................................................................................................................147
ou Flèche Gauche................................................................................................................................................................147
Caractère à droite................................................................................................................................................................147
Ctrl-D ..................................................................................................................................................................................147
ou Flèche Droite..................................................................................................................................................................147
Mot à gauche.......................................................................................................................................................................147
Ctrl-A...................................................................................................................................................................................147
Mot à droite.........................................................................................................................................................................147
Ctrl-F....................................................................................................................................................................................147
Ligne précédente.................................................................................................................................................................147
Ctrl-E ..................................................................................................................................................................................147
ou Flèche Haut.....................................................................................................................................................................147
Ligne suivante.....................................................................................................................................................................147
Ctrl-X...................................................................................................................................................................................147
ou Flèche Bas......................................................................................................................................................................147
Défilement arrière...............................................................................................................................................................147
Ctrl-W..................................................................................................................................................................................147
Défilement avant.................................................................................................................................................................147
Ctrl-Z...................................................................................................................................................................................147
Page précédente...................................................................................................................................................................147
Ctrl-R ..................................................................................................................................................................................147
ou PgUp...............................................................................................................................................................................147
Page suivante.......................................................................................................................................................................147
Ctrl-C ..................................................................................................................................................................................147
ou PgDn...............................................................................................................................................................................147
Position précédente..............................................................................................................................................................147
Ctrl-Q P................................................................................................................................................................................147
Insertion et Suppression......................................................................................................................................................147
Insertion Oui/Non................................................................................................................................................................147
Ctrl-V...................................................................................................................................................................................147
ou Ins....................................................................................................................................................................................147
Insertion 1 ligne.................................................................................................................................................................147
Ctrl-N...................................................................................................................................................................................147
Insertion options..................................................................................................................................................................147
Ctrl-O O...............................................................................................................................................................................147
Suppression 1 ligne..............................................................................................................................................................147
Ctrl-Y...................................................................................................................................................................................147
Suppr. -> Fin de ligne..........................................................................................................................................................147
Ctrl-Q Y...............................................................................................................................................................................147
Suppr. carac. à gauche.........................................................................................................................................................147
Ctrl-H ..................................................................................................................................................................................147
ou Backspace.......................................................................................................................................................................147
Suppr. carac. Curseur.........................................................................................................................................................147
Ctrl-G ..................................................................................................................................................................................147
ou Del...................................................................................................................................................................................147
Suppr. carac. à droite...........................................................................................................................................................147
Ctrl-T...................................................................................................................................................................................147
Suppr. Bloc..........................................................................................................................................................................147
Ctrl-K Y...............................................................................................................................................................................147
Commande de blocs de texte..............................................................................................................................................147
Marque début de bloc..........................................................................................................................................................147
Ctrl-K B...............................................................................................................................................................................147
Marque fin de bloc..............................................................................................................................................................147
Ctrl-K K...............................................................................................................................................................................147
Marque un mot....................................................................................................................................................................147
Ctrl-K T...............................................................................................................................................................................147
Copie du bloc.......................................................................................................................................................................147
Ctrl-K C...............................................................................................................................................................................147
Déplacement de bloc...........................................................................................................................................................147
Ctrl-K V...............................................................................................................................................................................147
Suppression de bloc.............................................................................................................................................................147
Ctrl-K Y...............................................................................................................................................................................147
Lecture bloc disque.............................................................................................................................................................147
Ctrl-K R...............................................................................................................................................................................147
Ecriture bloc disque.............................................................................................................................................................147
Ctrl-K W..............................................................................................................................................................................147
Montre/Cache bloc..............................................................................................................................................................147
Ctrl-K H...............................................................................................................................................................................147
Imprime bloc.......................................................................................................................................................................147
Ctrl-K P................................................................................................................................................................................147
Indente bloc.........................................................................................................................................................................147
Ctrl-K I.................................................................................................................................................................................147
Indente inverse bloc............................................................................................................................................................147
Ctrl-K U...............................................................................................................................................................................147
Commandes d'édition diverses ...........................................................................................................................................147
Sortie sans sauver................................................................................................................................................................147
Ctrl-K D...............................................................................................................................................................................147
ou Ctrl-K Q..........................................................................................................................................................................147
Sauve et édite.......................................................................................................................................................................147
Ctrl-K S................................................................................................................................................................................147
ou F2....................................................................................................................................................................................147
Charge autre fichier.............................................................................................................................................................147
F3.........................................................................................................................................................................................147
Tabulation............................................................................................................................................................................147
Ctrl-I ...................................................................................................................................................................................147
ou Tab..................................................................................................................................................................................147
Bascule Tab.........................................................................................................................................................................147
Ctrl-O T ..............................................................................................................................................................................147
ou Ctrl-Q T..........................................................................................................................................................................147
Autoindentation O/N...........................................................................................................................................................147
Ctrl-O I.................................................................................................................................................................................147
ou Ctrl-Q I...........................................................................................................................................................................147
Récupère ligne.....................................................................................................................................................................147
Ctrl-Q L...............................................................................................................................................................................147
Pose marqueur.....................................................................................................................................................................147
Ctrl-K n................................................................................................................................................................................147
Trouve marque.....................................................................................................................................................................147
Ctrl-Q n................................................................................................................................................................................147
Remplissage optimisé..........................................................................................................................................................147
Ctrl-O F................................................................................................................................................................................147
Indentation inverse..............................................................................................................................................................147
Ctrl-O U...............................................................................................................................................................................147
Délimiteur apparié droit......................................................................................................................................................147
Ctrl-Q [.................................................................................................................................................................................147
Délimiteur apparié gauche..................................................................................................................................................147
Ctrl-Q ].................................................................................................................................................................................147
Préfixe de caractère ............................................................................................................................................................147
CtrlCtrl-P.............................................................................................................................................................................147
Abandon d'opération (Undo)...............................................................................................................................................147
Ctrl-U...................................................................................................................................................................................147
Réaffiche message d'erreur.................................................................................................................................................147
Ctrl-Q W..............................................................................................................................................................................147
Cherche (Find).....................................................................................................................................................................147
Ctrl-Q F................................................................................................................................................................................147
Cherche & remplace............................................................................................................................................................147
Ctrl-Q A...............................................................................................................................................................................147
Cherche suivant (Last)........................................................................................................................................................147
Ctrl-L...................................................................................................................................................................................147
XX.1.3 DIVERS..................................................................................................................................148
La commande Edit vous fait entrer dans l'éditeur intégré. Vous revenez au menu principal par F10, et passez à une autre
option par Alt-initiale d'option. Le fichier contenu dans l'éditeur reste visible. Il suffit de frapper "E" depuis le menu ou
Alt-E de tout autre point pour revenir à l'édition. Lors de la saisie, vous êtes en mode Insertion par défaut...................148
Ctrl+O+O insère toutes les directives de compilation en première ligne du fichier en cours. ........................................148
Ctrl+F1 appelle l'aide langage............................................................................................................................................148
La ligne d'état de l'éditeur indique : la ligne et colonne courantes. ..................................................................................148
Un astérisque indique si le fichier a été sauvegardé depuis la dernière modification.......................................................148
La longueur de ligne maximale de l'éditeur est de 249 (voire 1024 suivant l’EDI utilisé) caractères; rappelez-vous
cependant que le compilateur n'en accepte que 126. .........................................................................................................148
La largeur de la fenêtre d'édition est de 77 caractères; si vous frappez au-delà, le texte à gauche est translaté. Lorsque
vous terminez votre session d'édition, frappez F10 pour revenir au menu principal. .......................................................148
XX.2 UTILISATION DU DEBOGUEUR..........................................................................................149
Le débogueur intégré de Turbo Pascal fonctionne au niveau source : vous suivez l'exécution du programme et posez des
points d'arrêt dans le texte source correspondant. Vous examinez et modifiez des variables sélectionnées (les témoins) en
appliquant la syntaxe Pascal................................................................................................................................................149
Le débogueur utilise la fenêtre de l'éditeur (Edit) pour indiquer la position courante et les points d'arrêt. Les témoins
éventuels sont visibles dans la fenêtre de suivi Watch........................................................................................................149
Le système de menus déroulants reste accessible lors du débogage. Le texte source peut être modifié et compilé grâce
aux commandes du menu Compile......................................................................................................................................149
Pour utiliser le débogueur, basculez l'option Options/Debugger sur Integrated avant de compiler le programme. Le
débogueur entre en action dès que vous utilisez une des commandes du menu Run.........................................................149
XX.2.1 FENETRE WATCH ..............................................................................................................149
La fenêtre de suivi (Watch window) contient les témoins que vous avez désignés, c'est-à-dire les variables ou
expressions dont la valeur évolue au cours du débogage....................................................................................................149
Ces témoins peuvent comporter des spécificateurs de format pour contrôler leur format d'affichage.............................149
Exemple :.............................................................................................................................................................................149
I,$ { Affiche la variable entière I en HexaDécimal }.......................................................................................................149
La fenêtre de suivi est indispensable pour surveiller les valeurs de certaines variables et expressions stratégiques. Dans
certaines situations cependant, le besoin est ponctuel et ne justifie pas l'insertion d'un témoin supplémentaire. Utilisez
dans ce cas la commande Evaluate/Modify (Ctrl+F4), elle vous permet de visualiser et même de modifier la valeur de
toute variable ou expression.................................................................................................................................................149
Un spécificateur de format comprend une valeur de répétition facultative (entière), suivie de zéro ou plus
métacaractères de format.....................................................................................................................................................149
C...........................................................................................................................................................................................149
Caractère. Visualise les caractères de contrôle (ASCII 0..31); par défaut, ceux-ci sont représentés sous forme de valeurs
ASCII en utilisant la syntaxe #xx. Concerne les caractères et les chaînes.........................................................................149
D...........................................................................................................................................................................................149
Décimal. Les valeurs entières sont présentées en notation décimale. Concerne les expressions entières simples mais
aussi les structures contenant des entiers.............................................................................................................................149
F[n].......................................................................................................................................................................................149
Virgule flottante. n est un entier entre 2 et 18 spécifiant le nombre de chiffres significatifs (11 par défaut). Ne concerne
que les valeurs à virgule flottante........................................................................................................................................149
H, X, $..................................................................................................................................................................................149
Hexadécimal. Les valeurs entières sont présentées en notation hexadécimale avec un préfixe '$'. Concerne les
expressions entières simples mais aussi les structures contenant des entiers.....................................................................149
M..........................................................................................................................................................................................149
Mémoire. Visualise le contenu de l'adresse mémoire symbolisé par la variable. Celle-ci doit évidemment représenter
une position mémoire. M peut être combiné à D, C, S, X ou H.........................................................................................149
P...........................................................................................................................................................................................149
Pointeur. Visualise les pointeurs au format segment:déplacement (seg:ofs) plutôt qu'au format standard Ptr(seg,ofs). Ne
concerne que les valeurs de type pointeur...........................................................................................................................149
R...........................................................................................................................................................................................149
Record. Visualise aussi les noms des champs des enregistrements (X:1;Y:10;Z:5) en plus de leurs valeurs (1,10,5). Ne
concerne que les variables du type enregistrement.............................................................................................................149
S...........................................................................................................................................................................................149
String. Visualise les caractères de contrôle (ASCII 0..31) en tant que valeurs ASCII avec le préfixe #. C'est le mode de
présentation standard; S n'est donc utile qu'en combinaison avec M.................................................................................149
Voici quelques exemples d'expressions employant les spécificateurs de format. Posons les déclarations suivantes :....149
TYPE...................................................................................................................................................................................150
NamePtr = ^NameRec;.......................................................................................................................................................150
NameRec = RECORD........................................................................................................................................................150
Next : NamePtr;................................................................................................................................................................150
Count : INTEGER;...........................................................................................................................................................150
Name : STRING[31];.......................................................................................................................................................150
END;....................................................................................................................................................................................150
VAR.....................................................................................................................................................................................150
List : ARRAY[1..10] OF INTEGER;................................................................................................................................150
P : NamePtr;.......................................................................................................................................................................150
Les expressions suivantes sont valides :.............................................................................................................................150
Témoin.................................................................................................................................................................................150
Résultat................................................................................................................................................................................150
Commentaires......................................................................................................................................................................150
List:......................................................................................................................................................................................150
(10,20,30,40,50,60,70,80,90,100).......................................................................................................................................150
Toutes les valeurs du tableau..............................................................................................................................................150
List[6],3X:...........................................................................................................................................................................150
$3C,$46,$50.........................................................................................................................................................................150
Les 3 valeurs à partir de List[6]..........................................................................................................................................150
3EA0:000C..........................................................................................................................................................................150
P sous format Pointeur........................................................................................................................................................150
P...........................................................................................................................................................................................150
Ptr($1073,$0).......................................................................................................................................................................150
P^:........................................................................................................................................................................................150
(PTR($3EF2,$2),412,'John')................................................................................................................................................150
Ce qui est pointé par P........................................................................................................................................................150
P^.Next^,RX:.......................................................................................................................................................................150
(Next:nil;Count:$19C;'Joe')................................................................................................................................................150
Mem[$40:0],8M:.................................................................................................................................................................150
F8 03 F8 02 00 00 00 00.....................................................................................................................................................150
8 cases du tableau Mem à partir de l’emplacement $40 :0 au format Mémoire...............................................................150
Mem[$40:0],8MD:..............................................................................................................................................................150
248 3 248 2 0 0 0 0..............................................................................................................................................................150
La même au format décimal...............................................................................................................................................150
ANNEXE A - OPTIONS DE COMPILATION..................................................................................................................151
ANNEXE A - OPTIONS DE COMPILATION..................................................................................................................151
Les directives de compilation ressemblent à des commentaires et peuvent être insérées aux mêmes points. Elles sont
toujours constituées d'un signe $ suivant l'accolade ouvrante et d'une lettre de directive.................................................151
Les directives bascules activent/inhibent certaines fonctions du compilateur (signe + ou - après la lettre de directive).
Les directives paramètres permettent de transmettre des paramètres au compilateur.......................................................151
Les directives Bascules sont locales ou globales. Locales, elles n'ont d'effet que sur une partie de la compilation.......151
Les directives Paramètres doivent comporter au moins un esapce entre la lettre et la paramètre....................................151
Les directives locales peuvent s'insérer en tout point d'un programme ou d'une unité. Celles de type global doivent être
placées avant le bloc de déclaration du module..................................................................................................................151
Vous groupez plusieurs directives en les séparant par des virgules. ................................................................................151
Les directives bascules........................................................................................................................151
$A : Cadrage Données (Align Data Switch) (Globale)......................................................................................................151
Bascule entre alignement sur frontière d'octet et de mot pour le stockage des variables et constantes typées................151
L'alignement sur mot permet une plus grande vitesse d'exécution car les éléments sur 2 octets stockés à une adresse
paire sont atteints en un seul cycle mémoire au lieu de deux.............................................................................................151
Un champ de structure record n'est aligné sur une frontière de mot que si la taille totale de tous les champs qui le
précède est paire...................................................................................................................................................................151
Pour assurer un alignement mot des champs de tableaux, la taille d'élément doit être paire...........................................151
Note: Quel que soit l'état de $A, les blocs de déclarations de variables et de constantes globales débutent sur une
adresse paire.........................................................................................................................................................................151
$B : Evaluation Booléenne (Boolean Evaluation Switch) (Locale)..................................................................................151
Permet d'activer ou non le mécanisme d'évaluation optimisée des expressions logiques (booléennes) basées sur les
opérateurs booléens AND et OR..........................................................................................................................................151
$D : Infos Débogage (Debug Information Switch) (Globale) ...........................................................................................151
Contrôle l'insertion des informations de débogage dans le fichier exécutable..................................................................151
REMARQUES Cette option contrôle la génération des informations de débogage. Il s'agit d'une.................................151
table des numéros de lignes source pour chaque procédure ou autre objet à étudier........................................................151
$F : Forcer Appels FAR (Force Far Calls Switch) (Locale).............................................................................................151
Cette bascule contrôle le modèle d'appel qui doit être utilisé pour les appels de procédures et de fonctions qui suivent la
bascule..................................................................................................................................................................................151
$G : Jeu d'instructions 80286 (Generate 80286 Code Switch) (Globale)..........................................................................151
Contrôle la génération des instructions spécifiques au 80286. .........................................................................................151
$I : Test des Entrées/Sorties (Input/Output-Checking Switch) (Locale)..........................................................................152
Sous l'effet de cette option, le compilateur génère du code supplémentaire pour tester la validité de chaque opération
d'entrées/sorties....................................................................................................................................................................152
REMARQUES: Si une erreur est détectée (valeur renvoyée différente de 0), le programme se.....................................152
termine sur une erreur d'exécution......................................................................................................................................152
Si {$I} est Off, vous devez utiliser la fonction IOResult pour tester ces erreurs.............................................................152
$K : Rappels Optimisés (Smart Callbacks Switch) (Windows seul)................................................................................152
Contrôle la génération de blocs de code de rappel optimisés (smart callbacks) pour les.................................................152
procédures et fonctions exportées par une application.......................................................................................................152
REMARQUES: Si une application est compilée sous l'effet de $K-, elle doit utiliser les routines de l'API Windows
nommées MakeProcInstance et FreeProcInstance pour créer des routines de rappel (callbacks).....................................152
$L : Informations de Symboles Locaux (Local Symbol Information Switch) (Globale)..................................................152
Cette option contrôle la génération des informations au sujet des symboles locaux........................................................152
REMARQUES L'information de symboles locaux est constituée des éléments suivants:................................................152
les symboles de la partie implémentation du module (noms et types de toutes les variables, constantes locales) et......152
les symboles des blocs de procédures et de fonctions de ce module.................................................................................152
$N : Coprocesseur arithmétique (Numeric Coprocessor Switch) (Globale)......................................................................152
Permet de choisir entre les deux types de code pour les calculs sur les nombres flottants offerts par Turbo Pascal......152
Dans l'état {$N-}, Turbo Pascal génère un code pour réaliser les calculs sur les flottants par appel aux routines standard.
...............................................................................................................................................................................................152
Dans l'état {$N+}, Turbo Pascal génère les instructions particulières au co-processeur arithmétique 80x87 ou à son
émulateur..............................................................................................................................................................................152
$P : Paramètres chaînes ouverts (Globale).........................................................................................................................152
La directive $P contrôle la signification des paramètres variables déclarés à l'aide du mot-clé STRING......................152
Dans l'état $P-, les paramètres variables déclarés à l'aide du mot-clé STRING sont des paramètres variables normaux,
ce qui assure la compatibilité avec les versions antérieures de Turbo Pascal....................................................................152
Dans l'état $P+, il s'agit de paramètres chaînes ouverts.....................................................................................................152
$Q : Test de Débordement (Overflow Checking Switch) (Locale)...................................................................................152
Cette directive contrôle la génération de code de test de débordement............................................................................152
Dans l’état $Q+, certaines fonctions arithmétiques entières (+, -, *, Abs, Sqr, Succ et Pred) font l'objet d'un test de
dépassement de capacité......................................................................................................................................................152
$R : Test Domaines (Range-Checking Switch) (Locale)...................................................................................................153
Autorise/interdit l'insertion de code de gestion des erreurs de domaine de validité.........................................................153
Dans l'état $R+,...................................................................................................................................................................153
tous les tableaux et toutes les expressions indicées sur chaînes sont vérifiés comme restant dans les limites autorisées;
...............................................................................................................................................................................................153
toutes les affectations à des variables scalaires et sous-intervalle sont testées comme restant dans les limites autorisées.
...............................................................................................................................................................................................153
$R+ ne s'applique pas à Inc et à Dec..................................................................................................................................153
$S : Test Débordement Pile (Stack-Overflow Checking Switch) (Locale).......................................................................153
Contrôle l'insertion de code spécial pour prévenir les débordements de pile....................................................................153
Sous l'effet de {$S+}, le compilateur génère du code supplémentaire pour vérifier l'existence d'un espace mémoire
suffisant pour les variables locales avant chaque entrée dans une procédure ou une fonction..........................................153
$T : Test Types Pointeurs (Type-Checked Pointers Switch) (Locale)..............................................................................153
Contrôle les types des pointeurs créés par l'opérateur @ .................................................................................................153
$V : Test des Chaînes VAR (Var-String Checking Switch) (Locale)...............................................................................153
Sous l'effet de cette option, le compilateur compare la taille des paramètres formels et effectifs de type chaîne (var type
strings)..................................................................................................................................................................................153
Sous l'effet de {$V+}, le paramètre formel doit être de même type que celui transmis, sinon une erreur de compilation
survient.................................................................................................................................................................................153
$W : Cadre de pile Windows (Windows Stack Frame Switch) (Locale).........................................................................153
(VALABLE SOUS WINDOWS SEULEMENT) Provoque la génération de code spécial de prologue et d'épilogue pour
les routines à accès far..........................................................................................................................................................153
$X : Extension de Syntaxe (Extended Syntax Switch) (Globale)......................................................................................153
Contrôle l'acceptation des extensions de syntaxe par le compilateur................................................................................153
Dans l'état {$X+}, les appels de fonction peuvent être utilisés comme des instructions; le résultat d'une telle fonction
peut être laissé à l'abandon...................................................................................................................................................153
$Y : Bascule des Informations de référence de symboles (Globale)................................................................................153
(pas dans TPC ni Turbo).....................................................................................................................................................153
Contrôle la génération des informations de références de symboles................................................................................153
Les directives paramètres ...................................................................................................................154
$I : Fichiers Inclus (Include File Directive).......................................................................................................................154
Syntaxe : $I nomfichier.......................................................................................................................................................154
Demande au compilateur d'insérer le fichier source spécifié à partir de la ligne actuelle................................................154
Si NomFic n'est pas trouvé dans le répertoire courant, Turbo Pascal recherche dans ceux indiqués par l'option de ligne
de commande /I)...................................................................................................................................................................154
$C : Attributs Segments de Code (Code Segment Attribute) (Windows et mode protégé seuls).....................................154
Contrôle les attributs d'un segment de code.......................................................................................................................154
$D : Directive Description (Windows et mode protégé seuls)...........................................................................................154
Insère le texte que vous lui spécifiez dans l'entrée de description du module située dans l'en-tête d'un fichier .EXE ou
.DLL......................................................................................................................................................................................154
$G : Directive Groupage segments unités (Group Unit Segments)...................................................................................154
(Windows et mode protégé seuls).......................................................................................................................................154
Spécifie des groupes d'unités qui doivent être rassemblés par le lieur dans le même segment........................................154
$L : Directive Inclure Fichier .OBJ (Link Object File) (Locale).......................................................................................154
Demande au compilateur d'insérer le fichier .OBJ spécifié à partir de la ligne actuelle..................................................154
REMARQUES Cette directive $L permet d'incorporer à un module des programmes écrits..........................................154
en assembleur et contenant des routines externes (EXTERNAL).....................................................................................154
Ces fichiers doivent obéir au format objet Intel relogeable (.OBJ)...................................................................................154
$M : Directive Tailles Mémoire (Memory Allocation Sizes) (Globale)...........................................................................154
Définit les paramètres de pile et de tas d'un programme...................................................................................................154
Cf Options|Memory Sizes...................................................................................................................................................154
$R : Directive Fichiers Ressources (Resource File Directive)...........................................................................................154
(Windows et mode protégé seuls).......................................................................................................................................154
Permet d'indiquer le nom d'un fichier ressources à insérer dans une application ou une librairie...................................154
REMARQUES L'extension de nom standard pour NomFic est .RES. Il doit s'agir d'un fichier ressources Windows.. .154
$S : Directive de taille de Segment (Windows et mode protégé seuls)............................................................................154
Spécifie la taille favorite des segments de code qui recevront les unités groupées..........................................................154
Compilation Conditionnelle: Directives et Symboles.........................................................................155
La compilation conditionnelle est basée sur l'évaluation de symboles conditionnels......................................................155
Directive..............................................................................................................................................................................155
Description...........................................................................................................................................................................155
DEFINE...............................................................................................................................................................................155
définit un symbole conditionnel..........................................................................................................................................155
Le symbole défini par cette directive reste valable pour toute la suite de la compilation sauf à partir de la rencontre
d'une directive de neutralisation $UNDEF Nom.................................................................................................................155
ELSE....................................................................................................................................................................................155
traite ou ignore la portion de source délimitée...................................................................................................................155
ENDIF..................................................................................................................................................................................155
marque la fin d'un bloc ouvert par le plus récent $Ifxxx...................................................................................................155
IFDEF..................................................................................................................................................................................155
Compile si Nom est défini {$IFDEF Nom}.......................................................................................................................155
IFNDEF...............................................................................................................................................................................155
Compile si Nom n'est pas défini {$IFNDEF Nom}...........................................................................................................155
IFOPT..................................................................................................................................................................................155
Compile si option de compilation dans l'état (+ ou -) {$IFOPT Option}..........................................................................155
UNDEF................................................................................................................................................................................155
Annule une définition existante {$UNDEF Nom}.............................................................................................................155
Symbole...............................................................................................................................................................................155
Description...........................................................................................................................................................................155
CPU86..................................................................................................................................................................................155
CPU de la famille Intel 80x86............................................................................................................................................155
CPU87..................................................................................................................................................................................155
Défini si un coprocesseur 80x87 est détecté à la compilation...........................................................................................155
DPMI....................................................................................................................................................................................155
Vrai si en mode protégé DOS.............................................................................................................................................155
MSDOS................................................................................................................................................................................155
Vrai si en mode réel (MS-DOS ou PC-DOS).....................................................................................................................155
VER70.................................................................................................................................................................................155
Numéro de version de Turbo Pascal...................................................................................................................................155
WINDOWS..........................................................................................................................................................................155
Vrai si sous MS-Windows...................................................................................................................................................155
ANNEXE B - MESSAGES ET CODES D'ERREUR........................................................................................................156
ANNEXE B - MESSAGES ET CODES D'ERREUR........................................................................................................156
MESSAGES D'ERREUR DU COMPILATEUR : ............................................................................156
Si ce genre de message survient dans l'environnement intégré, vous êtes placé dans l'éditeur, à l'endroit de l'erreur. Dans
le cas du compilateur en ligne de commande, le message d'erreur est affiché ainsi que la ligne du fichier source avec un
accent circonflexe pointant l'endroit incriminé...................................................................................................................156
MESSAGES D'ERREUR D'EXECUTION : .....................................................................................156
Le programme se termine en affichant : Runtime error <nnn> at <xxxx:yyyy> .............................................................156
nnn est le code d'erreur et xxxx:yyyy l'adresse de l'erreur.................................................................................................156
Ces erreurs sont divisées en quatre groupes :.....................................................................................................................156
les erreurs DOS (1 à 99)......................................................................................................................................................156
les erreurs d'entrées/sorties (100 à 149)..............................................................................................................................156
les erreurs critiques (150 à 199)..........................................................................................................................................156
les erreurs fatales (200 à 249).............................................................................................................................................156
1...........................................................................................................................................................................................156
: Invalid function number....................................................................................................................................................156
2...........................................................................................................................................................................................156
: fichier introuvable.............................................................................................................................................................156
3...........................................................................................................................................................................................156
: chemin d'accès introuvable...............................................................................................................................................156
4...........................................................................................................................................................................................156
: trop de fichiers ouverts simultanément.............................................................................................................................156
5...........................................................................................................................................................................................156
: accès au fichier interdit.....................................................................................................................................................156
6...........................................................................................................................................................................................156
: identificateur de fichier invalide.......................................................................................................................................156
12.........................................................................................................................................................................................156
: code d'accès fichier invalide.............................................................................................................................................156
15.........................................................................................................................................................................................156
: numéro d'unité de disque invalide....................................................................................................................................156
16.........................................................................................................................................................................................156
: ne peut supprimer le répertoire courant............................................................................................................................156
17.........................................................................................................................................................................................156
: ne peut renommer de disque à disque...............................................................................................................................156
18.........................................................................................................................................................................................156
: No more files.....................................................................................................................................................................156
100.......................................................................................................................................................................................156
: erreur disque en lecture.....................................................................................................................................................156
101.......................................................................................................................................................................................156
: erreur disque en écriture....................................................................................................................................................156
102.......................................................................................................................................................................................156
: variable non associée à un fichier.....................................................................................................................................156
103.......................................................................................................................................................................................156
: fichier non ouvert..............................................................................................................................................................156
104.......................................................................................................................................................................................156
: fichier non ouvert en lecture.............................................................................................................................................156
105.......................................................................................................................................................................................156
: fichier non ouvert en écriture............................................................................................................................................156
106.......................................................................................................................................................................................156
: format numérique invalide................................................................................................................................................156
150.......................................................................................................................................................................................156
: unité de disque protégée en écriture.................................................................................................................................156
151.......................................................................................................................................................................................156
: unité de disque non reconnue par le système...................................................................................................................156
152.......................................................................................................................................................................................156
: unité de disque non prête..................................................................................................................................................156
153.......................................................................................................................................................................................156
: commande inconnue..........................................................................................................................................................156
154.......................................................................................................................................................................................156
: erreur d'intégrité des données lues....................................................................................................................................156
155.......................................................................................................................................................................................156
: taille de la structure de communication disque erronée...................................................................................................156
156.......................................................................................................................................................................................156
: erreur de positionnement des têtes du disque...................................................................................................................156
157.......................................................................................................................................................................................156
: type de support magnétique inconnu................................................................................................................................156
158.......................................................................................................................................................................................156
: secteur non trouvé.............................................................................................................................................................156
159.......................................................................................................................................................................................156
: erreur imprimante (fin de papier).....................................................................................................................................156
160.......................................................................................................................................................................................156
: erreur d'écriture sur périphérique......................................................................................................................................156
161.......................................................................................................................................................................................157
: erreur de lecture sur périphérique.....................................................................................................................................157
162.......................................................................................................................................................................................157
: erreur liée au matériel.......................................................................................................................................................157
200.......................................................................................................................................................................................157
: division par zéro................................................................................................................................................................157
201.......................................................................................................................................................................................157
: erreur de dépassement d'intervalle....................................................................................................................................157
202.......................................................................................................................................................................................157
: débordement de pile..........................................................................................................................................................157
203.......................................................................................................................................................................................157
: débordement du segment de tas........................................................................................................................................157
204.......................................................................................................................................................................................157
: opération sur pointeur invalide.........................................................................................................................................157
205.......................................................................................................................................................................................157
: débordement en virgule flottante......................................................................................................................................157
206.......................................................................................................................................................................................157
: débordement inverse en virgule flottante.........................................................................................................................157
207.......................................................................................................................................................................................157
: opération en virgule flottante invalide..............................................................................................................................157
208.......................................................................................................................................................................................157
: gestionnaire de recouvrements de partiels non installé....................................................................................................157
209.......................................................................................................................................................................................157
: erreur de lecture du fichier de recouvrement des partiels................................................................................................157
210.......................................................................................................................................................................................157
: Object not initialized.........................................................................................................................................................157
211.......................................................................................................................................................................................157
: Call to abstract method.....................................................................................................................................................157
212.......................................................................................................................................................................................157
: Stream registration error...................................................................................................................................................157
213.......................................................................................................................................................................................157
: Collection index out of range...........................................................................................................................................157
214.......................................................................................................................................................................................157
: Collection overflow error..................................................................................................................................................157
215.......................................................................................................................................................................................157
: Arithmetic overflow error.................................................................................................................................................157
216.......................................................................................................................................................................................157
: General Protection fault....................................................................................................................................................157
ANNEXE C - TABLE ASCII.............................................................................................................................................158
ANNEXE C - TABLE ASCII.............................................................................................................................................158
D...........................................................................................................................................................................................158
H...........................................................................................................................................................................................158
Ctrl.......................................................................................................................................................................................158
Mmen...................................................................................................................................................................................158
D...........................................................................................................................................................................................158
H...........................................................................................................................................................................................158
Ctrl.......................................................................................................................................................................................158
Mmen...................................................................................................................................................................................158
0...........................................................................................................................................................................................158
00.........................................................................................................................................................................................158
^............................................................................................................................................................................................158
NUL.....................................................................................................................................................................................158
16.........................................................................................................................................................................................158
10.........................................................................................................................................................................................158
^P.........................................................................................................................................................................................158
DLE......................................................................................................................................................................................158
1...........................................................................................................................................................................................158
01.........................................................................................................................................................................................158
^A.........................................................................................................................................................................................158
SOH......................................................................................................................................................................................158
17.........................................................................................................................................................................................158
11.........................................................................................................................................................................................158
^Q.........................................................................................................................................................................................158
DC1......................................................................................................................................................................................158
2...........................................................................................................................................................................................158
02.........................................................................................................................................................................................158
^B.........................................................................................................................................................................................158
STX......................................................................................................................................................................................158
18.........................................................................................................................................................................................158
12.........................................................................................................................................................................................158
^R.........................................................................................................................................................................................158
DC2......................................................................................................................................................................................158
3...........................................................................................................................................................................................158
03.........................................................................................................................................................................................158
^C.........................................................................................................................................................................................158
ETX......................................................................................................................................................................................158
19.........................................................................................................................................................................................158
13.........................................................................................................................................................................................158
^S.........................................................................................................................................................................................158
DC3......................................................................................................................................................................................158
4...........................................................................................................................................................................................158
04.........................................................................................................................................................................................158
^D.........................................................................................................................................................................................158
EOT......................................................................................................................................................................................158
20.........................................................................................................................................................................................158
14.........................................................................................................................................................................................158
^T.........................................................................................................................................................................................158
DC4......................................................................................................................................................................................158
5...........................................................................................................................................................................................158
05.........................................................................................................................................................................................158
^E.........................................................................................................................................................................................158
ENQ.....................................................................................................................................................................................158
21.........................................................................................................................................................................................158
15.........................................................................................................................................................................................158
^U.........................................................................................................................................................................................158
NAK.....................................................................................................................................................................................158
6...........................................................................................................................................................................................158
06.........................................................................................................................................................................................158
^F.........................................................................................................................................................................................158
ACK.....................................................................................................................................................................................158
22.........................................................................................................................................................................................158
16.........................................................................................................................................................................................158
^V.........................................................................................................................................................................................158
SYN......................................................................................................................................................................................158
7...........................................................................................................................................................................................158
07.........................................................................................................................................................................................158
^G.........................................................................................................................................................................................158
BEL......................................................................................................................................................................................158
23.........................................................................................................................................................................................158
17.........................................................................................................................................................................................158
^W........................................................................................................................................................................................158
ETB......................................................................................................................................................................................158
8...........................................................................................................................................................................................158
08.........................................................................................................................................................................................158
^H.........................................................................................................................................................................................158
BS.........................................................................................................................................................................................158
24.........................................................................................................................................................................................158
18.........................................................................................................................................................................................158
^X.........................................................................................................................................................................................158
CAN.....................................................................................................................................................................................158
9...........................................................................................................................................................................................158
09.........................................................................................................................................................................................158
^I..........................................................................................................................................................................................158
HT........................................................................................................................................................................................158
25.........................................................................................................................................................................................158
19.........................................................................................................................................................................................158
^Y.........................................................................................................................................................................................158
EM.......................................................................................................................................................................................158
10.........................................................................................................................................................................................158
0A.........................................................................................................................................................................................158
^J..........................................................................................................................................................................................158
LF.........................................................................................................................................................................................158
26.........................................................................................................................................................................................158
1A.........................................................................................................................................................................................158
^Z.........................................................................................................................................................................................158
SUB......................................................................................................................................................................................158
11.........................................................................................................................................................................................158
0B.........................................................................................................................................................................................158
^K.........................................................................................................................................................................................158
VT........................................................................................................................................................................................158
27.........................................................................................................................................................................................158
1B.........................................................................................................................................................................................158
^[..........................................................................................................................................................................................158
ESC......................................................................................................................................................................................158
12.........................................................................................................................................................................................158
0C.........................................................................................................................................................................................158
^L.........................................................................................................................................................................................158
FF.........................................................................................................................................................................................158
28.........................................................................................................................................................................................158
1C.........................................................................................................................................................................................158
^\..........................................................................................................................................................................................158
FS.........................................................................................................................................................................................158
13.........................................................................................................................................................................................158
0D.........................................................................................................................................................................................158
^M........................................................................................................................................................................................158
CR........................................................................................................................................................................................158
29.........................................................................................................................................................................................158
1D.........................................................................................................................................................................................158
^]..........................................................................................................................................................................................158
GS........................................................................................................................................................................................158
14.........................................................................................................................................................................................158
0E.........................................................................................................................................................................................158
^N.........................................................................................................................................................................................158
SO........................................................................................................................................................................................158
30.........................................................................................................................................................................................158
1E.........................................................................................................................................................................................158
^^..........................................................................................................................................................................................158
RS.........................................................................................................................................................................................158
15.........................................................................................................................................................................................158
0F.........................................................................................................................................................................................158
^O.........................................................................................................................................................................................158
SI..........................................................................................................................................................................................158
31.........................................................................................................................................................................................158
1F.........................................................................................................................................................................................158
^_..........................................................................................................................................................................................158
US........................................................................................................................................................................................158
D...........................................................................................................................................................................................158
H...........................................................................................................................................................................................158
Ch.........................................................................................................................................................................................158
D...........................................................................................................................................................................................158
H...........................................................................................................................................................................................158
Ch.........................................................................................................................................................................................158
D...........................................................................................................................................................................................158
H...........................................................................................................................................................................................158
Ch.........................................................................................................................................................................................158
D...........................................................................................................................................................................................158
H...........................................................................................................................................................................................158
Ch.........................................................................................................................................................................................158
D...........................................................................................................................................................................................158
H...........................................................................................................................................................................................158
Ch.........................................................................................................................................................................................158
D...........................................................................................................................................................................................158
H...........................................................................................................................................................................................158
Ch.........................................................................................................................................................................................158
D...........................................................................................................................................................................................158
H...........................................................................................................................................................................................158
Ch.........................................................................................................................................................................................158
32.........................................................................................................................................................................................158
20.........................................................................................................................................................................................158
SP.........................................................................................................................................................................................158
64.........................................................................................................................................................................................158
40.........................................................................................................................................................................................158
@..........................................................................................................................................................................................158
96.........................................................................................................................................................................................158
60.........................................................................................................................................................................................158
`............................................................................................................................................................................................158
128.......................................................................................................................................................................................158
80.........................................................................................................................................................................................158
Ç...........................................................................................................................................................................................158
160.......................................................................................................................................................................................158
A0.........................................................................................................................................................................................158
á............................................................................................................................................................................................158
192.......................................................................................................................................................................................158
C0.........................................................................................................................................................................................158
└...........................................................................................................................................................................................158
224.......................................................................................................................................................................................158
E0.........................................................................................................................................................................................158
α...........................................................................................................................................................................................158
33.........................................................................................................................................................................................158
21.........................................................................................................................................................................................158
!............................................................................................................................................................................................158
65.........................................................................................................................................................................................158
41.........................................................................................................................................................................................158
A...........................................................................................................................................................................................158
97.........................................................................................................................................................................................158
61.........................................................................................................................................................................................158
a............................................................................................................................................................................................158
129.......................................................................................................................................................................................158
81.........................................................................................................................................................................................158
ü...........................................................................................................................................................................................158
161.......................................................................................................................................................................................158
A1.........................................................................................................................................................................................158
í............................................................................................................................................................................................158
193.......................................................................................................................................................................................158
C1.........................................................................................................................................................................................158
┴...........................................................................................................................................................................................158
225.......................................................................................................................................................................................158
E1.........................................................................................................................................................................................158
β...........................................................................................................................................................................................158
34.........................................................................................................................................................................................158
22.........................................................................................................................................................................................158
"............................................................................................................................................................................................158
66.........................................................................................................................................................................................158
42.........................................................................................................................................................................................158
B...........................................................................................................................................................................................158
98.........................................................................................................................................................................................158
62.........................................................................................................................................................................................158
b...........................................................................................................................................................................................158
130.......................................................................................................................................................................................158
82.........................................................................................................................................................................................158
é............................................................................................................................................................................................158
162.......................................................................................................................................................................................158
A2.........................................................................................................................................................................................158
ó...........................................................................................................................................................................................158
194.......................................................................................................................................................................................158
C2.........................................................................................................................................................................................158
┬...........................................................................................................................................................................................158
226.......................................................................................................................................................................................158
E2.........................................................................................................................................................................................158
τ............................................................................................................................................................................................158
35.........................................................................................................................................................................................158
23.........................................................................................................................................................................................158
#...........................................................................................................................................................................................158
67.........................................................................................................................................................................................158
43.........................................................................................................................................................................................158
C...........................................................................................................................................................................................158
99.........................................................................................................................................................................................158
63.........................................................................................................................................................................................158
c............................................................................................................................................................................................158
131.......................................................................................................................................................................................158
83.........................................................................................................................................................................................158
â............................................................................................................................................................................................158
163.......................................................................................................................................................................................158
A3.........................................................................................................................................................................................158
ú...........................................................................................................................................................................................158
195.......................................................................................................................................................................................158
C3.........................................................................................................................................................................................158
├...........................................................................................................................................................................................158
227.......................................................................................................................................................................................158
E3.........................................................................................................................................................................................158
л...........................................................................................................................................................................................158
36.........................................................................................................................................................................................158
24.........................................................................................................................................................................................158
$...........................................................................................................................................................................................158
68.........................................................................................................................................................................................158
44.........................................................................................................................................................................................158
D...........................................................................................................................................................................................158
100.......................................................................................................................................................................................158
64.........................................................................................................................................................................................158
d...........................................................................................................................................................................................158
132.......................................................................................................................................................................................158
84.........................................................................................................................................................................................158
ä............................................................................................................................................................................................158
164.......................................................................................................................................................................................158
A4.........................................................................................................................................................................................158
ñ...........................................................................................................................................................................................158
196.......................................................................................................................................................................................158
C4.........................................................................................................................................................................................158
─...........................................................................................................................................................................................158
228.......................................................................................................................................................................................158
E4.........................................................................................................................................................................................158
∑...........................................................................................................................................................................................158
37.........................................................................................................................................................................................158
25.........................................................................................................................................................................................158
%..........................................................................................................................................................................................158
69.........................................................................................................................................................................................158
45.........................................................................................................................................................................................158
E...........................................................................................................................................................................................158
101.......................................................................................................................................................................................158
65.........................................................................................................................................................................................158
e............................................................................................................................................................................................158
133.......................................................................................................................................................................................158
85.........................................................................................................................................................................................158
à............................................................................................................................................................................................158
165.......................................................................................................................................................................................158
A5.........................................................................................................................................................................................158
Ñ...........................................................................................................................................................................................158
197.......................................................................................................................................................................................158
C5.........................................................................................................................................................................................158
┼...........................................................................................................................................................................................158
229.......................................................................................................................................................................................158
E5.........................................................................................................................................................................................158
σ...........................................................................................................................................................................................158
38.........................................................................................................................................................................................158
26.........................................................................................................................................................................................158
&..........................................................................................................................................................................................158
70.........................................................................................................................................................................................158
46.........................................................................................................................................................................................158
F...........................................................................................................................................................................................158
102.......................................................................................................................................................................................158
66.........................................................................................................................................................................................158
f............................................................................................................................................................................................158
134.......................................................................................................................................................................................158
86.........................................................................................................................................................................................158
å............................................................................................................................................................................................158
166.......................................................................................................................................................................................158
A6.........................................................................................................................................................................................158
ª............................................................................................................................................................................................158
198.......................................................................................................................................................................................158
C6.........................................................................................................................................................................................158
╞...........................................................................................................................................................................................158
230.......................................................................................................................................................................................158
E6.........................................................................................................................................................................................158
μ...........................................................................................................................................................................................158
39.........................................................................................................................................................................................158
27.........................................................................................................................................................................................158
'.............................................................................................................................................................................................158
71.........................................................................................................................................................................................158
47.........................................................................................................................................................................................158
G...........................................................................................................................................................................................158
103.......................................................................................................................................................................................158
67.........................................................................................................................................................................................158
g...........................................................................................................................................................................................158
135.......................................................................................................................................................................................158
87.........................................................................................................................................................................................158
ç............................................................................................................................................................................................158
167.......................................................................................................................................................................................158
A7.........................................................................................................................................................................................158
º............................................................................................................................................................................................158
199.......................................................................................................................................................................................158
C7.........................................................................................................................................................................................158
╟...........................................................................................................................................................................................158
231.......................................................................................................................................................................................158
E7.........................................................................................................................................................................................158
τ............................................................................................................................................................................................158
40.........................................................................................................................................................................................158
28.........................................................................................................................................................................................158
(............................................................................................................................................................................................158
72.........................................................................................................................................................................................158
48.........................................................................................................................................................................................158
H...........................................................................................................................................................................................158
104.......................................................................................................................................................................................158
68.........................................................................................................................................................................................158
h...........................................................................................................................................................................................158
136.......................................................................................................................................................................................158
88.........................................................................................................................................................................................158
ê............................................................................................................................................................................................158
168.......................................................................................................................................................................................158
A8.........................................................................................................................................................................................158
¿............................................................................................................................................................................................158
200.......................................................................................................................................................................................158
C8.........................................................................................................................................................................................158
╚...........................................................................................................................................................................................158
232.......................................................................................................................................................................................158
E8.........................................................................................................................................................................................158
φ...........................................................................................................................................................................................158
41.........................................................................................................................................................................................158
29.........................................................................................................................................................................................158
)............................................................................................................................................................................................158
73.........................................................................................................................................................................................158
49.........................................................................................................................................................................................158
I............................................................................................................................................................................................158
105.......................................................................................................................................................................................158
69.........................................................................................................................................................................................158
i............................................................................................................................................................................................158
137.......................................................................................................................................................................................158
89.........................................................................................................................................................................................158
ë............................................................................................................................................................................................158
169.......................................................................................................................................................................................158
A9.........................................................................................................................................................................................158
¬...........................................................................................................................................................................................158
201.......................................................................................................................................................................................158
C9.........................................................................................................................................................................................158
╔...........................................................................................................................................................................................158
233.......................................................................................................................................................................................158
E9.........................................................................................................................................................................................158
Θ...........................................................................................................................................................................................158
42.........................................................................................................................................................................................158
2A.........................................................................................................................................................................................158
*...........................................................................................................................................................................................158
74.........................................................................................................................................................................................158
4A.........................................................................................................................................................................................158
J............................................................................................................................................................................................158
106.......................................................................................................................................................................................158
6A.........................................................................................................................................................................................158
j............................................................................................................................................................................................158
138.......................................................................................................................................................................................158
8A.........................................................................................................................................................................................158
è............................................................................................................................................................................................158
170.......................................................................................................................................................................................158
AA........................................................................................................................................................................................158
¬...........................................................................................................................................................................................158
202.......................................................................................................................................................................................158
CA........................................................................................................................................................................................158
╩...........................................................................................................................................................................................158
234.......................................................................................................................................................................................158
EA........................................................................................................................................................................................158
Ω...........................................................................................................................................................................................158
43.........................................................................................................................................................................................158
2B.........................................................................................................................................................................................158
+...........................................................................................................................................................................................158
75.........................................................................................................................................................................................158
4B.........................................................................................................................................................................................158
K...........................................................................................................................................................................................158
107.......................................................................................................................................................................................158
6B.........................................................................................................................................................................................158
k...........................................................................................................................................................................................158
139.......................................................................................................................................................................................158
8B.........................................................................................................................................................................................158
ï............................................................................................................................................................................................158
171.......................................................................................................................................................................................158
AB........................................................................................................................................................................................158
½..........................................................................................................................................................................................158
203.......................................................................................................................................................................................158
CB........................................................................................................................................................................................158
╦...........................................................................................................................................................................................158
235.......................................................................................................................................................................................158
EB........................................................................................................................................................................................158
δ............................................................................................................................................................................................158
44.........................................................................................................................................................................................158
2C.........................................................................................................................................................................................158
,............................................................................................................................................................................................158
76.........................................................................................................................................................................................158
4C.........................................................................................................................................................................................158
L...........................................................................................................................................................................................158
108.......................................................................................................................................................................................158
6C.........................................................................................................................................................................................158
l............................................................................................................................................................................................158
140.......................................................................................................................................................................................158
8C.........................................................................................................................................................................................158
î............................................................................................................................................................................................158
172.......................................................................................................................................................................................158
AC........................................................................................................................................................................................158
¼..........................................................................................................................................................................................158
204.......................................................................................................................................................................................158
CC........................................................................................................................................................................................158
╠...........................................................................................................................................................................................158
236.......................................................................................................................................................................................158
EC........................................................................................................................................................................................158
∞...........................................................................................................................................................................................158
45.........................................................................................................................................................................................158
2D.........................................................................................................................................................................................158
-............................................................................................................................................................................................158
77.........................................................................................................................................................................................158
4D.........................................................................................................................................................................................158
M..........................................................................................................................................................................................158
109.......................................................................................................................................................................................158
6D.........................................................................................................................................................................................158
m..........................................................................................................................................................................................158
141.......................................................................................................................................................................................158
8D.........................................................................................................................................................................................158
ì............................................................................................................................................................................................158
173.......................................................................................................................................................................................158
AD........................................................................................................................................................................................158
¡............................................................................................................................................................................................158
205.......................................................................................................................................................................................158
CD........................................................................................................................................................................................158
═...........................................................................................................................................................................................158
237.......................................................................................................................................................................................158
ED........................................................................................................................................................................................158
Ø...........................................................................................................................................................................................158
46.........................................................................................................................................................................................158
2E.........................................................................................................................................................................................158
.............................................................................................................................................................................................158
78.........................................................................................................................................................................................158
4E.........................................................................................................................................................................................158
N...........................................................................................................................................................................................158
110.......................................................................................................................................................................................158
6E.........................................................................................................................................................................................158
n...........................................................................................................................................................................................158
142.......................................................................................................................................................................................158
8E.........................................................................................................................................................................................158
Ä...........................................................................................................................................................................................158
174.......................................................................................................................................................................................158
AE........................................................................................................................................................................................158
«...........................................................................................................................................................................................158
206.......................................................................................................................................................................................158
CE........................................................................................................................................................................................158
╬...........................................................................................................................................................................................158
238.......................................................................................................................................................................................158
EE.........................................................................................................................................................................................158
ε............................................................................................................................................................................................158
47.........................................................................................................................................................................................158
2F.........................................................................................................................................................................................158
/............................................................................................................................................................................................158
79.........................................................................................................................................................................................158
4F.........................................................................................................................................................................................158
O...........................................................................................................................................................................................158
111.......................................................................................................................................................................................158
6F.........................................................................................................................................................................................158
o...........................................................................................................................................................................................158
143.......................................................................................................................................................................................158
8F.........................................................................................................................................................................................158
Å...........................................................................................................................................................................................158
175.......................................................................................................................................................................................158
AF........................................................................................................................................................................................158
»...........................................................................................................................................................................................158
207.......................................................................................................................................................................................158
CF.........................................................................................................................................................................................158
╧...........................................................................................................................................................................................158
239.......................................................................................................................................................................................158
EF.........................................................................................................................................................................................158
∩...........................................................................................................................................................................................158
48.........................................................................................................................................................................................158
30.........................................................................................................................................................................................158
0...........................................................................................................................................................................................158
80.........................................................................................................................................................................................158
50.........................................................................................................................................................................................158
P...........................................................................................................................................................................................158
112.......................................................................................................................................................................................158
70.........................................................................................................................................................................................158
p...........................................................................................................................................................................................158
144.......................................................................................................................................................................................158
90.........................................................................................................................................................................................158
É...........................................................................................................................................................................................158
176.......................................................................................................................................................................................158
B0.........................................................................................................................................................................................158
░...........................................................................................................................................................................................158
208.......................................................................................................................................................................................158
D0.........................................................................................................................................................................................158
╨...........................................................................................................................................................................................158
240.......................................................................................................................................................................................158
F0.........................................................................................................................................................................................158
≡...........................................................................................................................................................................................158
49.........................................................................................................................................................................................158
31.........................................................................................................................................................................................158
1...........................................................................................................................................................................................158
81.........................................................................................................................................................................................158
51.........................................................................................................................................................................................158
Q...........................................................................................................................................................................................158
113.......................................................................................................................................................................................158
71.........................................................................................................................................................................................158
q...........................................................................................................................................................................................158
145.......................................................................................................................................................................................158
91.........................................................................................................................................................................................158
æ...........................................................................................................................................................................................158
177.......................................................................................................................................................................................158
B1.........................................................................................................................................................................................158
▒...........................................................................................................................................................................................158
209.......................................................................................................................................................................................158
D1.........................................................................................................................................................................................158
╤...........................................................................................................................................................................................158
241.......................................................................................................................................................................................158
F1.........................................................................................................................................................................................158
±...........................................................................................................................................................................................158
50.........................................................................................................................................................................................158
32.........................................................................................................................................................................................158
2...........................................................................................................................................................................................158
82.........................................................................................................................................................................................158
52.........................................................................................................................................................................................158
R...........................................................................................................................................................................................158
114.......................................................................................................................................................................................158
72.........................................................................................................................................................................................158
r............................................................................................................................................................................................158
146.......................................................................................................................................................................................158
92.........................................................................................................................................................................................158
Æ..........................................................................................................................................................................................158
178.......................................................................................................................................................................................158
B2.........................................................................................................................................................................................158
▓...........................................................................................................................................................................................158
210.......................................................................................................................................................................................158
D2.........................................................................................................................................................................................158
╥...........................................................................................................................................................................................158
242.......................................................................................................................................................................................158
F2.........................................................................................................................................................................................158
≤...........................................................................................................................................................................................158
51.........................................................................................................................................................................................158
33.........................................................................................................................................................................................158
3...........................................................................................................................................................................................158
83.........................................................................................................................................................................................158
53.........................................................................................................................................................................................158
S...........................................................................................................................................................................................158
115.......................................................................................................................................................................................158
73.........................................................................................................................................................................................158
s............................................................................................................................................................................................158
147.......................................................................................................................................................................................158
93.........................................................................................................................................................................................158
ô...........................................................................................................................................................................................158
179.......................................................................................................................................................................................158
B3.........................................................................................................................................................................................158
│...........................................................................................................................................................................................158
211.......................................................................................................................................................................................158
D3.........................................................................................................................................................................................158
╙...........................................................................................................................................................................................158
243.......................................................................................................................................................................................158
F3.........................................................................................................................................................................................158
≥...........................................................................................................................................................................................158
52.........................................................................................................................................................................................158
34.........................................................................................................................................................................................158
4...........................................................................................................................................................................................158
84.........................................................................................................................................................................................158
54.........................................................................................................................................................................................158
T...........................................................................................................................................................................................158
116.......................................................................................................................................................................................158
74.........................................................................................................................................................................................158
t............................................................................................................................................................................................158
148.......................................................................................................................................................................................158
94.........................................................................................................................................................................................158
ö...........................................................................................................................................................................................158
180.......................................................................................................................................................................................158
B4.........................................................................................................................................................................................158
┤...........................................................................................................................................................................................158
212.......................................................................................................................................................................................158
D4.........................................................................................................................................................................................158
╘...........................................................................................................................................................................................158
244.......................................................................................................................................................................................158
F4.........................................................................................................................................................................................158
⌠...........................................................................................................................................................................................158
53.........................................................................................................................................................................................158
35.........................................................................................................................................................................................158
5...........................................................................................................................................................................................158
85.........................................................................................................................................................................................158
55.........................................................................................................................................................................................158
U...........................................................................................................................................................................................158
117.......................................................................................................................................................................................158
75.........................................................................................................................................................................................158
u...........................................................................................................................................................................................158
149.......................................................................................................................................................................................158
95.........................................................................................................................................................................................158
ò...........................................................................................................................................................................................158
181.......................................................................................................................................................................................158
B5.........................................................................................................................................................................................158
╡...........................................................................................................................................................................................158
213.......................................................................................................................................................................................158
D5.........................................................................................................................................................................................158
╒...........................................................................................................................................................................................158
245.......................................................................................................................................................................................158
F5.........................................................................................................................................................................................158
⌡...........................................................................................................................................................................................158
54.........................................................................................................................................................................................158
36.........................................................................................................................................................................................158
6...........................................................................................................................................................................................158
86.........................................................................................................................................................................................158
56.........................................................................................................................................................................................158
V...........................................................................................................................................................................................158
118.......................................................................................................................................................................................158
76.........................................................................................................................................................................................158
v...........................................................................................................................................................................................158
150.......................................................................................................................................................................................158
96.........................................................................................................................................................................................158
û...........................................................................................................................................................................................158
182.......................................................................................................................................................................................158
B6.........................................................................................................................................................................................158
╢...........................................................................................................................................................................................158
214.......................................................................................................................................................................................158
D6.........................................................................................................................................................................................158
╓...........................................................................................................................................................................................158
246.......................................................................................................................................................................................158
F6.........................................................................................................................................................................................158
÷...........................................................................................................................................................................................158
55.........................................................................................................................................................................................158
37.........................................................................................................................................................................................158
7...........................................................................................................................................................................................158
87.........................................................................................................................................................................................158
57.........................................................................................................................................................................................158
W..........................................................................................................................................................................................158
119.......................................................................................................................................................................................158
77.........................................................................................................................................................................................158
w...........................................................................................................................................................................................158
151.......................................................................................................................................................................................158
97.........................................................................................................................................................................................158
ù...........................................................................................................................................................................................158
183.......................................................................................................................................................................................158
B7.........................................................................................................................................................................................158
╖...........................................................................................................................................................................................158
215.......................................................................................................................................................................................158
D7.........................................................................................................................................................................................158
╫...........................................................................................................................................................................................158
247.......................................................................................................................................................................................158
F7.........................................................................................................................................................................................158
≈...........................................................................................................................................................................................158
56.........................................................................................................................................................................................158
38.........................................................................................................................................................................................158
8...........................................................................................................................................................................................158
88.........................................................................................................................................................................................158
58.........................................................................................................................................................................................158
X...........................................................................................................................................................................................158
120.......................................................................................................................................................................................158
78.........................................................................................................................................................................................158
x...........................................................................................................................................................................................158
152.......................................................................................................................................................................................158
98.........................................................................................................................................................................................158
ÿ...........................................................................................................................................................................................158
184.......................................................................................................................................................................................158
B8.........................................................................................................................................................................................158
╕...........................................................................................................................................................................................158
216.......................................................................................................................................................................................158
D8.........................................................................................................................................................................................158
╪...........................................................................................................................................................................................158
248.......................................................................................................................................................................................158
F8.........................................................................................................................................................................................158
°............................................................................................................................................................................................158
57.........................................................................................................................................................................................158
39.........................................................................................................................................................................................158
9...........................................................................................................................................................................................158
89.........................................................................................................................................................................................158
59.........................................................................................................................................................................................158
Y...........................................................................................................................................................................................158
121.......................................................................................................................................................................................158
79.........................................................................................................................................................................................158
y...........................................................................................................................................................................................158
153.......................................................................................................................................................................................158
99.........................................................................................................................................................................................158
Ö...........................................................................................................................................................................................158
185.......................................................................................................................................................................................158
B9.........................................................................................................................................................................................158
╣...........................................................................................................................................................................................158
217.......................................................................................................................................................................................158
D9.........................................................................................................................................................................................158
┘...........................................................................................................................................................................................158
249.......................................................................................................................................................................................158
F9.........................................................................................................................................................................................158
·............................................................................................................................................................................................158
58.........................................................................................................................................................................................158
3A.........................................................................................................................................................................................158
:............................................................................................................................................................................................158
90.........................................................................................................................................................................................158
5A.........................................................................................................................................................................................158
Z...........................................................................................................................................................................................158
122.......................................................................................................................................................................................158
7A.........................................................................................................................................................................................158
z............................................................................................................................................................................................158
154.......................................................................................................................................................................................158
9A.........................................................................................................................................................................................158
Ü...........................................................................................................................................................................................158
186.......................................................................................................................................................................................158
BA........................................................................................................................................................................................158
║...........................................................................................................................................................................................158
218.......................................................................................................................................................................................158
DA........................................................................................................................................................................................158
┌...........................................................................................................................................................................................158
250.......................................................................................................................................................................................158
FA........................................................................................................................................................................................158
·............................................................................................................................................................................................158
59.........................................................................................................................................................................................158
3B.........................................................................................................................................................................................158
;............................................................................................................................................................................................158
91.........................................................................................................................................................................................158
5B.........................................................................................................................................................................................158
[............................................................................................................................................................................................158
123.......................................................................................................................................................................................158
7B.........................................................................................................................................................................................158
{............................................................................................................................................................................................158
155.......................................................................................................................................................................................158
9B.........................................................................................................................................................................................158
¢...........................................................................................................................................................................................158
187.......................................................................................................................................................................................158
BB........................................................................................................................................................................................158
╗...........................................................................................................................................................................................158
219.......................................................................................................................................................................................158
DB........................................................................................................................................................................................158
█...........................................................................................................................................................................................158
251.......................................................................................................................................................................................158
FB.........................................................................................................................................................................................158
√...........................................................................................................................................................................................158
60.........................................................................................................................................................................................158
3C.........................................................................................................................................................................................158
<...........................................................................................................................................................................................158
92.........................................................................................................................................................................................158
5C.........................................................................................................................................................................................158
\............................................................................................................................................................................................158
124.......................................................................................................................................................................................158
7C.........................................................................................................................................................................................158
|.............................................................................................................................................................................................158
156.......................................................................................................................................................................................158
9C.........................................................................................................................................................................................158
£...........................................................................................................................................................................................158
188.......................................................................................................................................................................................158
BC........................................................................................................................................................................................158
╝...........................................................................................................................................................................................158
220.......................................................................................................................................................................................158
DC........................................................................................................................................................................................158
▄...........................................................................................................................................................................................158
252.......................................................................................................................................................................................158
FC.........................................................................................................................................................................................158
ⁿ............................................................................................................................................................................................158
61.........................................................................................................................................................................................158
3D.........................................................................................................................................................................................158
=...........................................................................................................................................................................................158
93.........................................................................................................................................................................................158
5D.........................................................................................................................................................................................158
]............................................................................................................................................................................................158
125.......................................................................................................................................................................................158
7D.........................................................................................................................................................................................158
}............................................................................................................................................................................................158
157.......................................................................................................................................................................................158
9D.........................................................................................................................................................................................158
¥...........................................................................................................................................................................................158
189.......................................................................................................................................................................................158
BD........................................................................................................................................................................................158
╜...........................................................................................................................................................................................158
221.......................................................................................................................................................................................158
DD........................................................................................................................................................................................158
▌...........................................................................................................................................................................................158
253.......................................................................................................................................................................................158
FD........................................................................................................................................................................................158
²............................................................................................................................................................................................158
62.........................................................................................................................................................................................158
3E.........................................................................................................................................................................................158
>...........................................................................................................................................................................................158
94.........................................................................................................................................................................................158
5E.........................................................................................................................................................................................158
^............................................................................................................................................................................................158
126.......................................................................................................................................................................................158
7E.........................................................................................................................................................................................158
~...........................................................................................................................................................................................158
158.......................................................................................................................................................................................158
9E.........................................................................................................................................................................................158
P...........................................................................................................................................................................................158
190.......................................................................................................................................................................................158
BE........................................................................................................................................................................................158
╛...........................................................................................................................................................................................158
222.......................................................................................................................................................................................158
DE........................................................................................................................................................................................158
▐...........................................................................................................................................................................................158
254.......................................................................................................................................................................................158
FE.........................................................................................................................................................................................158
■...........................................................................................................................................................................................158
63.........................................................................................................................................................................................158
3F.........................................................................................................................................................................................158
?............................................................................................................................................................................................158
95.........................................................................................................................................................................................158
5F.........................................................................................................................................................................................158
_...........................................................................................................................................................................................158
127.......................................................................................................................................................................................158
7F.........................................................................................................................................................................................158
159.......................................................................................................................................................................................158
9F.........................................................................................................................................................................................158
ƒ...........................................................................................................................................................................................158
191.......................................................................................................................................................................................158
BF.........................................................................................................................................................................................158
┐...........................................................................................................................................................................................158
223.......................................................................................................................................................................................158
DF........................................................................................................................................................................................158
▀...........................................................................................................................................................................................158
255.......................................................................................................................................................................................158
FF.........................................................................................................................................................................................158
ANNEXE D - CODES RETOURNES PAR LE CLAVIER..............................................................................................159
ANNEXE D - CODES RETOURNES PAR LE CLAVIER..............................................................................................159
Les touches de fonction et les touches combinées avec Alt, Ctrl génèrent des codes étendus. Un code étendu se
compose de deux caractères dont le premier est égal au caractère NUL (valeur ASCII zéro) et le second correspond au
code de touche étendu..........................................................................................................................................................159
La table suivante présente la liste des codes de touches étendus.......................................................................................159
Second Octet........................................................................................................................................................................159
Signification........................................................................................................................................................................159
3...........................................................................................................................................................................................159
NUL.....................................................................................................................................................................................159
15.........................................................................................................................................................................................159
Shift Tab..............................................................................................................................................................................159
16-25....................................................................................................................................................................................159
Séquences Alt A,Z,E,R,T,Y,U,I,O,P..................................................................................................................................159
30-39....................................................................................................................................................................................159
Séquences Alt Q,S,D,F,G,H,J,K,L,M.................................................................................................................................159
44-49....................................................................................................................................................................................159
Séquences Alt W,X,C,V,B,N..............................................................................................................................................159
59-68....................................................................................................................................................................................159
F1 à F10...............................................................................................................................................................................159
71.........................................................................................................................................................................................159
Home....................................................................................................................................................................................159
72.........................................................................................................................................................................................159
UpArrow..............................................................................................................................................................................159
73.........................................................................................................................................................................................159
PgUp....................................................................................................................................................................................159
75.........................................................................................................................................................................................159
LeftArrow............................................................................................................................................................................159
77.........................................................................................................................................................................................159
RightArrow..........................................................................................................................................................................159
79.........................................................................................................................................................................................159
End.......................................................................................................................................................................................159
80.........................................................................................................................................................................................159
DownArrow.........................................................................................................................................................................159
81.........................................................................................................................................................................................159
PgDn....................................................................................................................................................................................159
82.........................................................................................................................................................................................159
Ins.........................................................................................................................................................................................159
83.........................................................................................................................................................................................159
Del........................................................................................................................................................................................159
84-93....................................................................................................................................................................................159
Shift F1 à Shift F10 (F11 à F20).........................................................................................................................................159
94-103..................................................................................................................................................................................159
Ctrl F1 à Ctrl F10 (F21 à F30)............................................................................................................................................159
104-113................................................................................................................................................................................159
Alt F1 à Alt F10 (F31 à F40)..............................................................................................................................................159
114.......................................................................................................................................................................................159
Ctrl PrtScr............................................................................................................................................................................159
115.......................................................................................................................................................................................159
Ctrl LeftArrow.....................................................................................................................................................................159
116.......................................................................................................................................................................................159
Ctrl RightArrow...................................................................................................................................................................159
117.......................................................................................................................................................................................159
Ctrl End................................................................................................................................................................................159
118.......................................................................................................................................................................................159
Ctrl PgDn.............................................................................................................................................................................159
119.......................................................................................................................................................................................159
Ctrl Home............................................................................................................................................................................159
120-131................................................................................................................................................................................159
Séquences Alt 1,2,3,4,5,6,7,8,9,0,),-...................................................................................................................................159
132.......................................................................................................................................................................................159
Ctrl PgUp.............................................................................................................................................................................159
133.......................................................................................................................................................................................159
F11.......................................................................................................................................................................................159
134.......................................................................................................................................................................................159
F12.......................................................................................................................................................................................159
135.......................................................................................................................................................................................159
Shift F11..............................................................................................................................................................................159
136.......................................................................................................................................................................................159
Shift F12..............................................................................................................................................................................159
137.......................................................................................................................................................................................159
Ctrl F11................................................................................................................................................................................159
138.......................................................................................................................................................................................159
Ctrl F12................................................................................................................................................................................159
139.......................................................................................................................................................................................159
Alt F11.................................................................................................................................................................................159
140.......................................................................................................................................................................................159
Alt F12.................................................................................................................................................................................159
BIBLIOGRAPHIE...............................................................................................................................................................160
BIBLIOGRAPHIE...............................................................................................................................................................160
Annexes...............................................................................................................................................................................151
Manuels de TURBO PASCAL (Versions 5 à 7.01)...........................................................................................................160
BORLAND INTL – BORLAND INPRISE........................................................................................................................160
Le Langage PASCAL..........................................................................................................................................................160
E N S T Br R. OGOR........................................................................................................................................................160
PASCAL USER MANUAL AND REPORT......................................................................................................................160
JENSEN & WIRTH............................................................................................................................................................160
Cours PASCAL ..................................................................................................................................................................160
ESE......................................................................................................................................................................................160
Le PASCAL par la pratique LE BEUX et TAVERNIER..................................................................................................160
Editions SYBEX..................................................................................................................................................................160
Index....................................................................................................................................................................................161
Index....................................................................................................................................................................................161
DMSI/PROGRAMMATION - 161 -...................................................................................................................................151