ada
Tipos escalares
Buscar..
Introducción
En la jerarquía de tipos de Ada, los tipos elementales tienen conjuntos de valores lógicamente indivisibles. Entre estos tipos se encuentran los tipos de acceso (tipos de puntero) y los tipos escalares. Los tipos escalares se pueden categorizar como enumeración , carácter y numérico . Estos tipos forman el tema de este tema. Además de los conjuntos de valores, los tipos tienen conjuntos de operaciones aplicables a los escalares respectivos, como sucesor o "+" .
Sintaxis
- tipo ... es ...
Parámetros
| Elipsis | Qué |
|---|---|
| ... (1) | para recibir el nombre del tipo |
| ... (2) | para recibir las características del tipo usando palabras clave: delta , dígitos , rango |
Observaciones
Todas las definiciones de tipo escalar, excepto la enumeración y los enteros modulares, pueden incluir una restricción de rango .
Una restricción de rango especifica un límite inferior y un límite superior del conjunto de valores para incluir en el tipo. Para los tipos de puntos fijos, la especificación de un rango es obligatoria: los valores de estos tipos se entenderán como múltiplos de una pequeña fracción de dos, por ejemplo, de 1/2 5 . Cuanto más pequeñas se vuelven estas fracciones, más precisa es la representación, al costo del rango que se puede representar utilizando los bits disponibles.
Se pueden dar otros aspectos de las definiciones de tipo, como un Size deseado en bits y otros elementos de representación. Ada 2012 agrega aspectos de la programación basada en contratos como Static_Predicate .
Enumeración
type Fruit is (Banana, Orange, Pear);
Choice : Fruit := Banana;
Un tipo de carácter es una enumeración que incluye un literal de carácter:
type Roman_Numeral is
('I', 'V', 'X', 'L', 'C', 'D', 'M', Unknown);`
Entero Singado
type Grade is range 0 .. 15;
B : Grade := 11;
C : Grade := 8;
Avg : Grade := (B + C) / 2; -- Avg = 9
Entero modular
Estos son los tipos de "violín de bits". También tienen operadores lógicos, como xor , y se "envuelven" en el límite superior, de nuevo a 0.
type Bits is mod 2**24;
L : Bits := 2#00001000_01010000_11001100# or 7;
Punto flotante
Un tipo de punto flotante se caracteriza por sus dígitos (decimales) que establecen la precisión mínima solicitada.
type Distance is digits 8;
Earth : Distance := 40_075.017;
Punto fijo (ordinario)
Una definición de tipo de punto fijo especifica un delta y un rango. Juntos, describen la precisión con la que se deben aproximar los valores reales, ya que están representados por potencias de dos, sin utilizar hardware de punto flotante.
Shoe_Ounce : constant := 2.54 / 64.0;
type Thickness is delta Shoe_Ounce range 0.00 .. 1.00;
Strop : Thickness := 0.1; -- could actually be 0.09375
Punto fijo (decimal)
Los tipos de punto fijo decimal se utilizan normalmente en la contabilidad. Se caracterizan por un delta y un número de dígitos decimales. Sus operaciones aritméticas reflejan las reglas contables.
type Money is delta 0.001 digits 10;
Oil_Price : Money := 56.402;
Loss : Money := 0.002 / 3; -- is 0.000