Langage Pascal/Structure d’un programme
Rappel sur les blocs d'instructionsModifier
Une instruction séquence d'instructions regroupe plusieurs instructions en une seule.
Celle-ci commence par le mot clé begin
et se termine par end
.
Le ; sert à séparer deux instructions.
Voici un exemple :
begin
temp := x ;
x := y ;
y := temp
end;
Catégorie de fichierModifier
Un fichier source Pascal débute toujours par un mot clé indiquant le type de code :
- Un programme, c'est-à-dire une application indépendante (
program
) ; - Un module utilisable dans un programme ou un autre module (
unit
).
Ce mot clé doit être suivi d'un identifiant (un nom) afin de pouvoir faire référence à ce module ou ce programme.
Afin que le compilateur trouve les modules à partir de leur nom, il faut que le nom du fichier source soit identique : un module nommé par :
unit my_unit;
doit être enregistré dans un fichier nommé my_unit.pas
.
Exemple 1 : un programmeModifier
program first_app;
...
Exemple 2 : un moduleModifier
unit my_unit;
...
Exemple 3 : un programme utilisant le module de l'exemple 2Modifier
Le mot clé uses
spécifie la liste des modules utilisés :
program second_app;
uses my_unit;
...
CompilationModifier
L'extension des fichiers produits par la compilation varie selon la plateforme utilisée et le compilateur (natif ou P-code).
Cependant, la plupart des compilateurs ne gère pas la compilation en chaîne : chaque module et programme doit être compilé séparément et deux modules ne peuvent donc s'utiliser mutuellement au niveau de leur interface.
CommentairesModifier
Les commentaires sont encadrés par les accolades :
program first_app;
{ ma première application en Pascal }
...
Alternativement, on peut utiliser les parenthèses-étoiles :
program first_app;
(* ma première application en Pascal *)
...
Ce qui était plus pratique avec les anciens claviers ne comportant pas les accolades.
Le compilateur Turbo Pascal utilise certains commentaires spéciaux pour préciser des directives de compilations. Ceux-ci débutent par un caractère $, par exemple {$R-,I-}
pour désactiver la vérification des erreurs d'intervalle (Range errors) et des erreurs d'entrée-sortie (I/O errors).
Structure générale d'un programmeModifier
program {nom du programme};
uses {liste des modules utilisés};
{...déclaration des variables globales et des types...}
{...déclaration des procédures et fonctions...}
begin
{...instructions de la routine principale...}
end.
Structure générale d'un moduleModifier
Le module ou unité est divisé en deux grandes parties :
- La partie
interface
expose toutes les fonctions, procédures, variables et types publiques, c'est-à-dire accessibles depuis les modules et programmes qui utilisent ce module. - La partie
implementation
contient le code implémentant les fonctions et procédures publiques, et peut contenir d'autres variables, types, fonctions et procédures internes au module.
unit {nom du module};
interface
uses {liste des modules utilisés};
{...déclaration des variables globales et des types...}
{...déclaration des procédures et fonctions...}
implementation
uses {liste des modules utilisés};
{...déclaration des variables globales et des types...}
{...déclaration des procédures et fonctions...}
begin
{...instructions d'initialisation du module...}
end.
Note : il vaut mieux mettre les références aux autres modules dans la partie « implémentation » si cela est possible afin d’éviter les problèmes de référence circulaire. C'est-à-dire qu’il faut mettre dans la partie « interface » seulement les modules nécessaires à la compréhension des procédures et des fonctions publiques ainsi que de leurs paramètres. Il faut également mettre des références vers les modules contenant les types utilisés dans la partie « interface ».