miércoles, 23 de marzo de 2011

Unidades en Turbo Pascal

Introducción
Una unidad es un conjunto de constantes, tipos de datos variables, procedimientos y funciones. Cada unidad es como un programa independiente Pascal o bien una librería de declaraciones que se pueden poner en un programa y que permiten que éste se pueda dividir y compilar independientemente. Una unidad puede utilizar otras unidades y posee una parte que puede contener instrucciones de iniciación.

Una unidad contiene uno o más procedimientos, funciones constantes definidas  y a veces otros elementos. Se puede compilar, probar y depurar una unidad independientemente de un programa principal. Una vez que una unidad ha sido compilada y depurada, no necesita compilarse más veces, Turbo Pascal se encarga de enlazar  la unidad al programa que utiliza esa unidad, empleando siempre en esta tarea menor tiempo que en la propia compilación. Los procedimientos, funciones y constantes que se definen en una unidad pueden ser utilizados por cualquier futuro programa que escriba sin tener que ser declarados en el programa.

Las unidades tienen una estructura similar a los programas y en consecuencia requieren un formato estricto, y es preciso declararlas por el usuario como si se tratara de un programa o subprograma.

Turbo Pascal proporciona siete unidades estándar para el uso del programador: System, Graph, DOS, Crt, Printer, Turbo3 y Graph3. Las cinco primeras sirven para escribir sus programas y las dos últimas para mantener compatibilidad con programas y archivos de datos creados con la versión 3.0 de Turbo Pascal. Las siete unidades están almacenadas en el archivo TURBO/.TPL (librería de programas residente propia del programa Turbo Pascal). La versión 7.0 introdujo dos nuevas unidades WinDos y Strings.

Estructura de una unidad

Una unidad está constituida de cuatro partes: cabecera de la unidad, sección de interface (interfaz), sección implementation (implementación) y sección initialization (inicialización).

Formato:

Unit <identificador>

      Interface

      Uses <lista de unidades>;  (* opcional *)

            (* declaraciones públicas de objetos *) 
      Implementation

            (* declaraciones privadas *)

            (* definición de procedimientos y funciones públicos *)

begin

            (* código de inicialización *) (* opcional *)

end

Cabecera de la unidad

La cabecera de la unidad comienza con la palabra reservada unit, seguida por el nombre de la unidad (identificador válido). Es similar a una cabecera de programa, donde la palabra reservada unit reemplaza a la palabra reservada program. Por ejemplo para crear una unidad denominada MiUnidad se ha de utilizar la cabecera de la unidad, así:                     

                                               Unit MiUnidad;

El nombre de la unidad es arbitrario, pero debe coincidir con el nombre del archivo que contiene. Por ejemplo, si la unidad se denomina Test

                                               Unit Test;

El archivo que contiene el programa fuente de la unidad se debe llamar Test.PAS. Cuando turbo Pascal combina la unidad, le asigna la extensión TPU (Turbo Pascal Unit). Si el nombre de la unidad es diferente del nombre del archivo, el programa principal no podrá encontrar el archivo TPU (Turbo Pascal Unit). Si el nombre de la unidad es diferente del nombre del archivo, el programa principal no podrá encontrar el archivo TPU.

Una unidad creada por el usuario puede utilizar otras unidades, siempre que se incluyan en la cláusula uses que aparece inmediatamente después de la palabra interface, y separadas por comas.

Sección de interfaz

La sección de interface (interfaz) es la parte de la unidad que sirve para conectar dicha unidad con otras unidades y programas. Esta sección se conoce como "la parte pública" de la unidad, ya que todos los objetos que figuren en esta sección son visibles desde el exterior o exportables. Las restantes unidades y programas tienen acceso a la información contenida en la sección de interface.

En la interfaz de la unidad se pueden declarar constantes, tipos de datos, variables y procedimientos. Los procedimientos y funciones visibles a cualquier programa que utilice la unidad se declaran aquí, pero sus cuerpos, reales - implementaciones- se encuentran en la sección de implementación. La sección de interfaz indica a un programador cuáles procedimientos y funciones se pueden utilizar en un programa. La sección de implementación indica al compilador cómo implementarlos.

  Ejemplo de declaración

    * Clases de Italiano Aprende o mejora tu Italiano con el Método Conversacional ¡Inscríbete!
      Berlitz.com.mx/ItalianoEnlaces patrocinados

Unit Rayo;
Interface

      Uses

            DOS, Graph, Crt;  (* se utilizan las unidades DOS, Graph y Crt *)

      Var

            a, b, c : integer;

      Function Exponencial (a, b : integer) : real;

      Procedure  Dividir (x, y : integer; var cociente : integer);

Sección de implementación

La sección de implementación es estrictamente privada; su contenido no es exportable. Sólo los procedimientos o funciones que aparecen en la sección interface pueden ser invocados desde el exterior de la unidad. Esta sección contiene el cuerpo de los procedimientos y funciones declarados en la sección de interface.

Unit Rayo;
Interface

            Function Exponencial (A, B : Integer) : Real;

            Procedure Dividir (X, Y : Integer; Var Cociente : Integer);
Implementation             Function Exponencial (A, B : Integer) : Real;             Var

               P, I : Integer;

            Begin

               P := 1;

               For I := 1 to B do

                        P := P * ;

               Exponencial := P

            End;

             Procedure Dividir (X, Y : Integer; Var Cociente : Integer);

            Begin

               Cociente := X div Y

            End;

End.

Nótese que la declaración de una unidad está terminada por la palabra reservada End y un punto.

Sección de iniciación

La sección de iniciación puede contener instrucciones pero también puede estar vacía. Estas instrucciones sirven, por ejemplo, para iniciar variables. La ejecución de estas instrucciones se efectúa en el momento del lanzamiento o ejecución de un programa que utiliza la unidad antes de la ejecución de la primera instrucción del cuerpo del programa.

En la sección de iniciación se inicializa cualquier estructura de datos (variables) que utilice la unidad y las hace disponibles (a través del interface) al programa que las utiliza. Comienza con la palabra reservada begin seguida por una secuencia de sentencias y termina con "end. ".

La sección de iniciación debe llamarse antes de que el cuerpo del programa se ejecute.

No hay comentarios:

Publicar un comentario