next up previous contents
Siguiente: Resumen Subir: Operadores básicos Anterior: Operador concatenación   Índice General

Evaluación óptima de expresiones

Al utilizar los operadores lógicos or y and, a veces no es necesario evaluar toda la expresión para saber el resultado definitivo. Por ejemplo:

           if (Funcion_1 (X) > 0) or (Funcion_2 (X) < 13) then
              -----; 
              -----;  (bloque de codigo) 
              -----; 
           end if;

Si analizamos la tabla de verdad del operador lógico A or B (apartado 3.3) vemos que si A es cierto, el resultado ya es definitivamente cierto. Sin embargo, Ada no sabe si nosotros queremos que evalúe B (aunque acabamos de ver que, generalmente, no es necesario). Para decirle a Ada que queremos hacer una evaluación óptima de expresiones lógicas, en vez de utilizar el operador or, debes utilizar el operador or else. Por ejemplo:

           if D /= 0.0 or else N / D >= 10.0 then 
              -----; 
              -----;  (bloque de codigo) 
              -----; 
           end if;

Ada garantiza que la expresión a la izquierda de or else se evaluará antes que la de la derecha. Si esta expresión es cierta (True), la expresión completa será cierta (por lo que Ada no realiza la evaluación de la expresión a la derecha); si es falsa, entonces es necesario evaluar la expresión de la derecha. Aprovechándo ésta característica podemos asegurar que el código anterior nunca realizará una división por cero.

El operador complementario de or else es and then. En este caso si la expresión a la izquierda de and then es falsa, Ada detiene la evaluación del resto de la expresión porque sabe que el resultado es falso; si es cierta, Ada tendrá que evaluar la expresión de la derecha.


next up previous contents
Siguiente: Resumen Subir: Operadores básicos Anterior: Operador concatenación   Índice General
Javier Miranda 2002-10-03