Pascal - Unidades

Um programa Pascal pode consistir em módulos chamados unidades. Uma unidade pode consistir em alguns blocos de código, que por sua vez são compostos de variáveis ​​e declarações de tipo, instruções, procedimentos, etc. Existem muitas unidades integradas em Pascal e Pascal permite que os programadores definam e escrevam suas próprias unidades a serem usadas mais tarde em vários programas.

Usando unidades integradas

Ambas as unidades integradas e unidades definidas pelo usuário são incluídas em um programa pela cláusula de usos. Já usamos a unidade de variantes no tutorial Pascal - Variantes . Este tutorial explica como criar e incluir unidades definidas pelo usuário. No entanto, vamos primeiro ver como incluir uma unidade embutidacrt em seu programa -

program myprog;
uses crt;

O exemplo a seguir ilustra o uso do crt unidade -

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.

É o mesmo programa que usamos no início do tutorial Pascal, compile e execute-o para encontrar os efeitos da mudança.

Criando e usando uma unidade Pascal

Para criar uma unidade, você precisa escrever os módulos ou subprogramas que deseja armazenar nele e salvá-lo em um arquivo com .pasextensão. A primeira linha deste arquivo deve começar com a palavra-chave unidade seguida do nome da unidade. Por exemplo -

unit calculateArea;

A seguir estão três etapas importantes na criação de uma unidade Pascal -

  • O nome do arquivo e o nome da unidade devem ser exatamente iguais. Portanto, nossa unidade calculaArea será salva em um arquivo chamado calculArea.pas.

  • A próxima linha deve consistir em uma única palavra-chave interface. Após esta linha, você escreverá as declarações para todas as funções e procedimentos que virão nesta unidade.

  • Logo após as declarações da função, escreva a palavra implementation, que é novamente uma palavra-chave. Após a linha que contém a implementação da palavra-chave, forneça a definição de todos os subprogramas.

O programa a seguir cria a unidade chamada calcularArea -

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.

A seguir, vamos escrever um programa simples que usaria a unidade que definimos acima -

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.

Quando o código acima é compilado e executado, ele produz o seguinte resultado -

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