Programación en Ada / Operadores
De Wikilibros, la colección de libros de texto de contenido libre.
Tabla de contenidos |
[editar] Clasificación
Ésta es la lista de operadores de Ada de menor a mayor precedencia.
| Clase | Nombre | Fórmula | Sintáxis Ada |
|---|---|---|---|
| Lógicos | Conjunción | ![]() |
and |
| Disyunción inclusiva | ![]() |
or |
|
| Disyunción exclusiva | ![]() |
xor |
|
| Relacionales | Igualdad | x = y | = |
| Desigualdad | ![]() |
/= | |
| Menor que | x < y | < | |
| Menor o igual que | ![]() |
<= | |
| Mayor que | x > y | > | |
| Mayor o igual que | ![]() |
>= | |
| Aditivo unario | Identidad | + x | + |
| Negación | − x | - | |
| Aditivo binario | Suma | x + y | + |
| Resta | x − y | - | |
| Concatenación | Concatenación | & | |
| Multiplicativo | Multiplicación | ![]() |
* |
| División | ![]() |
/ | |
| Módulo | xmod y | mod |
|
| Resto | rem |
||
| De máxima precedencia | Exponenciación | xy | ** |
| Negación | ![]() |
not |
|
| Valor absoluto | | x | | abs |
[editar] Propiedades
En todos los casos, excepto para la exponenciación, los dos operandos deben ser del mismo tipo.
Los operadores se pueden sobrecargar.
[editar] 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 IntegerifXinPositivethen-- Positive es un subtipo de Integer ...ifXnotin4 .. 6then...endif;endif;
declaretypeDia_Semanais(Lunes, Martes, Miercoles, Jueves, Viernes, Sabado, Domingo);subtypeDia_LaborableisDia_SemanarangeLunes .. Viernes; Hoy : Dia_Semana := Obtener_Dia;beginifHoyinDia_Laborablethen-- Dia_Laborable es un subtipo de Dia_Semana Ir_Al_Trabajo;ifHoynotinLunes .. MiercolesthenPensar_En_El_Fin_De_Semana;endif;endif;end;
[editar] Operadores lógicos de corto-circuito
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
andthen: no se evalúa la segunda expresión si la primera es falsa porque ya sabemos que el resultado será falso. - Disyunción inclusiva
orelse: 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 --ifA /= 0andthenB / A > 3thenPut_Line ("B / A es mayor que 3");endif;










