Programación en Ada/Operadores
De Wikilibros, la colección de libros de texto de contenido libre.
Contenido |
Clasificación [editar]
É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 | ![]() |
= |
| Desigualdad | ![]() |
/= | |
| Menor que | ![]() |
< | |
| Menor o igual que | ![]() |
<= | |
| Mayor que | ![]() |
> | |
| Mayor o igual que | ![]() |
>= | |
| Aditivo unario | Identidad | ![]() |
+ |
| Negación | ![]() |
- | |
| Aditivo binario | Suma | ![]() |
+ |
| Resta | ![]() |
- | |
| Concatenación | Concatenación | & | |
| Multiplicativo | Multiplicación | ![]() |
* |
| División | ![]() |
/ | |
| Módulo | ![]() |
mod |
|
| Resto | rem |
||
| De máxima precedencia | Exponenciación | ![]() |
** |
| Negación | ![]() |
not |
|
| Valor absoluto | ![]() |
abs |
Propiedades [editar]
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) [editar]
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;
Operadores lógicos de corto-circuito [editar]
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;


















