"¡Saludos, Amigo! Estaba tan entusiasmado resolviendo problemas de lógica que no me di cuenta de que entraste. Aquí te dejo uno: si los cocodrilos vuelan, entonces la nieve es blanca. Hay un cocodrilo volador. ¿Cuál es la conclusión?"

"Um... ¿Entonces llegamos a la conclusión de que la nieve es blanca?"

"¡Excelente! Pasaste la prueba de iniciación. Estás listo para dominar el siguiente tema. Se llama 'operadores lógicos'. Y comenzaremos con la lógica booleana. Instintivamente, ya lo sabes. Eres un robot, después de todo . Solo necesitamos modificar su configuración para que coincida con el lenguaje Java".

"¿Lógica booleana? Hace poco me hablaron del tipo booleano..."

"Sí, aquí hay una conexión directa. Las expresiones booleanas solo pueden ser verdaderas o falsas. Y da la casualidad de que este tipo de lógica tiene que ver con expresiones que son verdaderas o falsas, y combinaciones de tales expresiones. Por ejemplo, la expresión 18 < 25 siempre es verdadero y 7 < 5 siempre es falso. La expresión (i < 10) depende del valor de i. Y si la expresión se evalúa, por ejemplo, como verdadera, entonces podemos pedirle al programa que haga algo".

"Ahh, lo entiendo. Las expresiones booleanas nos permiten no solo sacar conclusiones lógicas, sino también crear bifurcaciones en los programas".

"Exactamente. Lo principal es aprender a escribirlos. Por ejemplo, en Java no puedes simplemente ir y escribir la expresión 18 < age <65. Esto sería sintácticamente incorrecto y el programa no compilará.

"Pero puedes escribirlo así:

(18 < age) AND (age < 65)

Por supuesto, en realidad no usamos la palabra INGLÉS AND. En su lugar, necesita un operador booleano . Es decir, 'Y' se representa de manera diferente.

"Hay tres operadores lógicos en Java: AND(&&), OR(||), NOT(!).

La buena noticia es que puede usar paréntesis para construir expresiones lógicas de cualquier complejidad.

La mala noticia es que los desarrolladores de Java decidieron usar la notación del lenguaje C en lugar de las palabras and, ory not.

Mira a la pantalla:

operador lógico Expectativa Realidad
AND (∧) and &&
OR (∨) or ||
NOT (¬) not !

"En realidad no es tan malo... Bastante compacto. Casi los he memorizado".

"Bueno, eso es maravilloso. Aquí hay algunos ejemplos del uso de operadores lógicos en Java:

Expresión Interpretación Explicación
(0 < a) && (a < 100) (0 < a) and (a < 100) (0 < a) AND (a < 100)
(!a) && (!b) (not a) and (not b) (NOT a) AND (NOT b)
!(!a || !b) not((not a) or (not b)) NOT((NOT a) OR (NOT b))

Ejemplos de uso de operadores de comparación y variables booleanas

"Recuerda, amigo, donde sea que puedas escribir una expresión lógica, puedes escribir una variable lógica".

"¿Como es que?"

"Quiero decir que puedes escribir expresiones lógicas de diferentes maneras. Por ejemplo:

Código Explicación
int age = 35;
if (age >= 18 && age <= 65)
   System.out.println("You can work");
Si el valor de la edad está entre 18y 65, se muestra la frase "Puedes trabajar".
int age = 35;
boolean isYoung = (age < 18);
if (!isYoung && age <= 65)
   System.out.println("You can work");
Creamos una isYoungvariable y movimos la primera parte de la expresión dentro de ella. Simplemente reemplazamos age >= 18con age < 18.
int age = 35;
boolean isYoung = (age < 18);
boolean isOld = (age > 65);
if (!isYoung && !isOld)
   System.out.println("You can work");
Creamos una variable isOld y movimos la segunda parte de la expresión dentro de ella. Además, age <= 65fue reemplazado por age > 65.

"Estos tres ejemplos son equivalentes. Solo en el segundo ejemplo movimos parte de la expresión de la ifdeclaración a una variable booleana separada ( isYoung). En el tercer ejemplo, movimos la segunda parte de la expresión a una segunda variable ( isOld). Por cierto, el valor predeterminado de una variable booleana es false".

"Lo recordaré. Espero".

aritmética lógica

"Ahora repasemos brevemente las operaciones lógicas. Obedecen reglas muy simples y lógicas (¡cómo no podía ser de otra manera!).

“Primero, veamos cómo ORfunciona el operador. También se le conoce como ||o disyunción .

Expresión Resultado
true || true true
true || false true
false || true true
false || false false

"¿Puedes deducir ahora cuál a || bes el resultado de la expresión basado en la tabla?"

"¡Veo!" El valor de una expresión es truesi al menos un término de la expresión es true. Si ambos son false, entonces el resultado es false.

"Eso es correcto. Ya que eres tan inteligente, echa otro vistazo a la tabla e imagina que falsees 0 y truees 1. Cuando lo miras de esa manera, ¿el ||comportamiento del operador te recuerda algo de la aritmética ordinaria?"

"Um... Bueno, es un poco como una suma... Pero cuando sumas, 1 + 1 no es igual a 1".

"Hay un sentido en el que es igual si solo estamos trabajando con 0 y 1. Pero no te molestes con eso ahora. Lo importante es que notaste la similitud entre la operación y la suma. Esto significa que ||no No se sorprenda por el hecho de que esta operación a menudo se denomina 'suma lógica'.

"Entiendo."

"Ahora el operador de conjunciónAND , también conocido como &&, también conocido como , entra en escena.

Expresión Resultado
true && true true
true && false false
false && true false
false && false false

"Según tengo entendido, el resultado de una expresión es truesolo si los dos valores que componen la expresión son true. De lo contrario, siempre es false".

"¡Bien hecho, Amigo! Estás absorbiendo todo esto como una esponja. ¿Ves otra similitud con la aritmética?"

"¡Multiplicación!"

"Exactamente. Así que aquí tenemos una 'multiplicación lógica'".

"Luego nos fijamos en el NOToperador, también conocido !como el inverso lógico .

Expresión Resultado
!true false
!false true

"Bueno, aquí todo es bastante simple. El operador cambia truea falsey viceversa".

"Exactamente. Aquí hay algunas expresiones útiles para ti:"

Expresión Resultado
m && !m false
m || !m true
!(a && b) !a || !b
!(a || b) !a && !b