Curso de C# desde cero

Los operadores and, or y not

Capítulo 12: Los operadores de lógicos de C#


Los operadores lógicos de C# nos dan la posibilidad de combinar más de una expresión booleana a la vez. Estos operadores son: && (y lógico), || (o lógico) y ! (negación lógica).

Estas expresiones, son como las del capítulo anterior, solo que aquí, con estos operadores, podremos combinar dos expresiones a la vez. No solo eso, se pueden ir encadenando más pares de dos expresiones utilizando de nuevo los mismos operadores o combinándolos. Ahora verás que es más simple de lo que parece.

El operador lógico and de C#

El operador && (and) evalúa dos expresiones booleanas y devuelve true solo si ambas expresiones son true, de lo contrario, devuelve false. Te dejo una table de verdad para que veas los posibles resultados:

Expresión 1 Expresión 2 Resultado
true true true
true false false
false true false
false false false

Este sería un ejemplo:

int numero1 = 10;
int numero2 = 20;

bool expresion1 = numero1 < numero2;
bool expresion2 = numero1 != numero2;
bool resultado = expresion1 && expresion2;

Console.WriteLine(resultado);

Ambas expresiones son True, por lo tanto, en la variable resultado se guarda un valor de True.

True

En cambio, en este nuevo ejemplo, en la segunda expresión, no se está cumpliendo la expresión. Por lo tanto, una True y otra False, da False en conjunto.

int numero1 = 10;
int numero2 = 20;

bool expresion1 = numero1 < numero2;
bool expresion2 = numero1 == numero2;
bool resultado = expresion1 && expresion2;

Console.WriteLine(resultado);
False

El operador lógico or de C#

El operador lógico 'or' || de C#, es más flexible que el 'and', ya que solo requiere de que una de las dos expresiones se cumplan para dar True. Solo dará False en caso de que no se cumpla ninguna de las dos expresiones. Aquí tienes la tabla de verdad que representa las posibilidades:

Expresión 1 Expresión 2 Resultado
true true true
true false true
false true true
false false false

En el siguiente ejemplo, no se cumple la segunda expresión. Sin embargo, el resultado final es True, ya que se cumple la primera expresión.

int numero1 = 10;
int numero2 = 20;

bool expresion1 = numero1 < numero2;
bool expresion2 = numero1 == numero2;
bool resultado = expresion1 || expresion2;

Console.WriteLine(resultado);
True

En cambio, en este ejemplo, no se cumple ninguna de las dos expresiones:

int numero1 = 10;
int numero2 = 20;

bool expresion1 = numero1 > numero2;
bool expresion2 = numero1 == numero2;
bool resultado = expresion1 || expresion2;

Console.WriteLine(resultado);
False

El operador lógico not de C#

El operador lógico 'not' ! es más sencillo. Se utiliza para expresar todo lo contrario de una expresión.

int numero1 = 10;
int numero2 = 20;

bool expresion = !(numero1 == numero2);

Console.WriteLine(expresion);
True

En esta expresión que englobo entre paréntesis, el resultado sería False, puesto que numero1, no es igual que numero2. Sin embargo, lo que esto expresando con el operador de negación lógica, es que evalúe si esos dos valores no son iguales.

Si ponemos los dos valores iguales, dará False:

int numero1 = 10;
int numero2 = 10;

bool expresion = !(numero1 == numero2);

Console.WriteLine(expresion);
False

Da este resultado porque le estamos diciendo si no son iguales, dado que lo son, da False.

Combinando varios operadores lógicos

El uso de estas condiciones no está limitado a dos expresiones. Puedes encadenar y combinar tantos operadores lógicos como necesites. No obstante, mi recomendación es que no abuses de ellos para hacer expresiones demasiado complicadas y laberínticas, ya que empeorará la claridad del código. Siempre hay formas diferentes de llegar a los mismos caminos.

int numero1 = 10;
int numero2 = 20;

bool expresion = (numero1 > 5 && numero2 < 30) 
                || !(numero1 == numero2);

Console.WriteLine(expresion);
True

Simplifico el código y te explico. (True && True) || !(False) = (True) || (True) = True.

Primero, se evalúa (numero1 > 5 && numero2 < 30). Esta expresión conjunta devuelve True, ya que numero1 es mayor que 5 y numero2 es menor que 30. Pues bien, aquí nos queda un True.
La otra parte de la expresión es !(numero1 == numero2). Puesto que no son iguales, da False y por lo tanto, con la negación lógica, se invierte.
Finalmente, nos queda esto: (True) || (True). Verdadero o verdadero es True con un 'or'.

Estas expresiones todavía no tienen utilidad con lo que llevas de curso, pero muy pronto, verás como usarlas para hacer todo tipo de cosas.


Comentarios

Si te quedan dudas sobre el temario, sobre C#, 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.