Curso de Cobol y PowerCobol

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.

Programación Fácil YouTube

Suscríbete

Si te ha gustado este curso y crees que el trabajo merece la pena, te agradeceré eternamente que te suscribas a mi canal de YouTube para apoyarme y que pueda seguir haciendo cursos gratuitos.

Además, si te encanta la programación, tienes un montón más de cursos gratuitos para ver.

No solo eso, podrás participar enviándome comentarios con tus sugerencias para temas específicos o cursos completos o incluso las dudas que tengas y las intentaré ir resolviendo en los cursos que estén todavía abiertos.