UNIDADES EN TURBO PASCAL 7jvalvarez/docencia/pII antiguo/unidades.pdf · (turbo pascal unit)....

27
LABORATORIO: INTRODUCCIÓN A LAS UNIDADES EN TURBO PASCAL Departamento de Informática Universidad de Valladolid Campus de Segovia ______________________ Prof. José Vicente Álvarez Bravo

Transcript of UNIDADES EN TURBO PASCAL 7jvalvarez/docencia/pII antiguo/unidades.pdf · (turbo pascal unit)....

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}

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}