Guía mínima de Ada 95

Tipos escalares.

Los tipos en Ada se clasifican en escalares (simples) y estructurados. Los escalares se dividen en: discretos, u ordinales, y no discretos. Los tipos discretos son enumerados y enteros. Los no discretos son los reales. Tanto los enteros como los reales se clasifican a su vez como numéricos.

Los tipos enumerados son aquellos que se definen especificando la lista ordenada de valores que lo componen:

type Día is (Lun, Mar, Mie, Jue, Vie, Sab, Dom);
type Palos is (Oros, Bastos, Espadas, Copas);
type Género is (M, F);
type Color is (Blanco, Rojo, Amarillo, Verde, Azul, Marrón, Negro);
type Luz is (Rojo, Naranja, Verde);
 

Una vez definido el tipo, se pueden declarar variables. Si, como ocurre con los tipos Color y Luz, hay valores que se repiten, habrá que cualificar ese valor cuando su uso pueda ser ambiguo:

x := Color'Rojo; -- x debe ser de tipo Color
y := Luz'Rojo; -- y debe ser de tipo Luz
 

Ada tiene predefinido el tipo enumerado character --que representa el alfabeto de caracteres utilizado--, y el tipo boolean, que puede tomar los valores true o false.

Ada posee un tipo integer predefinido cuyo rango de valores depende de la implementación del lenguaje. Además, se pueden definir nuevos tipos enteros que pueden ser, con signo o sin signo:
type MiEntero is range -32768..32767; --Entero con signo
type MiNatural is mod 32767; --Entero sin signo (rango 0..32766)

En ambos casos se pueden usar expresiones para definir los límites del tipo:
type MiEntero is range -2**15..2**15; --Entero con signo
type MiNatural is mod 2**16; --Entero sin signo (rango 0..65535)

Existen predefinidos en el paquete standard dos subtipos del tipo integer:
subtype Natural is integer range 0..Integer'last;
subtype Positive is integer range 1..Integer'last;

Todos los tipos ordinales tienen asociadas, entre otras, las siguientes operaciones como atributos (todas se usan cualificadas con el nombre del tipo), sea T un tipo ordinal:

Ejemplos:

x:=Día'succ(Mar); --x toma el valor Mie

x:=Día'pred(Mar); --x toma el valor Lun

y:=Día'Pos(Mar); --y toma el valor 1

x:=Día'Val(3); --x toma el valor Jue
 

Ada también tiene un tipo predefinido, float, para representar números reales, cuyo rango y precisión dependen de la implementación. No obstante, el programador también puede definir sus propios reales con dos posibles formatos: coma fija y coma flotante.

Al definir un tipo real de coma flotante se puede especificar el número de dígitos significativos, y el rango de valores posibles.

type rflotante is digits 5 range -1.0..1.0;
 

Al definir un tipo real de coma fija, se pretende obtener una precisión definida. Los números reales en coma fija se pueden catalogar en: ordinarios y decimales. En el primer caso, se especifica el límite de error en su representación (delta) y, si se quiere, el rango de variación. En el segundo se indica el número de dígitos significativos y el incremento entre valores sucesivos admitidos (delta).

type rfija1 is delta 0.01 range -1.0..1.0; --Coma fija ordinario
type rfija2 is delta 0.01 digits 5;  --Coma fija decimal

En el caso de números decimales en coma fija, el delta tiene que ser potencia de 10.



[Anterior] [Inicio][Siguiente]