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