Librerias o Unidades
ESTRUCTURA DE UNA UNIDAD
� Una unidad esta constituida por las siguientes secciones:
� Cabecera de la unidad
� Secci�n �Interface� (o secci�n p�blica)
� Secci�n �implementati�n� (o secci�n privada)
� Secci�n de inicializaci�n
UNIT
INTERFACE
USES ; {opcional}
{declaraciones p�blicas de objetos exportables}
IMPLEMENTATION
{declaraciones privadas}
{definici�n de procedimientos y funciones
p�blicas}
BEGIN
{c�digo de inicializaci�n} {opcional}
END.
CABECERA DE LA UNIDAD
� Comienza con la palabra reservada UNIT seguido del identificador y finalizado con
un punto y coma.
� Un identificador v�lido est� formado por una cadena de 1 a 8 caracteres.
� El nombre de la unidad puede ser arbitrario pero debe coincidir con el nombre del
fichero que lo contiene.
� Ejemplo:
� La �UNIT test� debe almacenarse en un fichero denominado test.pas. Una vez
compilado, la extensi�n del fichero ser� TPU (turbo pascal unit).
SECCI�N INTERFACE
� Esta parte es la que permite conectar esta unidad con otras unidades y programas.
� Tambi�n es conocida como la secci�n p�blica ya que los objetos declarados en
esta secci�n son exportables al exterior.
� En esta secci�n se pueden declarar constantes, tipos de datos, variables*,
funciones y procedimientos.
� En esta secci�n s�lo se declara la cabecera de las funciones y procedimientos. Su
implementaci�n se encuentra en la secci�n
�implementation�.
EJEMPLO DE DECLARACI�N DE SECCI�N INTERFACE
UNIT rayo;
INTERFACE
USES
Dos, Graph, Crt;
VAR
a,b,c:integer;
FUNCTION Exponencial (a,b:integer):real;
PROCEDURE Dividir(x,y:integer; var cociente:integer);
OJO!. Las variables declaradas en esta secci�n son en realidad variables globales,
ya que son visibles desde otras unidades y programas.
SECCI�N IMPLEMENTATION
� Esta secci�n es estrictamente privada y por tanto su contenido no es exportable.
� Esta secci�n contiene los cuerpos de los procedimientos y funciones declarados en
la secci�n �interface�.
� Las variables declaradas dentro de esta secci�n ser�n de uso exclusivo para los
procedimientos y funciones de dicha unidad.
EJEMPLO DE DECLARACI�N DE SECCI�N IMPLEMENTATION
IMPLEMENTATION
FUNCTION Exponencial (a,b:integer):real;
VAR
p,i:integer;
BEGIN
p:=1;
for p:=1 to b do
p:=p*a;
exponencial:=p;
END; {exponencial}
PROCEDURE Dividir(x,y:integer; var cociente:integer);
BEGIN
cociente:=x DIV y;
END; {Dividir}
SECCI�N DE INICIALIZACI�N
� Esta secci�n opcional puede contener, por ejemplo, instrucciones que sirvan para
iniciar variables.
� La ejecuci�n de estas instrucciones se efect�a antes de ejecutar la primera
instrucci�n del programa que usa dicha unidad.
� En esta secci�n tambi�n se pueden inicializar cualquier estructura de datos que
emplee la unidad.
CREACI�N DE UNIDADES
� Una vez que se dispone del c�digo fuente la unidad se compila de la misma forma
que un programa.
� El archivo obtenido posee la extensi�n TPU y es un fichero no ejecutable.
� Para poder utilizar una unidad se debe declarar su uso en la secci�n USES
� Ejemplo:
Program Prueba;
USES
Utilidad;
CREACI�N DE UNIDADES
UNIT utili;
INTERFACE
USES
Crt, Dos;
PROCEDURE Frase (texto:string);
PROCEDURE Pausa;
IMPLEMENTATION
USES
Printer;
PROCEDURE Frase;
BEGIN
Clrscr;
GotoXY((80-length(texto)) DIV 2,10);
writeln(texto);
END; {Frase}
PROCEDURE Pausa;
BEGIN
repeat
until Keypressed
END; {Pausa}
END.
USO DE LA ANTERIOR UNIDAD
PROGRAM usoutili;
USES
utili, crt;
VAR
text:string;
BEGIN
clrscr;
writeln(�Introduce un texto�);
readln(text);
frase(text);
pausa
END. {usoutili}
USO CIRCULAR DE UNIDADES
� A partir de la versi�n 5.0 se puede hacer uso de unidades mutuamente dependientes
(que se invocan entre ellas).
� En ambos casos dicha referencia debe realizarse en la secci�n de �implementation�.
� Para compilar estas unidades se debe utilizar la orden MAKE del men� del compilador.
Para ello se compila una de las dos unidades quedando la otra autom�ticamente
compilada.
UNIT Visualiz;
INTERFACE
PROCEDURE EscribirenposicionXY(x,y:integer;men:string);
IMPLEMENTATION
USES Crt, Error;
PROCEDURE EscribirenposicionXY(x,y:integer;men:string);
BEGIN
if (x in [1..80]) AND (y in [1..25]) then
BEGIN
GotoXY(x,y);
writeln(men)
END
else
Vererror(�coordendas xy fuera de rango�)
END; {Escribirenposicionxy}
END. {Visualiz}
UNIT Error;
INTERFACE
PROCEDURE Vererror(cadena:string);
IMPLEMENTATION
USES Visualiz;
PROCEDURE Vererror(cadena:string);
BEGIN
EscribirenposicionXY(1,25,cadena)
END; {Vererror}
END. {Error}
USO DE LAS DOS ANTERIORES UNIDADES
� Programa que escribe un texto en pantalla, dando un mensaje de error si las
coordenadas del texto son incorrectas.
PROGRAM circular;
USES
crt, visualiz;
BEGIN
clrscr;
EscribirenposicionXY(1,1, �test�);
EscribirenposicionXY(90,90, �fuera de la pantalla�);
EscribirenposicionXY(10,20, �retorno a la pantalla�);
END.
UNIDADES ESTANDAR
� Estas unidades se sit�an en un fichero denominado turbo.tpl y se cargan en
memoria autom�ticamente junto con el entorno.
� SYSTEM
� CRT
� DOS
� PRINTER
UNIDAD SYSTEM
� Contiene los procedimientos y funciones est�ndar de TP relativas a la
entrada/salida,cadenas de caracteres, calculo en coma flotante, gesti�n
de memoria,....
� Esta unidad no necesita ser referenciada ya que se carga autom�ticamente
en la compilaci�n de cada programa.
UNIDAD CRT
� Esta unidad proporciona un conjunto de declaraciones que permiten el acceso
al control de los modos de pantalla, de teclado, posicionamiento del cursor,..
� Algunos de sus procedimientos son:
� clrscr: borra la pantalla.
� keypressed: detecta la pulsaci�n de una tecla.
� Sound: hace sonar el altavoz interno
� window: define una ventana de texto en la pantalla.
UNIDAD DOS
� Esta unidad contiene declaraciones, constantes, tipos variables, procedimientos
y funciones relacionadas con el sistema operativo DOS y la gesti�n de archivos.
� Algunos de sus procedimientos son:
� gettime: proporciona la hora a trav�s del reloj interno
� getdate: proporciona fecha registrada en el ordenador.
� Disksize: proporciona el tama�o de la unidad de almacenamiento se�alada.
UNIDAD PRINTER
� Esta unidad facilita la tarea del programador cuando utiliza la impresora
como dispositivo de salida.
� Permite enviar la salida est�ndar de Pascal a la impresora utilizando para
ello los procedimientos �write� y �writeln.�
UNIDAD PRINTER, EJEMPLO
PROGRAM impresora.
USES
printer;
VAR
a,b,c:integer;
BEGIN
writeln(lst, �este texto aparece en la impresora�);
read(a,b);
c:=a+b;
writeln(lst,c:6);
END. {impresora}
UBICACI�N DE LAS UNIDADES
� El sistema espera encontrar las unidades que dise�a el programador en el directorio
activo de la unidad de disco activa.
IDENTIFICADORES ID�NTICOS EN DIFERENTES UNIDADES
� Turbo Pascal permite el uso del mismo identificador en diferentes unidades.
� Turbo Pascal siempre utiliza el identificador de la �ltima unidad explorada
� Una forma de poder distinguir entre distintos identificadores es emplear el
identificador de la unidad, seguido de un punto y del identificador del procedimiento.
RESUMEN
UNIT ; {cabecera obligatoria}
{El identificador debe ser utilizado como nombre de
archivo}
INTERFACE
USES ; {opcional}
CONST.....
TYPE......
VAR......
PROCEDURE....... {s�lo cabecera}
FUNCTION........... {s�lo cabecera}
IMPLEMENTATION
{Declaraciones privadas: locales a la unidad}
USES ; {opcional}
CONST.....
TYPE......
VAR......
PROCEDURE....... {cabecera y cuerpo}
FUNCTION........... {cabecera y cuerpo}
BEGIN {Selecci�n de inicializaci�n: opcional}
...............................
END. {Obligatorio, fin de implementaci�n}
EJEMPLO
PROGRAM Hora;
USES
Crt, Dos;
VAR
Horas, Minutos, Segundos, Centesimas:word;
BEGIN
Clrscr;
while not Keypressed do
begin
GotoXY(64,1);
GetTime(horas,minutos,segundos,centesimas);
writeln(horas:2,minutos:2,segundos:2,centesimas:2);
end {while}
END. {Hora}
|