Los operadores lógicos son herramientas fundamentales para escribir expresiones que evalúan condiciones y devuelven valores booleanos, es decir, true o false. Estos valores representan lo correcto o lo incorrecto, respectivamente, y nos permiten tomar decisiones dentro de nuestro código. Por ejemplo, podemos definir una variable admin y asignarle el valor true para indicar que una cuenta tiene privilegios administrativos.
Uno de los operadores más esenciales es el operador de igualdad, representado por ==. Este operador compara dos expresiones y devuelve true si ambas son exactamente iguales en valor y tipo. Por ejemplo, la expresión 5 == 5 evaluará a true, mientras que 5 == 6 será false. Este operador es especialmente útil cuando queremos verificar si una variable, como x, tiene un valor específico, por ejemplo, x == 100.
En contraposición, tenemos el operador de desigualdad, que se escribe como !=. Este operador devuelve true cuando los valores comparados son diferentes, y false cuando son iguales. Por ejemplo, x != 100 será true si x no es igual a 100. Es importante recordar que un solo igual (=) se utiliza para asignar valores, mientras que dos iguales (==) se usan para comparar. El operador != combina una exclamación con un igual para indicar no igual.
Además de estos operadores básicos, existen operadores para comparar números en términos de orden. El operador menor que < devuelve true si el valor a la izquierda es numéricamente menor que el de la derecha. Por ejemplo, 5 < 7 es true, mientras que 7 < 5 es false. Si queremos incluir la igualdad en la comparación, usamos el operador menor o igual <=, que devuelve true si el valor de la izquierda es menor o igual al de la derecha. Por ejemplo, x <= y será true si x es menor que y o si ambos son iguales.
De manera similar, el operador mayor que > devuelve true cuando el valor de la izquierda es mayor que el de la derecha. Por ejemplo, 7 > 5 es true, pero 7 > 7 es false porque son iguales. Para incluir la igualdad, usamos el operador mayor o igual >=.
Aunque estos operadores suelen usarse con números, también podemos aplicarlos a átomos, que son valores simbólicos o cadenas de texto. Podemos comparar si dos átomos son iguales con ==, por ejemplo, "hola" == "hola" devuelve true, mientras que "hola" == "adiós" devuelve false.
Lo que puede resultar sorprendente es que también podemos usar operadores de orden como < y > para comparar átomos. En este caso, la comparación se realiza de forma lexicográfica, es decir, siguiendo el orden alfabético como en un diccionario. Por ejemplo, el átomo "A" es menor que "B" porque la letra A aparece antes que la B en el alfabeto. Por lo tanto, "A" < "B" evalúa a true.
Cuando comparamos átomos que tienen varias letras, la comparación se hace letra por letra. Por ejemplo, "A" es menor que "AB" porque en un diccionario la palabra más corta que coincide en las primeras letras aparece antes. Por lo tanto, "A" < "AB" es true, mientras que "AB" < "A" es false.
Este tipo de comparaciones lexicográficas puede parecer poco común, pero tiene aplicaciones prácticas en ciertos contextos donde necesitamos ordenar o filtrar datos simbólicos. También podemos usar los operadores <= y >= con átomos para incluir la igualdad en la comparación.
En definitiva, conocer y dominar estos operadores lógicos y de comparación nos permite construir condiciones precisas y controlar el flujo de nuestros programas de manera efectiva, tanto con números como con átomos.