< Programación en Ada

Clasificación

Ésta es la lista de operadores de Ada de menor a mayor precedencia.

Clasificación de operadores
ClaseNombreFórmulaSintáxis Ada
LógicosConjunciónand
Disyunción inclusivaor
Disyunción exclusivaxor
RelacionalesIgualdad=
Desigualdad/=
Menor que<
Menor o igual que<=
Mayor que>
Mayor o igual que>=
Aditivo unarioIdentidad+
Negación-
Aditivo binarioSuma+
Resta-
ConcatenaciónConcatenación&
MultiplicativoMultiplicación*
División/
Módulomod
Restorem
De máxima precedenciaExponenciación**
Negaciónnot
Valor absolutoabs

Propiedades

En todos los casos, excepto para la exponenciación, los dos operandos deben ser del mismo tipo.

Los operadores se pueden sobrecargar.

Comprobación de pertenencia (in, not in)

Además existe la comprobación de pertenencia (, in; , not in) que técnicamente no es un operador y no se puede sobrecargar. Su precedencia es la misma que la de los operadores relacionales. Se puede utilizar con rangos o con subtipos.

-- Supongamos que X es de tipo Integer
if X in Positive then -- Positive es un subtipo de Integer
   ...
   if X not in 4 .. 6 then
      ...
   end if;
end if;
declare
   type Dia_Semana is
      (Lunes, Martes, Miercoles, Jueves, Viernes, Sabado, Domingo);
   subtype Dia_Laborable is Dia_Semana range Lunes .. Viernes;
   Hoy : Dia_Semana := Obtener_Dia;
begin

   if Hoy in Dia_Laborable then -- Dia_Laborable es un subtipo de Dia_Semana
      Ir_Al_Trabajo;
      if Hoy not in Lunes .. Miercoles then
         Pensar_En_El_Fin_De_Semana;
      end if;
   end if;
end;

Operadores lógicos de cortocircuito

Para los operadores lógicos existen versiones para minimizar las evaluaciones (short-circuit evaluation). Es decir, se evalúa primero el operando de la izquierda y después, sólo si es necesario para determinar el resultado, el de la derecha:

  • Conjunción and then: no se evalúa la segunda expresión si la primera es falsa porque ya sabemos que el resultado será falso.
  • Disyunción inclusiva or else: no se evalúa la segunda expresión si la primera es verdadera porque ya sabemos que el resultado será verdadero.
-- B / A > 3 no se ejecutará si A es 0 lo que nos será útil para evitar
-- un Constraint_Error
-- 
if A /= 0 and then
   B / A > 3 then

   Put_Line ("B / A es mayor que 3");

end if;

Manual de referencia de Ada

Este artículo ha sido escrito por Wikibooks. El texto está disponible bajo la licencia Creative Commons - Atribución - CompartirIgual. Pueden aplicarse cláusulas adicionales a los archivos multimedia.