Pascal - Unités

Un programme Pascal peut être constitué de modules appelés unités. Une unité peut être constituée de certains blocs de code, qui à leur tour sont constitués de variables et de déclarations de type, d'instructions, de procédures, etc. Il existe de nombreuses unités intégrées dans Pascal et Pascal permet aux programmeurs de définir et d'écrire leurs propres unités à utiliser plus tard dans divers programmes.

Utilisation d'unités intégrées

Les unités intégrées et les unités définies par l'utilisateur sont incluses dans un programme par la clause uses. Nous avons déjà utilisé l'unité des variantes dans le tutoriel Pascal - Variantes . Ce didacticiel explique la création et l'inclusion d'unités définies par l'utilisateur. Cependant, voyons d'abord comment inclure une unité intégréecrt dans votre programme -

program myprog;
uses crt;

L'exemple suivant illustre l'utilisation du crt unité -

Program Calculate_Area (input, output);
uses crt;
var 
   a, b, c, s, area: real;

begin
   textbackground(white); (* gives a white background *)
   clrscr; (*clears the screen *)
   
   textcolor(green); (* text color is green *)
   gotoxy(30, 4); (* takes the pointer to the 4th line and 30th column) 
   
   writeln('This program calculates area of a triangle:');
   writeln('Area = area = sqrt(s(s-a)(s-b)(s-c))');
   writeln('S stands for semi-perimeter');
   writeln('a, b, c are sides of the triangle');
   writeln('Press any key when you are ready');
   
   readkey;
   clrscr;
   gotoxy(20,3);
   
   write('Enter a: ');
   readln(a);
   gotoxy(20,5);
   
   write('Enter b:');
   readln(b);
   gotoxy(20, 7);
   
   write('Enter c: ');
   readln(c);

   s := (a + b + c)/2.0;
   area := sqrt(s * (s - a)*(s-b)*(s-c));
   gotoxy(20, 9);
   
   writeln('Area: ',area:10:3);
   readkey;
end.

C'est le même programme que nous avons utilisé au début du didacticiel Pascal, compilez-le et exécutez-le pour trouver les effets du changement.

Créer et utiliser une unité Pascal

Pour créer une unité, vous devez écrire les modules ou sous-programmes que vous souhaitez y stocker et l'enregistrer dans un fichier avec .pasextension. La première ligne de ce fichier doit commencer par le mot-clé unité suivi du nom de l'unité. Par exemple -

unit calculateArea;

Voici trois étapes importantes de la création d'une unité Pascal -

  • Le nom du fichier et le nom de l'unité doivent être exactement les mêmes. Ainsi, notre unité CalculateArea sera enregistrée dans un fichier nommé CalculateArea.pas.

  • La ligne suivante doit être constituée d'un seul mot-clé interface. Après cette ligne, vous écrirez les déclarations pour toutes les fonctions et procédures qui viendront dans cette unité.

  • Juste après les déclarations de fonction, écrivez le mot implementation, qui est à nouveau un mot-clé. Après la ligne contenant l'implémentation du mot-clé, fournissez la définition de tous les sous-programmes.

Le programme suivant crée l'unité nommée CalculateArea -

unit CalculateArea;
interface

function RectangleArea( length, width: real): real;
function CircleArea(radius: real) : real;
function TriangleArea( side1, side2, side3: real): real;

implementation

function RectangleArea( length, width: real): real;
begin
   RectangleArea := length * width;
end;

function CircleArea(radius: real) : real;
const
   PI = 3.14159;
begin
   CircleArea := PI * radius * radius;
end;

function TriangleArea( side1, side2, side3: real): real;
var
   s, area: real;

begin
   s := (side1 + side2 + side3)/2.0;
   area := sqrt(s * (s - side1)*(s-side2)*(s-side3));
   TriangleArea := area;
end;

end.

Ensuite, écrivons un programme simple qui utiliserait l'unité que nous avons définie ci-dessus -

program AreaCalculation;
uses CalculateArea,crt;

var
   l, w, r, a, b, c, area: real;

begin
   clrscr;
   l := 5.4;
   w := 4.7;
   area := RectangleArea(l, w);
   writeln('Area of Rectangle 5.4 x 4.7 is: ', area:7:3);

   r:= 7.0;
   area:= CircleArea(r);
   writeln('Area of Circle with radius 7.0 is: ', area:7:3);

   a := 3.0;
   b:= 4.0;
   c:= 5.0;
  
   area:= TriangleArea(a, b, c);
   writeln('Area of Triangle 3.0 by 4.0 by 5.0 is: ', area:7:3);
end.

Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant -

Area of Rectangle 5.4 x 4.7 is: 25.380
Area of Circle with radius 7.0 is: 153.938
Area of Triangle 3.0 by 4.0 by 5.0 is: 6.000