MA-TEC
4.2 Optimización de expresiones booleanas
Las expresiones booleanas se usan para determinar si un conjunto de
una o más condiciones es verdadero o falso, y el resultado de su
evaluación es un valor de verdad. Los operandos de una expresión
booleana pueden ser cualquiera de los siguientes:
Expresiones relacionales: que comparan dos valores y
determinan si existe o no una cierta relación entre ellos (ver
más adelante), tal como mfn<10;
Funciones booleanas: tal como p(v24), que regresa un valor de
verdad (estos se explican bajo "Funciones booleanas").
Las expresiones relacionales permiten determinar si una relación
dada se verifica entre dos valores. La forma general de una
expresión relacional es:
Expresión-1 operador-de-relación expresión-2
Donde:
expresión-1 es una expresión numérica o de cadena y operador-derelación es uno de los siguientes:
- = Igual
- No igual (diferente de)
- < Menor que
- <= Menor o igual que
- Mayor que
- >= Mayor o igual que
- : Contiene (puede ser usado sólo en expresiones de cadena)
expresión-2: es una expresión del mismo tipo que expresión-1, o sea,
expresión-1 y expresión-2 deben ser ambas expresiones numéricas o
ambas expresiones de cadena.
Los operadores de relación = <> < <= > >= tienen su significado
convencional cuando se aplican a expresiones numéricas (dentro de
los límites de precisión de los valores numéricos definidos bajo
"Expresiones numéricas"). Cuando se comparan expresiones de
cadena, se aplican las siguientes reglas:
- Excepto por el operador " :" (contiene), las cadenas secomparan exactamente en la forma en que ocurren, o sea, lasletras mayúsculas y minúsculas se comparan de acuerdo con el código ASCII que les corresponde (p.ej. A será considerada menor que a);
- Dos expresiones de cadena no son consideradas iguales, a
menos que tengan la misma longitud. Si dos expresiones
generan cadenas de diferente longitud que son idénticas,
carácter por carácter, hasta el total de la longitud de la más
corta, entonces, la más corta será considerada menor que la
más larga.
El operador: (contiene), busca una cadena de caracteres (definida
por expresión-2) en otra cadena (definida por expresión-1). Si el
segundo operando existe en cualquier parte del segundo operando, el
resultado es Verdadero (TRUE). Este operador es insensible al
hecho de que los caracteres se hallen en mayúsculas o minúsculas:
por lo que las letras minúsculas se consideran iguales a su letra
mayúscula correspondiente. Por ejemplo, el resultado de:
v10: 'química'
Será Verdadero (True) si, y sólo si, el campo 10 contiene la cadena
química. en caso contrario, el resultado será Falso (False). Nótese
que el segundo operando puede ser cualquier cadena o carácter, y no
necesita ser una palabra como tal. Por lo tanto, en este ejemplo, el
resultado será Verdadero no sólo si el campo 10 contiene la palabra química,
sino también si contuviera bioquímica, fotoquímicas, químicamente,
etc.
Los operandos de una expresión booleana pueden combinarse con
los operadores siguientes:
NOT (NO) Este operador produce el valor Verdadero, si su
operando es Falso; y el valor Falso, si su operando es
Verdadero. El operador NOT sólo puede usarse como operador
signo +, o sea, siempre se aplica a la expresión booleana que le
sigue;
AND (Y) Este operador produce el valor Verdadero si ambos
operandos son Verdadero. Si cualquiera de los dos operandos
es Falso, entonces el resultado será Falso;
OR (O) Este operador realiza una operación O-inclusivo. El
resultado es Verdadero si cualquiera de los dos operandos, o
ambos son Verdadero. En caso contrario, es Falso.
Al evaluar expresiones booleanas, y en ausencia de paréntesis,
CDS/ISIS ejecutará las operaciones NOT en primer lugar, después
las operaciones AND, y finalmente las OR.
Las series de dos o más
operadores del mismo nivel, se ejecutan de izquierda a derecha. Se
pueden usar paréntesis para alterar el orden de evaluación: las
expresiones dentro de paréntesis se evalúan antes, y las expresiones
entre paréntesis internos a otros, son evaluadas antes que las
expresiones externas a los paréntesis.