Registros

El esquema de tupla

Los tipos registro

Definición de registro
RECORD nombre: TIPO;
nombre: TIPO;
END

Define un campo o elemento componente. Puede usarse para definir el tipo de registro como un tipo con nombre o descripción del tipo de una variable.

Uso de registros

La sentencia WITH
Formato

WITH registro DO
secuencia_de_sentencias
END;

En la secuencia de sentencias se puede hacer referencia a los campos del registro escribiendo solo su nombre.
Las sentencias WITH pueden anidarse. Al hacerlo hay que tener en cuenta que su los registros tienen campos con los mismos nombres, se presenta una situación de ambigüedad.

Estructuras combinadas
Se pueden definir estructuras cuyas componentes son a su vez estructuras, sin limite de complejidad de los esquemas de datos resultantes.

Formas de Combinacion

El esquema unión
A veces es deseable que el tipo de un dato varíe según las circunstancias. Si las posibilidades son finitas podremos decir que el tipo de dato corresponde a un esquema que es la unión de los tipos particulares posibles.

tipo_unión = variante | variante2 | variante3 ...

Podemos aplicar los esquemas de unión a

Registros con variantes

Los esquemas de unión pueden utilizarse en Modula-2 definiéndolos como registros con variantes.

Un registro con variante tiene unos campos fijos mas una colección de variantes, cada una de las cuales consiste en un grupo particular de campos.

Para almacenar explícitamente la información de la variante concreta que se esta usando utilizamos un campo fijo discriminante (TAG)

Definición de registros con variantes

RECORD
campos_fijos
CASE discriminante : tipo OF
valor : variante |
valor : variante |
...
ELSE
variante
END;
END;

Uso de registros con variantes
Los registros con variantes se utilizan de la misma manera que los registros sin variantes.

La forma de hacer referencia al campo discriminante o a los campos de las variantes es igual que para los campos fijos.

Resumen de reglas para registro
Definición de registro

Tipo_Registro::= RECORD Secuencia_de_lista_de_campos END

Secuencia_de_lista_de_campos ::= Lista_de_campos {Lista_de_campos}

Lista_de_campos::= [Lista_de_verificadores:Esquema_de_tipo
| parte_variante]

parte_variante::= CASE [identificador :] Identificador_de_tipo OF variante {| variante}
[ELSE secuencia_de_listas_de_campos]
END

variante::= Lista_de_valores: Secuencia_de_listas_de_campos

Referencias a variables o componentes

Variable::= (Identificador_de_variable | identificador_de_campo)
{. Identificador_de_campo| [Lista_de_expresiones]}

Esquemas de datos y esquemas de acciones

  • Tupla - secuencia: colección de elementos de tipos diferentes, combinados en un orden fijo
  • Unión - selección: Selección de un elemento entre varios posibles, de tipos diferentes. Formación
  • Iteración: colección de elementos del mismo tipo.