LABORATORIO:INTRODUCCIÓN A LASUNIDADES EN TURBO
PASCAL
Departamento de InformáticaUniversidad de Valladolid
Campus de Segovia______________________
Prof. José Vicente Álvarez Bravo
UNIDADES EN TURBOPASCAL 7.0
• Concepto de unidad• Estructura de una unidad• Creación de unidades• Utilización de las unidades estándar• Identificadores idénticos endistintas unidades• Síntesis final
CONCEPTO DE UNIDAD
• Es un conjunto de constantes, tipos dedatos, variables, procedimientos yfunciones encapsuladas bajo un mismoidentificador.
• Poseen una estructura bien definida.
• Las unidades pueden ser predefinidas(estándar) o definidas por el usuario.
• Turbo Pascal 7.0 posee siete unidadesestándar:– SYSTEM– GRAPH– DOS– CRT– PRINTER– TURBO3– GRAPH3
ESTRUCTURA DE UNAUNIDAD
• Una unidad esta constituida por lassiguientes 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>
INTERFACEUSES <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 UNITseguido del identificador y finalizado conun punto y coma.
• Un identificador válido está formado poruna cadena de 1 a 8 caracteres.
• El nombre de la unidad puede ser arbitrariopero debe coincidir con el nombre delfichero que lo contiene.
• Ejemplo:– La “UNIT test” debe almacenarse en un
fichero denominado test.pas. Una vezcompilado, la extensión del fichero será TPU(turbo pascal unit).
SECCIÓN INTERFACE
• Esta parte es la que permite conectar estaunidad con otras unidades y programas.
• También es conocida como la secciónpública ya que los objetos declarados enesta sección son exportables al exterior.
• En esta sección se pueden declararconstantes, tipos de datos, variables*,funciones y procedimientos.
• En esta sección sólo se declara la cabecerade las funciones y procedimientos. Suimplementación se encuentra en la sección“implementation”.
EJEMPLO DE DECLARACIÓNDE SECCIÓN INTERFACE
UNIT rayo;
INTERFACEUSES
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 enrealidad variables globales, ya que son visibles desdeotras unidades y programas.
SECCIÓN IMPLEMENTATION
• Esta sección es estrictamente privada y portanto su contenido no es exportable.
• Esta sección contiene los cuerpos de losprocedimientos y funciones declarados enla sección “interface”.
• Las variables declaradas dentro de estasección serán de uso exclusivo para losprocedimientos y funciones de dichaunidad.
EJEMPLO DE DECLARACIÓNDE 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 DEINICIALIZACIÓN
• Esta sección opcional puede contener, porejemplo, instrucciones que sirvan parainiciar variables.
• La ejecución de estas instrucciones seefectúa antes de ejecutar la primerainstrucción del programa que usa dichaunidad.
• En esta sección también se puedeninicializar cualquier estructura de datos queemplee la unidad.
CREACIÓN DE UNIDADES
• Una vez que se dispone del código fuentela unidad se compila de la misma formaque un programa.
• El archivo obtenido posee la extensiónTPU y es un fichero no ejecutable.
• Para poder utilizar una unidad se debedeclarar su uso en la sección USES
• Ejemplo:Program Prueba;
USESUtilidad;
CREACIÓN DE UNIDADES
UNIT utili;INTERFACE
USESCrt, Dos;
PROCEDURE Frase (texto:string);PROCEDURE Pausa;
IMPLEMENTATIONUSES
Printer;PROCEDURE Frase;
BEGINClrscr;GotoXY((80-length(texto)) DIV 2,10);writeln(texto);
END; {Frase}PROCEDURE Pausa;
BEGINrepeatuntil Keypressed
END; {Pausa}END.
USO DE LA ANTERIORUNIDAD
PROGRAM usoutili;USES
utili, crt;VAR
text:string;BEGIN
clrscr;writeln(‘Introduce un texto’);readln(text);frase(text);pausa
END. {usoutili}
USO CIRCULAR DEUNIDADES
• A partir de la versión 5.0 se puede hacer usode unidades mutuamente dependientes (quese invocan entre ellas).
• En ambos casos dicha referencia deberealizarse en la sección de “implementation”.
• Para compilar estas unidades se debe utilizarla orden MAKE del menú del compilador.Para ello se compila una de las dos unidadesquedando la otra automáticamentecompilada.
UNIT Visualiz;INTERFACE
PROCEDURE EscribirenposicionXY(x,y:integer;men:string);IMPLEMENTATION
USES Crt, Error;PROCEDURE EscribirenposicionXY(x,y:integer;men:string);
BEGINif (x in [1..80]) AND (y in [1..25]) then BEGIN GotoXY(x,y); writeln(men) ENDelse Vererror(‘coordendas xy fuera de rango’)
END; {Escribirenposicionxy}END. {Visualiz}
UNIT Error;INTERFACE
PROCEDURE Vererror(cadena:string);IMPLEMENTATION
USES Visualiz;PROCEDURE Vererror(cadena:string);
BEGINEscribirenposicionXY(1,25,cadena)
END; {Vererror}END. {Error}
USO DE LAS DOSANTERIORES UNIDADES
• Programa que escribe un texto en pantalla, dando unmensaje de error si las coordenadas del texto sonincorrectas.
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 ficherodenominado turbo.tpl y se cargan enmemoria automáticamente junto con elentorno.
• SYSTEM• CRT• DOS• PRINTER
UNIDAD SYSTEM
• Contiene los procedimientos y funcionesestándar de TP relativas a la entrada/salida,cadenas de caracteres, calculo en comaflotante, gestión de memoria,....
• Esta unidad no necesita ser referenciada yaque se carga automáticamente en lacompilación de cada programa.
UNIDAD CRT
• Esta unidad proporciona un conjunto dedeclaraciones que permiten el acceso alcontrol de los modos de pantalla, deteclado, 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, procedimientosy funciones relacionadas con el sistemaoperativo DOS y la gestión de archivos.
• Algunos de sus procedimientos son:
– gettime: proporciona la hora a través del relojinterno
– getdate: proporciona fecha registrada en elordenador.
– Disksize: proporciona el tamaño de la unidad dealmacenamiento señalada.
UNIDAD PRINTER
• Esta unidad facilita la tarea delprogramador cuando utiliza la impresoracomo dispositivo de salida.
• Permite enviar la salida estándar de Pascala la impresora utilizando para ello losprocedimientos “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 LASUNIDADES
• El sistema espera encontrar las unidadesque diseña el programador en el directorioactivo de la unidad de disco activa.
IDENTIFICADORESIDÉNTICOS EN DIFERENTES
UNIDADES
• Turbo Pascal permite el uso del mismoidentificador en diferentes unidades.
• Turbo Pascal siempre utiliza elidentificador de la última unidad explorada
• Una forma de poder distinguir entredistintos identificadores es emplear elidentificador de la unidad, seguido de unpunto y del identificador delprocedimiento.
RESUMEN
UNIT <identificador>; {cabecera obligatoria}{El identificador debe ser utilizado como nombre de
archivo}INTERFACEUSES <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}