Definicion de Tipos

Definición de tipos

Mediante la definición de tipos de datos se consigue que cada información que maneja el computador tenga su sentido especifico. El tipo establece los posibles valores que puede tomar ese dato. La definición de tipos supone crear un nuevo nivel de abstracción dentro del programa.

En Modula-2 la declaración se realiza junto a la declaración de las constantes y variables, dentro de la 'parte_declarativa' de cualquier Bloque. Esta declaración se inicia con la palabra lave TYPE.
TYPE TipoEdad = INTEGER; TipoSexo = CHAR;

Cada tipo se define mediante un nombre o identificador seguido del símbolo igual (=), y a continuación la descripción concreta del tipo que se quiere definir. Las diferentes definiciones de tipos se separan mediante punto y coma (Eye-wink. En la definición de un nuevo tipo puede utilizar y normalmente utiliza otras tipos ya definidos. De manera formal, la sintaxis y la ubicación de la declaración de tipos:


Bloque ::= Parte_declarativa Parte_ejecutiva END Parte_declarativa::={Declaración} Declaración ::= Declaración_de_constantes | Declaración_de_tipos
| Declaración_de_variables | Declaración_subprograma

Declaración_de_tipos ::= TYPE {Definición_de_tipo ;}
Definición_de_tipo ::= Identificador =Esquema_de_tipo Esquema_de_tipo ::= Identificador_de_tipo | Tipo_enumerado | Tipo_subrango | Tipo_conjunto

Tipos enumerados
Definición de tipos enumerados
Una manera de definir un nuevo tipo de dato es enumerar todos los posibles valores que puede tomar. Se realiza mediante una lista separada por comas (,) y entre paréntesis. Cada posible valor se describe mediante un identificador. Estos identificadores al mismo tiempo quedan declarados como valores constantes. La enumeración implica un orden que se establece entre los valores enumerados. este orden se define de forma implícita e impone que el primer elemento de l lista ocupa el lugar 0 hasta el ultimo que ocupa el N-1. ( N = numero de elementos enumerados). Los tipos de datos enumerados forman parte de una clase de tipos de MODULA-2 denominados tipos ordinales, a la cual pertenecen también los tipos INTEGER, CARDINAL y CHAR, pero no el tipo REAL.

Tipo_enumerado ::= (Lista_de_identificadores) Lista_de_identificadores ::= Identificador {, Identificador}

Uso de tipos enumerados
Los tipos enumerados se emplean de manera similar a los tipos predefinidos. Los identificadores de tipo se puede emplear para definir variables de ese tipo y los identificadores de los valores se emplean como las constantes con nombre. Puesto que entre los valores enumerados existe un orden definido, podemos emplear con ellos los operadores de comparación. Al igual que para el resto de los ordinales, podemos utilizar la función predefinida ORD para obtener la posición en la lista de valores del tipo. La operación inversa, se consigue mediante la función VAL (T, N) y devuelve el valor que ocupa la posición N en la colección de valores del tipo T. Otras operaciones aplicables corresponden a procedimientos predefinidos INC y DEC, que reemplazan un valor por el siguiente o anterior.

Tipo predefinido Boolean
TYPE BOOLEAN = (FLASE, TRUE) ORD (FALSE) = 0 ORD (TRUE) =
1

Es posible realizar operaciones lógicas entre operandos booleanos (variables o no)
Operador Operación Lógica AND Conjunción OR Disyunción NOT
Negación

Es bastante habitual definir funciones cuyo resulta es un valor booleano, cuando se quiere realizar un test sobre argumentos de la función se le llama predicas: ODD (2) = FALSE ODD (7 )= TRUE

Tipo subrango
Definición de tipos subrango
Un tipo de subrango se define a partir de otro tipo ordinal ya definido, que se toma como tipo base. La forma de realizar esto
es declarar un identificador diferente para el nuevo tipo y establecer los limites mínimo y máximo del subrango de variación. Sobre el tipo real no es posible definir ningún subrango, debido a que no es tipo ordinal.

Tipo_Subrango := [Identificador_de_tipo][Limite_inferior .. Limite_superior]
Limite_inferior ::= Expresión_constante Limite_superior ::= Expresión_constante

Uso de tipos subrango
Las variables de un tipo subrango tienen la misma consideración
que las variables tipo base. La ventaja principal que ofrecen el tipo de subrango es que, previamente a cualquier asignación a una variable, se puede comprobar automáticamente que el valor a asignar esta dentro de los limites declarados, si dicho valor esta fuera, el programa finaliza con error.

Tipos estructurados
Todos los tipos de datos presentados hasta ahora se denominan escalares y son datos simples, en el sentido de que no se pueden descomponer. Un tipo estructurado de datos es un tipo cuyos valores se construyen agrupando datos de otros tipos mas sencillos Los elementos de información que integran un valor estructurado se denominan componentes.