Programación en Ada / Tipos

De Wikilibros, la colección de libros de texto de contenido libre.

← Elementos del lenguaje Tipos Tipos / Enteros →


Tabla de contenidos

[editar] Clasificación de tipos

Jerarquía de tipos en Ada
Jerarquía de tipos en Ada

Los tipos de Ada se pueden clasificar en:

[editar] Declaración de tipos

Para definir un tipo no estándar, se puede emplear el siguiente esquema:

declaración_tipo ::= type identificador is definición_tipo ;

Sirvan como ejemplos las siguientes definiciones de tipos:

-- Escalares discretos no estándar:
-- 
type TIndice is range 1..50;

-- Escalares reales no estándar:
-- 
type TPeso is digits 10;  -- Coma flotante con precisión de 10 cifras.
type TMasa is delta 0.01 range -12.0 .. 12.0; -- Coma fija 0.01 precis.

-- Enumeración:
-- 
type TColor is (ROJO, VERDE, AZUL);

-- Vectores:
-- 
type TMatriz is array (1..10, 1..10) of Float;
type TVector5 is array (TIndice range 5..10) of Float;
 
-- Registros:
-- 
type TVálvula is
  record
    Nombre: String(1..20);
    Abierta: Boolean;
    VelocidadLíquido: Float range 0.0 .. 30.0;
  end record;

-- Punteros:
-- 
type PEntero is access Integer;
-- Arrays irrestringidos. Tienen un número indefinido de
-- elementos. Es necesario especificar los límites al declarar
-- variables de ese tipo.
-- 
declare
  type TVectorIndef is array (Integer range <>) of Float;
   V: TVectorIndef (1..4);
begin
   V(1) := 10.28;
   V := (1.2, 1.5, 1.8, 1.3);
   V := (1 => 1.2, 2 => 1.7, others => 0.0);
end;

[editar] Algunos atributos aplicables a tipos

Los atributos son operaciones predefinidas que se pueden aplicar a tipos, objetos y otras entidades. Por ejemplo estos son algunos atributos aplicables a tipos:

  • Last: Integer'Last es el máximo valor que puede tomar la variable de tipo Integer. También es el último valor de un tipo enumerado o del índice de un vector.
  • First: Integer'First es el mínimo valor que puede tomar la variable de tipo Integer. También es el primer valor de un tipo enumerado o del índice de un vector.
  • Range: Vector'Range indica el rango que ocupa la variable Vector, es decir, equivale a Vector'First..Vector'Last. En el caso de más de una dimensión, el valor Matriz'Range(1) indica el rango de la primera dimensión.
  • Succ: TColor'Succ(ROJO) indica el siguiente valor a ROJO que toma el tipo TColor, si no existe, se eleva la excepción Constraint_Error.
  • Pred: TDía'Pred(VIERNES) indica el anterior valor a VIERNES que toma el tipo TDía, si no existe, se eleva la excepción Constraint_Error.
  • Pos: El atributo Pos indica la posición ocupada por un determinado valor en un tipo enumeración. Por ejemplo: TColor'Pos(ROJO). La primera posición se considera 0.
  • Val: El atributo Val indica el valor que ocupa una determinada posición en un tipo enumeración. Por ejemplo: COLOR'Val(1).
  • Para identificar unívocamente un valor de un tipo enumeración se emplea TColor' (ROJO) y TIndicador'(ROJO) para distinguir el valor ROJO del tipo TColor o TIndicador.

[editar] Subtipos

Los subtipos definen un subconjunto de los valores de un tipo determinado, pero no son un tipo distinto de su tipo base.

[editar] Superar una ambigüedad

En el supuesto caso de que se quiera superar una ambigüedad en el tipo de una variable (debería evitarse) en un determinado instante, se puede optar por convertirlo (no recomendable) o cualificarlo:

  • Convertir el tipo, por ejemplo: Integer(I) convierte el número I a entero.
  • Cualificar el tipo, por ejemplo: Integer'(I) interpreta I como entero.

En ambos casos, el resultado es I como entero.

[editar] Tipos avanzados

Hay otros tipos más avanzados en Ada. Puedes optar por leer estos tipos ahora o por continuar el libro por la siguiente lección Objetos (variables y constantes).

[editar] Manual de referencia de Ada

Herramientas personales
Otros idiomas