
Los operadores lógicos de COBOL
Capítulo 24: Los operadores lógicos AND, OR y NOT
En este capítulo aprenderás a realizar condiciones más complejas (varias condiciones en la expresión del IF
). Esto lo vamos a conseguir utilizando los operadores lógicos que voy a explicar.
El operador lógico AND
El operador lógico AND
, devolverá en la condición un valor de true
solo si se cumplen las dos condiciones expresadas. Fíjate en la siguiente tabla:
Condición 1 | Condición 2 | Valor devuelto |
---|---|---|
True | True | True |
True | False | False |
False | True | False |
False | False | False |
Tal y como puedes ver, se trata de un operador muy estricto. Veamos unos ejemplos de su uso:
IDENTIFICATION DIVISION.
PROGRAM-ID. Capitulo24.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
DATA DIVISION.
FILE SECTION.
WORKING-STORAGE SECTION.
77 Numero1 PIC 99 VALUE 10.
77 Numero2 PIC 99 VALUE 10.
PROCEDURE DIVISION.
OperadoresLogicos.
*> Comparaciones con operadores lógicos.
IF Numero1 > 5 AND Numero2 < 11 THEN
DISPLAY "Se cumple la condición."
END-IF
STOP RUN.
END PROGRAM Capitulo24.
Puesto que Numero1
es mayor que 5
y que Numero2
es menor que 11
, se cumplen las dos condiciones y por lo tanto, se ejecuta el condicional.
Se cumple la condición.
IF Numero1 > 5 AND Numero2 > 11 THEN
DISPLAY "Se cumple la condición."
END-IF
En este caso, no se ejecuta nada, ya que aunque la primera condición se cumple, la otra no.
IF Numero1 > 50 AND Numero2 > 11 THEN
DISPLAY "Se cumple la condición."
END-IF
Aquí las dos condiciones devuelven false
y por lo tanto, en general, obtenemos un false
. No se ejecuta el IF
.
El operador lógico OR
El operador lógico OR
es mucho más flexible que el anterior. La condición para devolver true
, es que se cumpla al menos una de las condiciones. Aquí tienes la tabla:
Condición 1 | Condición 2 | Valor devuelto |
---|---|---|
True | True | True |
True | False | True |
False | True | True |
False | False | False |
Probemos esto con unos ejemplos.
IF Numero1 > 5 OR Numero2 < 11 THEN
DISPLAY "Se cumple la condición."
END-IF
Ambas condiciones son true
y por lo tanto, devuelve true
.
Se cumple la condición.
En el siguiente ejemplo, tenemos una condición false
y otra true
.
IF Numero1 > 5 OR Numero2 > 11 THEN
DISPLAY "Se cumple la condición."
END-IF
Se sigue cumpliendo con el OR
. algo que no ocurre con el AND
en este caso.
Se cumple la condición.
IF Numero1 < 5 OR Numero2 > 11 THEN
DISPLAY "Se cumple la condición."
END-IF
Ambas condiciones son false
y por lo tanto, no se ejecuta el IF
.
El operador NOT
Pasemos a ver el operador NOT
, el cual nos permite realizar condiciones con negaciones, para conseguir todo lo contrario a lo expresado. Hemos visto algo de esto en el curso.
IDENTIFICATION DIVISION.
PROGRAM-ID. Capitulo24.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
DATA DIVISION.
FILE SECTION.
WORKING-STORAGE SECTION.
77 Numero1 PIC 99 VALUE 10.
77 Numero2 PIC 99 VALUE 10.
PROCEDURE DIVISION.
OperadoresLogicos.
*> Comparaciones con operadores lógicos.
IF Numero1 IS NOT < 5 THEN
DISPLAY "Se cumple la condición."
END-IF
STOP RUN.
END PROGRAM Capitulo24.
En este caso, se cumple la condición, ya que Numero1
no es menor que 5
.
Se cumple la condición.
En cambio, si la condición es verdadera, tal y como puedes ver en el siguiente ejemplo, el IF
no se va a ejecutar.
IF Numero1 IS NOT > 5 THEN
DISPLAY "Se cumple la condición."
END-IF
Numero1
es mayor que 5
, no obstante, lo estamos negando.
Combinando operadores en los condicionales
Podemos hacer combinaciones complejas juntando más de dos condiciones en un IF
. Podemos hasta mezclar operadores.
IF Numero1 IS NOT > 15 OR Numero1 < 7 AND Numero2 > 9 THEN
DISPLAY "Se cumple la condición."
END-IF
Se cumple la condición general, puesto que Numero1
no es mayor que 15
, Numero1
es menor que 7
y Numero2
es mayor que 9
.
Se cumple la condición.
Si tenemos varias condiciones, con el fin de ayudar a separarlas, se pueden utilizar paréntesis.
IF (Numero1 > 9 OR < 5) AND (Numero1 NOT = 15 OR > 15)
AND (Numero2 = 10) THEN
DISPLAY "Se cumple la condición."
END-IF
Primero se evalúa (Numero1 > 9 OR < 5)
, después se evalúa (Numero1 NOT = 15 OR > 15)
. Estas dos condiciones, tienen que devolver true
, puesto que tenemos un AND
entre las dos. Además de todo, la última condición (Numero2 = 10)
tiene que ser true
también, porque la tenemos unida a un AND
más.
Se cumple la condición.
Si quitas los paréntesis, funciona igual, pero como puedes ver, no es tan fácil de leer.
IF Numero1 > 9 OR < 5 AND Numero1 NOT = 15 OR > 15
AND Numero2 = 10 THEN
DISPLAY "Se cumple la condición."
END-IF
Comentarios
Si te quedan dudas sobre el temario, sobre Cobol, o cualquier otra cosa relacionada o simplemente quieres agradecer, aquí tienes tu sitio para dejar tu granito de arena. Gracias por tus comentarios y por darle vida a este sitio web.