LENGUAJES DE PROGRAMACIÓN  
 
 
FreePascal

PASCAL CON FREE PASCAL

 
 

 

6.7. Unidades (Librerias).

 

anterior :: indice :: siguiente

 

Las unidades son archivos que se usan para almacenar nuestras rutinas (procedimientos y funciones), variables, tipos de datos y de ese modo pueden ser usados en otros programas o unidades. Para poder usar las unidades en otros programas se hace uso de la palabra reservada use al inicio de cada programa, un ejemplo es el uso de la unidad math, que hemos visto en capítulos anteriores.

Las unidades se pueden compilar independientemente, es decir una unidad es independiente del programa que lo use. Una vez que una unidad ha sido compilada no necesita compilarse más veces.

Las unidades también se conocen como librerías, ya que estas reúnen las constantes, variables, procedimientos y funciones de propósito común para usarlo en distintos programas. Una unidad está constituida de cuatro partes, interfaz (interface), implementación (implementation), inicialización (initialization) y finalización (finalization). A continuación ejemplo:

 

 
{$codepage UTF8}

UNIT MiUnidad;

INTERFACE

  Uses math;
  Const PI=3.141592654;
        Nep=2.718281828;
  Procedure PolarRect(angulo,radio:double;var x,y:double);
  
IMPLEMENTATION

  Procedure PolarRect(angulo,radio:double;var x,y:double);
    Begin
      //Las funciones sin y cos
      //se encuentra en la unidad math
      x:=radio * cos(angulo); 
      y:=radio * sin(angulo)
    End;
     
END.
 

Código fuente 19: Unidad de ejemplo MiUnidad.

 

El código fuente de la unidad comienza con la palabra reservada unit, seguido por el identificador o nombre de la unidad, que debe ser igual al nombre del archivo en donde se guarda el código fuente, para este ejemplo el nombre del archivo de la unidad sería MiUnidad.pp. La parte de la interface declara todos los tipos de datos, variables, constantes y las cabeceras de procedimientos y funciones, que pueden ser usados por un programa u otra unidad. La parte de la implementación (implementation) sirve para desarrollar los procedimientos y funciones declarados en la parte de la interfaz (interface), también se pueden declarar en esta parte constantes, tipos de datos, variables, procedimientos y funciones que sólo se usarán en la unidad.

Una unidad se compila igual como un programa, con la diferencia que el compilador crea dos archivos uno con extensión ppu y el otro con extensión o, en el ejemplo después de compilar la unidad se crea el archivo MiUnidad.o y MiUnidad.ppu.

Es importante organizar bien los archivos de las unidades que se usaran en el programa, por ejemplo si queremos usar la unidad que hemos creado MiUnidad, en uno de nuestros programas, el archivo del código fuente (*.pp) de la unidad se debe colocar en la misma carpeta del programa que va a usar dicha unidad.

El siguiente programa hace uso de la unidad MiUnidad, se asume que el código fuente de la unidad, se encuentra en la misma carpeta del programa:

 

 
{$codepage UTF8}

USES MiUnidad;

VAR  x,y:double;
     a,r:double;
	 
BEGIN
  Writeln('Coordenadas Polares a rectangulares ');
  Write('angulo = ');readln(a);
  Write('radio = ');readln(r);
  PolarRect(a,r,x,y);
  Writeln('x=',x:2:3);
  Writeln('y=',y:2:3)
END.
 

Código fuente 20: Programa que usa la unidad MiUnidad de ejemplo.

 

En casos en que la unidad se encuentre en una carpeta aparte, como por ejemplo ../librerias, se puede indicar a través de una directiva del compilador, en que carpeta se encuentra la unidad, la directiva que se usa sería $UNITPATH, las directivas no generan código ejecutable, sólo dan información al compilador para proceder según sea el caso. En este caso la directiva $UNITPATH se usa para indicarle al compilador en donde se encuentran las unidades que usará el programa. Una directiva se usa del siguiente modo:

 

 

{$UNITPATH ../librerias;../lp/librerias}

 

Una directiva siempre estará encerrada entre corchetes {}, el nombre de la directiva debe empezar con el símbolo $, y seguido de un espacio en blanco las opciones de la directiva o indicaciones de la directiva para el compilador.

En este caso las indicaciones son las rutas en donde se encuentran las unidades a usar por el programa, cuando las librerías se encuentran en diferentes carpetas, las rutas o direcciones se indican separándolo con un punto y coma.

A continuación el programa anterior teniendo en cuenta que la unidad se encuentra en la carpeta ../librerias :

 

 
{$codepage UTF8}
{$UNITPATH ../librerias}
                                           
USES MiUnidad;

VAR x,y:double;
    a,r:double;

BEGIN
  Writeln('Coordenadas Polares a rectangulares ');
  Write('angulo = ');readln(a);
  Write('radio = ');readln(r);
  PolarRect(a,r,x,y);
  Writeln('x=',x:2:3);
  Writeln('y=',y:2:3)
END.
 

Código fuente 21: Programa que usa la unidad MiUnidad de ejemplo, en la carpeta ../Libreria.

 

La parte de inicialización puede contener instrucciones. Estas instrucciones sirven, por ejemplo, para iniciar variables. La ejecución de estas instrucciones se efectúa antes de la ejecución del programa que usa la unidad. Para la parte de inicialización se usa la palabra reservada initialization. La parte de finalización se ejecutara después que el programa que use la unidad haya terminado su ejecución. Para la parte de finalización se usa la palabra reservada finalization.

A continuación la unidad MiUnidad con las partes de inicialización y finalización, que sólo muestran mensajes de inicio y fin de la unidad.

 

 
{$codepage UTF8}

UNIT MiUnidad;

INTERFACE

  Uses math;
  Const PI=3.141592654;
        Nep=2.718281828;
  Procedure PolarRect(angulo,radio:double;var x,y:double);
  
IMPLEMENTATION

  Procedure PolarRect(angulo,radio:double;var x,y:double);
    Begin
      //Las funciones sin y cos
      //se encuentra en la unidad math
      x:=radio * cos(angulo); 
      y:=radio * sin(angulo)
    End;
    
INITIALIZATION
  
    Writeln('Inicio de la Unidad')
    
FINALIZATION
  
    Writeln('Fin de la Unidad')  
        
END.
 

Código fuente 22: Unidad Mi Unidad con las partes de inicializacion y finalizacion.

 

anterior :: indice :: siguiente

 

 
 

  SUGERENCIAS