Вы находитесь на странице: 1из 28

Departamento de Informática

Universidad de Valladolid
Campus de Segovia
______________________

LABORATORIO:
INTRODUCCIÓN A LAS
UNIDADES EN TURBO
PASCAL
UNIDADES EN TURBO PASCAL 7.0

• Concepto de unidad
• Estructura de una unidad
• Creación de unidades
• Utilización de las unidades estándar
• Identificadores idénticos en distintas
unidades
• Síntesis final
CONCEPTO DE UNIDAD

• Es un conjunto de constantes, tipos de datos, variables,


procedimientos y funciones encapsuladas bajo un mismo
identificador.
• Poseen una estructura bien definida.
• Las unidades pueden ser predefinidas (estándar) o definidas
por el usuario.
• Turbo Pascal 7.0 posee siete unidades estándar:
– SYSTEM
– GRAPH
– DOS
– CRT
– PRINTER
– TURBO3
– GRAPH3
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 <identificador>

INTERFACE
USES <lista de unidades>; {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; PROCEDURE Pausa;


INTERFACE BEGIN
USES repeat
Crt, Dos; until Keypressed
PROCEDURE Frase (texto:string); END; {Pausa}
PROCEDURE Pausa; END.
IMPLEMENTATION
USES
Printer;
PROCEDURE Frase;
BEGIN
Clrscr;
GotoXY((80-length(texto)) DIV 2,10);
writeln(texto);
END; {Frase}
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.
EJEMPLO CON LAS DOS ÚLTIMAS
UNIDADES
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}
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 <identificador>; {cabecera obligatoria}
{El identificador debe ser utilizado como nombre de archivo}
INTERFACE
USES <lista de unidades>; {opcional}
CONST.....
TYPE......
VAR......
PROCEDURE....... {sólo cabecera}
FUNCTION........... {sólo cabecera}
IMPLEMENTATION
{Declaraciones privadas: locales a la unidad}
USES <lista de unidades>; {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}

Вам также может понравиться