Résumé de la syntaxe basique de FreePascal

Transcription

Résumé de la syntaxe basique de FreePascal
Synthèse de la syntaxe de base FreePascal
Laurent Vercouter - STPI / INSA de Rouen
1
Préambule
Cette fiche propose une très synthétique description de la syntaxe des
instructions de base de FreePascal.
Éléments de notation formelle :
— les symboles <> encadrent un terme à remplacer par un identifiant
(sans les <>)
— les symboles [ ] encadrent des termes dont l’écriture n’est pas obligatoire (sans les [ ])
— le symbole . . . indique une possible répétition de la partie précédente
2
Structure d’un programme Pascal
La structure de base du code source d’un programme Pascal est la suivante :
program < nom_programme >;
[ declarations ]
begin
[ instructions ]
end.
3
Déclaration de variables
La déclaration de variables se fait dans un espace de déclaration avec le
mot-clé var. Après ce mot-clé, on écrit l’identifiant de la variable à déclarer
suivi de : puis du type de donnée souhaité avant de terminer par un ;
Si plusieurs variables du même type sont à déclarer, tous leurs identifiants
peuvent être écrits avant les : en les séparant par une virgule.
Si des variables de type différents sont à déclarer, on peut ne pas répéter
le mot-clé var et les écrire après le ; terminant la déclaration précédente.
Écriture générale :
1
var <id1 > [ , <id2 > , ...] : < type1 >;
[ < id3 > [ , <id4 > , ...] : < type2 >;]
[...]
Exemple :
var nom
: String ;
taille , poids : Real;
age
: Integer ;
Parmi les types de données fréquemment utilisés on trouve : Boolean,
Integer, Real, Char, String, Array <dimensions> of <type1>
La définition de nouveaux types de données se fait avec le mot-clé Type
et la syntaxe suivante :
Type < nouveau_type > = < type_existant >;
4
Opérateurs
Voici quelques opérateurs classiques des types de données simples cités
ci-dessus.
Symbole
not
or
and
xor
=
<>
Boolean
Écriture
not <Boolean>
<Boolean> or <Boolean>
<Boolean> and <Boolean>
<Boolean> xor <Boolean>
<Boolean> = <Boolean>
<Boolean> <> <Boolean>
Type du résultat
Boolean
Boolean
Boolean
Boolean
Boolean
Boolean
Integer
Symbole
+
*
/
div
mod
char
=
<>
<
>
<=
>=
Écriture
<Integer> + <Integer>
<Integer> - <Integer>
<Integer> * <Integer>
<Integer> / <Integer>
<Integer> div <Integer>
<Integer> mod <Integer>
char(<Integer>)
<Integer> = <Integer>
<Integer> <> <Integer>
<Integer> < <Integer>
<Integer> > <Integer>
<Integer> <= <Integer>
<Integer> >= <Integer>
2
Type du résultat
Integer
Integer
Integer
Real
Integer
Integer
Char
Boolean
Boolean
Boolean
Boolean
Boolean
Boolean
Symbole
+
*
/
=
<>
<
>
<=
>=
Real
Écriture
<Real> + <Real>
<Real> - <Real>
<Real> * <Real>
<Real> / <Real>
<Real> = <Real>
<Real> <> <Real>
<Real> < <Real>
<Real> > <Real>
<Real> <= <Real>
<Real> >= <Real>
Type du résultat
Real
Real
Real
Real
Boolean
Boolean
Boolean
Boolean
Boolean
Boolean
Char
Symbole
ord
succ
pred
=
<>
<
>
<=
>=
Écriture
ord(<Char>)
succ(<Char>)
pred(<Char>)
<Char> = <Char>
<Char> <> <Char>
<Char> < <Char>
<Char> > <Char>
<Char> <= <Char>
<Char> >= <Char>
Type du résultat
Integer
Char
Char
Boolean
Boolean
Boolean
Boolean
Boolean
Boolean
String
Symbole
+
=
<>
<
>
<=
>=
5
Écriture
<String>
<String>
<String>
<String>
<String>
<String>
<String>
+ <String>
= <String>
<> <String>
< <String>
> <String>
<= <String>
>= <String>
Type du résultat
String
Boolean
Boolean
Boolean
Boolean
Boolean
Boolean
Instructions conditionnelles
Les deux instructions conditionnelles sont if et case of avec pour syntaxe :
i f < condition > then
< instructions >
[ else
< instructions >] ;
3
case < variable_choix > o f
< valeur1 > [ , < valeur2 > ...] : < instructions >;
< valeur3 > [ , < valeur4 > ...] : < instructions >;
...
e l s e < instructions >;
end;
Avec :
— <condition> qui est une valeur booléenne
— <variable_choix> qui est une variable de type Boolean, Integer,
Char ou un type énuméré
— <valeur1>, <valeur2>, ... qui sont des valeurs du type de <variable_choix>
— <instructions> qui est une seule instruction ou un ensemble d’instructions, séparées par un point-virgule, et encadré par les mots-clés
begin et end
A noter : il ne fait pas placer de point-virgule après l’instruction suivant
le then dans le cas où une clause else existe.
6
Instructions itératives
Les trois instructions itératives sont for, while et repeat avec pour
syntaxe :
f o r < compteur > := < valeur_initiale > to < valeur_finale > do
< instructions >;
while < condition > do
< instructions >;
repeat
< instructions >
u n t i l < condition >;
Avec :
— <condition> qui est une valeur booléenne
— <compteur> qui est une variable de type Integer, Char ou un type
énuméré
— <valeur_ initiale> et <valeur_finale> qui sont des valeurs du
type de <compteur>
— <instructions> qui est une seule instruction ou un ensemble d’instructions, séparées par un point-virgule, et encadré par les mots-clés
begin et end
Une écriture alternative dite descendante d’une boucle for avec <valeur_initiale>
≥ <valeur_finale> et où le compteur décroît à chaque itération est :
f o r < compteur > := < valeur_initiale > downto < valeur_finale > do
< instructions >;
4
7
Fichiers
Les principales instructions permettant de manipuler les fichiers sont :
var fichier : Text;
fichier2 : F i l e o f <Type>;
nomFichier : String ;
chaineDeCaracteres : String ;
begin
{ Ouvrir un fichier en lecture }
assign ( fichier , nomFichier ) ;
{ positionner le curseur en lecture en debut du fichier }
r e s e t ( fichier ) ;
{ lire une ligne du fichier }
readln ( fichier , chaineDeCaracteres ) ;
{ est - on a la fin du fichier ? renvoie un booleen }
eof ( fichier ) ;
{ fermer le fichier }
close ( fichier ) ;
{ Ouvrir un fichier en ecriture / creer un fichier }
assign ( fichier , nomFichier ) ;
{ Creer le fichier s ’ il n ’ existe pas ou l ’ effacer s ’ il
existait ... }
rewrite ( fichier ) ;
{ Ou ajouter du contenu a la fin du fichier }
append ( fichier ) ;
{ Ecrire dans le fichier }
writeln ( fichier2 , ’ toto ’) ;
{ fermer le fichier }
close ( fichier ) ;
end.
avec les prototypes suivant :
— procédure assign(<variableDeTypeFichier>, <variable2>) ; avec
<variableDeTypeFichier> de type Text ou File of <Type>, et
<Type> désignant un type déjà déclaré, et <variable2> de type
String désignant le chemin (relatif ou complet) vers le nom du fichier.
— procédure reset(<VariableDeTypeFichier>) - ouverture du fichier
en mode lecture
— procédure append(<VariableDeTypeFichier>) - ouverture du fichier
en mode ajout (écriture à la fin du fichier)
— procédure rewrite(<VariableDeTypeFichier>) - ouverture du fichier en mode écriture (créer le fichier / supprimer le contenu antérieur)
— procédure readln(<VariableDeTypeFichier>, <variable2>) - lit
5
une ligne du fichier désigné par <VariableDeTypeFichier> et copie
son contenu dans <variable2>, qui doit etre du meme type que le
fichier (e.g. Integer si le fichier est un File of Integer, ou String si le
fichier est de type Text)
— procédure writeln(<VariableDeTypeFichier>, <variables>) - écrit
dans le fichier désigné par <VariableDeTypeFichier> les valeurs de
<variables>.
— fonction Boolean eof(<VariableDeTypeFichier>) renvoie si le curseur est positionné en fin de fichier.
— procédure close(<VariableDeTypeFichier>) - fermeture du fichier
6