Turbo Pascal en Bref

Transcription

Turbo Pascal en Bref
Université Paris VI
T. Z. B OULMEZAOUD .
TURBO PASCAL EN BREF
Quelques remarques preliminaires.
Dans tout ce document, une expression est écrite en gras quand elle est réservée.
Les commentaires en Pascal s’écrivent sous la forme:
f commentaire g ou (* commentaire *)
Le Pascal ne fait pas de différence entre les majuscules et les minuscules.
La version de Turbo Pascal sous Windows est normalement équipée d’un manuel en ligne qu’on
obtient en cliquant sur le bouton de droite de la souris. Il est très pratique. Il est aussi très facile à
utiliser.
1. LES TYPES DE DONNEES.
Types simples:
T YPES ENTIERS : shortint, integer, longinteger, byte (non signé), word (non signé).
T YPE BOOL ÉEN : boolean (true or false)
T YPE CARACT ÈRE : char.
T YPE ÉNUM ÉR É : enumerated
Exemple: enumerated date = (jour,mois,an) ;
(jour, mois, an sont de type date).
T YPE INTERVALLE : constante 1..constante 2 (exemple: 1..20;).
T YPES R ÉELS : real, single, double, extended.
Les trois derniers types nécessitent le co-processeur arithmétique 8087.
T YPE CHAINE DE CARACT ÈRES : string[nombre des caratères]
Types structurés:
T YPE TABLEAU : array[type de l’indice,...] of type composant;
Exemples: array[1..20] of real; array[1..20, 4..8] of char ;
T YPE ENREGISTREMENT:
record
(* partie fixe *)
:
identificateur 1 : type 1 ;
:
identificateur n : type n ;
(* partie variable *)
case of identificateur : type of
constante 1 : ( champ ; champ;...) ;
:
:
constante m : ( champ; champ ;...) ;
end ;
où on a appelé champ une déclaration de la forme: identificateur : type
1
Exemple:
type
cylce
= (deug, licence, maitrise);
mentions = (passable, assez bien, bien, tres bien);
date
= record
jour : 1..31;
mois : 1..12;
an : integer;
end;
etudiant = record
nom, prenom : string[80];
date naissance : date;
mariage
: boolean;
sexe
: char;
branche
: array[cylce] of string[30];
mention
: array[cylce] of mentions;
end;
T YPE ENSEMBLE : set of type scalaire ;
(type scalaire ne doit pas dépasser 256 valeurs; donc les types
shortint, integer, longint, word sont refusés). Exemple: set of ’A’..’Z’;
T YPE FICHIER TEXTE : Text
T YPE POINTEUR : ^type de base (Exemple: ^integer;).
2. LES VARIABLES.
Déclaration.
var
nom variable 1 : type ;
nom variable 2 : type absolute adresse mémoire ;
Exemples: i : byte absolute $0040:$0049; (segment et déplacement), k : byte absolute m ; (même
adresse que m).
Références à une variables.
x (variable simple), date.jour (champ d’un enrégistrement), tab[i] (élement d’un tableau 1D),
mat[i][j] ou mat[i, j] (élément d’un tableau 2D), chaine[i] (caractère d’une chaine).
Dans une chaı̂ne de caractère, l’élément d’indice 0 n’est rien d’autre que sa longueur.
3. LES CONSTANTES.
const
nom constante = valeur ; (* constante non typée *)
nom variable 1 : type = valeur constante ; (* constante typée *)
Exemples:
const
nombre = 100;
ChiffresHexa : set of ’0’..’z’ = [’0’..’9’,’A’..’F’,’a’..’f’];
2
4. LES OPERATEURS.
A RITHM ÉTIQUES : + , - , / , div , mod (binaires) et + , - (unaires: signe)
L OGIQUES (entre entiers): not , and , or , xor , shl (décalage à gauche), shr (à droite).
B OOL ÉENS : not , and , or , xor .
D E CHAINES DE CARACT ÈRES : + (concaténation).
D’ ENSEMBLES : + (union), - (différence), * (intersection), ¡= (inclus), = (contient), in (appartient
à).
>
<> < > <= >=
<>
R ELATIONNELS : = ,
, , ,
,
.
.
D E POINTEURS : = ,
@nom ident : adresse mémoire de la variable, procédure ou fonction nom ident.
nom pointeur^ : donne la valeur de la variable pointée par le pointeur nom pointeur .
(cette variable est considérée du type de base du pointeur nom pointeur).
5. LES INSTRUCTIONS.
A FFECTATION :
nom variable := valeur ; .
P ROCEDURE :
nom procedure(liste des paramètres);
F ONCTION : l’expression nom fonction(liste des paramètres) est utilisée comme une variable valant
la valeur retournée par la fonction nom fonction avec les paramètres d’entrée spécifiés.
B LOC D ’ INSTRUCTION :
Begin
instruction 1;
instruction 2;
:
:
end;
L’ INSTRUCTION G OTO :
goto label;
L’ INSTRUCTION I F :
if expression booléenne then instruction (ou bloc)
else instruction; (ou bloc)
L’ INSTRUCTION C ASE :
Case expression of
constante 1 ou intervalle , constante 2,...: instruction 1 ;
constante 3 , constante 4,... : instruction 2 ;
:
:
else
instruction 1 ;
instruction 2 ;
:
:
end;
L’ INSTRUCTION R EPEAT:
Repeat
instruction 1 ;
instruction 2 ;
:
:
3
Until expression booléenne ;
L’ INSTRUCTION W HILE :
while expression booléene do instruction; ( ou bloc d’instructions)
L’ INSTRUCTION F OR :
for variable de contrôle:= valeur initiale to (ou downto ) valeur finale do
instruction ; ( ou bloc d’instructions)
L’ INSTRUCTION WITH :
with variable enrégistrement do
instruction ; ( ou bloc d’instructions)
Cela signifie qu’on travaille à l’intérieur de la variable structurée “variable enrégistrement” (de type
enrégistrement) et qu’il n’est pas nécessaire de mettre le nom de cette dernière devant les noms des
champs qui la composent.
6. LES PROCEDURES.
Déclaration:
procedure nom (paramètres par valeurs ; var paramètre par adresse ) ;
var
déclarations des variables locales
begin
instructions
end;
Les paramètres par valeurs sont transmis à la procédure par valeur (une copie de la variable). Les
paramètres par adresse sont transmis par adresse(une copie de l’adresse). Ces derniers peuvent donc être
changés dans la procédure.
Récursivité: une procédure peut appeler elle-même.
Déclaration différée: la procédure est d’abord déclarée (donc peut être utilisée), puis définie plus loin
dans le programme ! cela permet la RÉCURSIVIT É MUTUELLE entre procédures:
procedure nom (paramètres ) ; forward ;
Partie intermédiaire du programme (d’autres procédures, instructions,...etc)
procedure nom (paramètres ) ;
corps de la procédure.
Il n’est pas nécessaire de redéclarer les paramètres formels dans la deuxième partie où la procédure
est définie.
7. LES FONCTIONS.
Déclaration:
function nom ( paramètres formels ) : type du résultat ;
var
déclarations des variables locales
begin
instructions
end;
4
Dans le corps de la fonction, le résultat est affectée à la variable “nom” (c’est-à-dire le nom de la
fonction).
Comme pour les procédures, la récursivité et la déclaration différée sont possibles.
8. QUELQUES PROCEDURES
ET FONCTIONS STANDARDS.
Fonctions arithmétiques:
Abs(x) (valeur absolue), Arctan(x), sin(x), cos(x), exp(x), sqr(x)(carré de ), sqrt(x) (racine de ),
ln(x), int(x) (partie entière de ), frac(x) (partie fractionnaire de ),
Round(x) (l’entier le plus proche de ), odd(i) ( = true si i est impair).
Fonctions pour caractères et chaines de caractères:
lenght( chaine : string ) (longueur de la chaine),
Str(x) (le caractère correspondant au nombre ),
Upcase(ch : char ) (convertit ch en majuscule),
cancat (s 1, s 2,... : string ) (concaténation des chaines de caractères),
procedure val (s : string; var v ; erreur : integer) (convertit la chaine en sa valeur ).
Procédures de manipulation de fichiers textes:
Input, Output : identificateurs de fichiers Text de l’entrée et sortie standards.
procedure Assign(f: text ; nom f : string ) : assigne le nom f (chemin d’accés) à la variable .
procedure Reset(f) : ouvre en lecture un fichier existant portant le nom assigné à .
procedure Rewrite(f) : crée et ouvre en écriture le fichier assigné à .
procedure Append(f) : ouvre en écriture le fichier assigné à en mode RAJOUT.
procedure Erase(f) : efface le fichier assigné à .
function Eof(f) : fonction booléenne qui renvoie true si le curseur est en fin du fichier .
procedure Write([f], [,v 2,...,v n] ) : écrit la variable (caractère, entier, réel, booléen ou chaı̂ne)
dans le fichier texte assigné à . Si est omis, l’écriture se fait sur la sortie standard.
procedure Writeln([f], [,v 2,...,v n] ) : exécute write, puis envoie un saut de ligne.
procedure Read([f], [,v 2,...,v n] ) : lit la variable (caractère, entier, réel, booléen ou chaı̂ne)
depuis le fichier texte assigné à . Si est omis, la lecture se fait à partir de l’entrée standard.
procedure Readln( [f], [,v 2,...,v n] ) : exécute read et passe à ligne suivante.
Autre fonctions et procédures:
procedure Randomize : initialise le générateur de nombres aléatoires.
Random (): renvoie un nombre réel aléatoire compris entre 0 et 1.
) renvoie un nombre entier (de type word) aléatoire compris entre 0 et
.
Random (
Sizeof( ) : renvoie le nombre d’octets occupés par la variable .
Addr( ) : renvoie l’adresse mémoire de la variable (=@ ).
procedure Exit : sortie immédiate du bloc d’instructions.
procedure Halt : arrêt immédiat du programme.
hertz.
procedure Sound(Hz: word ) : emmet un signal sonore de fréquence
procedure Nosound : arrêt du signal sonore.
x
x
x
x
x
x
s
f
v
v
v
v
x
x
f
f
f
v
f
f
f
f
f
v
v
f
imax
x
x
imax
x
Hz
9. LES LIBRAIRIES (OU LES UNITES).
Une librairie (ou une unité) est un programme annexe contenant la définition d’un ensemble de
variables, de fonctions et de procédures utiles dans le programme principal. Elle sont à la base de LA
PROGRAMMATION MODULAIRE en Pascal. Voici la syntaxe d’une librairie:
unit nom librairie ;
interface
5
(* La partie interface *)
déclaration des constantes, des variables,
des procédures et des fonctions (sans les corps)
qui peuvent être utilisées dans le programme
appelant la librairie.
implementation
(* La partie implementation *)
déclarations des constantes, des variables,
des procédures et des fonctions privées.
Corps des procédures et fonctions publiques
(c’est-à-dire déclarées dans la partie interface)
(* La partie initialisation *)
instructions
end.
Une librairie peut être appelée en utilisant uses des deux manières suivantes:
uses nom librairie ;
(dans ce cas le compilateur cherche le fichier nom librairie.tpu)
ou
uses f$U nom fichier g nom librairie ;
(dans ce cas le compilateur cherche le fichier nom fichier.tpu).
Une librairie peut utiliser une autre librairie (appel par uses dans la partie interface).
La librairie System est utilisée toujours et cela de manière implicite par le compilateur.
Les librairies suivantes sont utilisées avec Turbo Pascal sans être automatiquement appelées:
Dos: ensemble de sous-programme liés au système d’exploitation.
Crt ou WinCrt: librairie de contrôle des modes d’affichage (elle évite de passer par les fonctions
DOS).
Printer: librairie pour faciliter les communications avec l’imprimante depuis l’intérieur du programme.
Graph: bibliothéque graphique.
10. STRUCTURE DU PROGRAMME PRINCIPAL.
PROGRAM nom program ;
uses librairies ;
type
déclarations des types
const
déclarations des constantes
var
déclarations des variables
begin
les instructions
END.
6