Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Los tipos de Ada son esencialmente como los de Pascal, incluyendo la capacidad de incluir
una restriccin de rango para limitar el conjunto de valores permisibles. Por ejemplo:
Ada va mucho ms all de la simplicidad del tipo real de Pascal, al proporcionar tipos de
punto flotante y de punto fijo.
La declaracin:
define a VALOR como un tipo de punto flotante con al menos 10 dgitos de precisin y
capaz de acomodar nmeros en el rango especificado.
Si la computadora donde se est usando Ada proporciona aritmtica con diferentes tipos de
precisin, el compilador deber decidir cul usar de acuerdo a lo que el programador est
pidiendo.
Ada tambin especifica que toda implementacin debe proporcionar un tipo predefinido
FLOAT, que corresponda con la precisin usual de la computadora donde corra el
compilador.
Claro que se motiva a los programadores a usar las definiciones de punto flotante como la
antes mostrada, en vez de los tipos pre-definidos, a fin de que sus programas sean ms
independientes de la mquina donde corren.
El nico problema de este esquema en la prctica es que los programadores no suelen saber
qu precisin necesitan. Adems, un nmero significativo de programadores suele escribir
la especificacin de precisin que saben les dar una cierta representacin en una
implementacin en particular.
1
Plp 5
Esto evita que un programa incluya decisiones que son dependientes de la mquina y que
mejor deben dejarse al compilador.
La aritmtica con los nmeros de punto flotante es convencional, porque las operaciones
realmente se realizan en la precisin mxima disponible y luego se redondean a la precisin
de los operandos.
Adems de los nmeros de punto flotante, Ada proporciona tambin nmeros de punto fijo,
los cuales tienen un lmite de error absoluto. Los nmeros de punto fijo son comunes en los
lenguajes comerciales (p.ej., COBOL), donde se requiere acotar el lmite de error, a fin de
evitar errores de redondeo (por ejemplo, en una nmina)
La razn por la que se incorporaron en Ada los nmeros de punto fijo es porque son
utilizados por muchos de los perifricos incorporados en los sistemas de cmputo
empotrados (p.ej., convertidores de analgico a digital)
En este caso, los valores del tipo PRECIO sern mltiplos exactos de 0.01. Por ejemplo, el
nmero 16.75 se almacenara como el equivalente binario de 1675, puesto que 16.75 =
1675 x 0.01.
El nmero mnimo de bits requeridos para almacenar un tipo de punto fijo es simplemente
el logaritmo del nmero de valores a ser representados.
Por ejemplo:
2
Plp 5
Convertir un valor entero a uno de punto fijo requiere dividir entre el valor de delta. Por
ejemplo: PRECIO(2.0) resultar en la representacin binaria de 2/0.01 = 200. Si delta es
una potencia de 2, entonces resulta trivial reemplazar esta operacin por un desplazamiento
(shift) a la izquierda.
Es por ello que la definicin de Ada permite al compilador escoger un valor de delta que
sea menor que el especificado por el usuario, pero el cual sea una potencia de 2. Esto
permite hacer ms eficiente la conversin correspondiente.
Las reglas aritmticas para los tipos de punto fijo son ms complicadas que las de los
enteros y los nmeros de punto flotante, sobre todo en lo referente a la multiplicacin y la
divisin.
Por ejemplo:
Sin embargo, si VG es una variable de punto fijo de cualquier tipo (incluyendo F),
entonces:
VF:=F(VF*VG);
3
Plp 5
La divisin sigue reglas similares (en cuanto a lo poco intuitivas), pero stas son realmente
una consecuencia prcticamente inevitable de la aritmtica de punto fijo.