Definición de tipos array

Explicación

Un tipo array se define indicando el tipo y rango de los índices que permiten acceder a los componentes individuales y el tipo de los componentes.

Una definición de array no restringido (unconstrained_array_definition) no indica el rango concreto de los índices, sino sólo su tipo, lo que hace que sirva como "metatipo" para definir subtipos que sean compatibles entre sí, o, en las declaraciones de parámetros formales de los subprogramas, para admitir cualquier array que sea un subtipo del no restringido.

No se pueden declarar objetos de un tipo no restringido, pero sí de subtipos restringidos del mismo.

Sintaxis

array_full_type_declaration ::= 
     type defining_identifier is array_type_definition;
array_type_definition ::= 
   unconstrained_array_definition | constrained_array_definition

unconstrained_array_definition ::= 
   array(index_subtype_definition {, index_subtype_definition}) of component_definition
index_subtype_definition ::= subtype_mark range <>

constrained_array_definition ::= 
   array (discrete_subtype_definition {, discrete_subtype_definition}) of component_definition

discrete_subtype_definition ::= discrete_subtype_indication | rango

component_definition ::= 
   [aliased] subtype_indication
 | [aliased] access_definition

Ejemplo

unconstrained_array_definition:

type Vector_Libre is array (Integer range <>) of Float;

constrained_array_definition:

type Vector_1 is array (0 .. 4) of Integer;
type Vector_2 is array (Boolean) of Natural;
subtype Vector_3 is Vector_Libre (1 .. 10);

M : array (1 .. 2, 'A'..'B') of Float;
V : array (1 .. 2) of Vector_1;