Bienvenido a mis Tutorías © en la UNED
Tipos de Datos Módula-2 (Programación I)
  • Variable de tipo predefinido
      Son los tipos que vienen definidos en el lenguaje, se pueden declarar variables de estos tipos sin tener que importarlas de ningún módulo. De este tipo son: INTEGER, CARDINAL, REAL, BOOLEAN, etc.
  • Variable de tipo opaco
      En estas variables se declara el nombre del tipo en el módulo DEFINITION, pero el tipo real de la variable se DEBE declarar en el módulo IMPLEMENTATION.
         DEFINITION MODULE Opacas;
         TYPE
            Opaca1;
            ....
         END Opacas.
      
         IMPLEMENTATION MODULE Opacas;
         TYPE
            ....
            Opaca1=POINTER TO AlgunTipo;
            ....
         END Opacas.
      
      De acuerdo con el libro básico de la asignatura, algunos compiladores sólo admiten que las variables opacas sean punteros. Su utilidad es ocultar el tipo que tiene la variable, y entonces sólo se pueden usar las funciones que ofrece el módulo correpondiente para operar con ellas. Tomemos el ejemplo anterior, en el que AlgunTipo es un registro con dos campos (Campo1, Campo2). Si se declara una variable de tipo Opaca1 (opaca:Opaca1), no se puede hacer: opaca^.Campo1, pues al ser opaca no se puede acceder a su tipo.
  • Variable de tipo anónimo
      Este tipo se verá mejor con un ejemplo:
         ...
         TYPE
            TipoNoAnonimo=ARRAY [0..10] OF CHAR;
         VAR
            VarNoAnonima:TipoNoAnonimo;
            VarAnonima:ARRAY [0..10] OF CHAR;
      
      Las variables anónimas son aquellas que son de un tipo no simple, ARRAY, RECORD,... pero que se declaran indicando el tipo en el mismo momento de la declaración, y no declarando un tipo y después declarando la variable de ese tipo.
  • Tipos acotados
      Son todos aquellos datos cuya capacidad total de almacenamiento (número de elementos) se determina explícitamente al definirlas. Una estructura de este tipo (como los ARRAY) se podrá usar de manera que el número de elementos que contenga en cada momento varíe, pero nunca podrá ser mayor que el tamaño total de la estructura.

      Frente a estos datos están las estructuras no acotadas, como las secuencias que se basan en punteros o los ficheros externos.

  • Variable de tipo abstracto
      Las variable con este nombre se podrían considerar todos los tipos anteriores, a excepción del anónimo, y el concepto de tipo abstracto es que tienes un tipo de variable, y se te provee de funciones y procedimientos que te permiten operar con ella
         DEFINITION MODULE Fechas;
         TYPE
            Fecha=RECORD
               dia,mes,anyo:INTEGER;
            END;
         PROCEDURE SumaFechas(fecha1,fecha2:Fecha;VAR sumafecha:Fecha);
         (* Otras funciones que nos permiten operaciones con Fecha *)
      
  • Variable encapsulada
      Cuando en un programa sólo hay que manejar una única variable, se puede conseguir que el resto del código no la vea en absoluto sin necesidad de utilizar tipos opacos. Esto se consigue si dicha variable es interna al módulo donde se desarrolla el tipo abstracto.
         DEFINITION MODULE Autor;
            PROCEDURE Leer;
            PROCEDURE Escribir;
         END Autor.
      
         IMPLEMENTATION MODULE Autor;
            VAR autor: ARRAY [0..20] OF CHAR;
            ....
         END Autor.
      
         MODULE Principal;
         IMPORT Autor;
         BEGIN
            Autor.Leer;
            Autor.Escribir;
         END Principal.
      
      Este esquema constituye una capsula que protege al dato, sólo se puede acceder a él usando las operaciones predefinidas y ninguna otra. Es importante observar que las operaciones que manejan el dato encapsulado no lo mencionan como argumento.

      Esta ténica es fácil de aplicar cuando queremos hacerlo con una sola variable.


  • No dudes en escribir si tienes alguna pregunta sobre estos ejemplos

    abellogijon.uned.es