Your Federal Quarterly Tax Payments are due April 15th Get Help Now >>

UNIDADES EN TURBO PASCAL 7.0 by hcw25539

VIEWS: 270 PAGES: 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}

								
To top