1. Tipo de dato lógico: bool
Como ya vimos, en C# hay un operador muy útil — if-else. Ejecuta un bloque de comandos si la condición entre paréntesis es verdadera, y otro bloque si la condición es falsa.
Para trabajar cómodamente con expresiones que pueden ser verdaderas o falsas, en C# añadieron un tipo especial — bool. Su principal característica es que las variables de este tipo solo pueden tener dos valores: true (verdadero) y false (falso).
No puedes asignar ningún otro valor a una variable de tipo bool. El compilador no te lo va a permitir.
Ejemplos de variables de tipo bool:
bool isAdult = true;
bool hasMoney = false;
Una variable de tipo bool solo tiene dos valores — true (verdadero) y false (falso). ¡Eso es todo! Casi como un test exitoso — o "pasó", o "falló" (ups).
2. Operaciones de comparación
¿Y para qué sirve un tipo tan simple? El verdadero poder de bool aparece cuando construimos expresiones lógicas. Normalmente se obtienen usando operadores de comparación.
| Operador | Significado | Ejemplo | Valor |
|---|---|---|---|
| == | Igual | |
true o false |
| != | No igual | |
true o false |
| > | Mayor | |
true o false |
| < | Menor | |
true o false |
| >= | Mayor o igual | |
true o false |
| <= | Menor o igual | |
true o false |
Ejemplo:
int age = 20;
bool isAdult = age >= 18; // true (20 mayor o igual que 18)
bool isTeenager = age >= 13 && age < 18; // false (20 no es menor que 18)
bool isEven = age % 2 == 0; // true (20 es divisible por 2 sin resto)
isAdult aquí será true, porque 20 – eso sí es "adulto".
Punto importante 1:
No puedes separar los operadores que tienen dos símbolos.
a < = 10
speed > = max
age = = 18
time ! = 0
Punto importante 2:
Ojo, no existen los operadores => y =<: solo existen <= y >=. Si escribes a =< 3, tu código simplemente no va a compilar.
Punto importante 3:
En C# no puedes escribir una expresión como 18 < age < 65. Porque la expresión 18 < age tendrá el valor true o false. Y comparar true < 65 (tipos diferentes) no se puede. Al menos, no en C#.
3. Operaciones lógicas
En C# no puedes escribir la expresión 18 < age < 65 — es sintácticamente incorrecta y el programa no va a compilar.
Pero sí puedes escribirlo así:
(18 < age) Y (age < 65)
Por supuesto, en vez de la palabra Y ahí va otro operador lógico, y justo ahora vamos a hablar de ellos.
En C# hay tres operadores lógicos: AND (y), OR (o) y NOT (no).
Buena noticia: usando paréntesis puedes construir expresiones lógicas tan complejas como quieras.
Mala noticia: los desarrolladores de C# decidieron usar los símbolos de C++ en vez de las palabras and, or y not.
| Operador lógico | Esperado | Realidad |
|---|---|---|
| Y (∧) | and | && |
| O (∨) | or | || |
| NO (¬) | not | ! |
Aquí tienes algunos ejemplos de operadores lógicos en C#:
| Expresión | Traducción | Explicación |
|---|---|---|
| (0 < a) && (a < 100) | (0 < a) and (a < 100) | (0 < a) Y (a < 100) |
| (!a) && (!b) | (not a) and (not b) | (NO a) Y (NO b) |
| !(!a || !b) | not((not a) or (not b)) | NO((NO a) O (NO b)) |
4. Tablas de verdad
Vamos a repasar rápidamente las operaciones lógicas.
Operador AND
El operador AND, también llamado Y, o &&, o conjunción, o multiplicación lógica.
| Expresión | Resultado |
|---|---|
| true && true | true |
| true && false | false |
| false && true | false |
| false && false | false |
En otras palabras, el resultado de la expresión es true (verdadero) solo si ambos valores en la expresión son true (verdadero). En cualquier otro caso, siempre es false (falso).
Operador OR
El operador OR, también llamado O, o ||, o disyunción, o suma lógica.
| Expresión | Resultado |
|---|---|
| true || true | true |
| true || false | true |
| false || true | true |
| false || false | false |
En otras palabras, el resultado de la expresión es true (verdadero) siempre que al menos uno de los valores en la expresión sea true (verdadero). Si ambos son false, entonces el resultado es false.
Operador NOT
El operador NOT, también llamado NO, o !, o inversión.
| Expresión | Resultado |
|---|---|
| ! true | false |
| ! false | true |
Cambia true a false y viceversa.
Expresiones útiles:
| Expresión | Resultado |
|---|---|
| m && !m | false |
| m || !m | true |
| !(a && b) | !a || !b |
| !(a || b) | !a && !b |
5. Ejemplos de operaciones lógicas: and, or, not
Operación "Y", AND, se escribe &&
El resultado es verdadero solo cuando ambas variables son verdaderas.
int age = 16;
bool hasTicket = true;
bool canAttend = age >= 14 && hasTicket; // true (16 mayor que 14 Y tiene ticket)
Si tienes 14 Y tienes ticket — ¡adelante!
Operación "O", OR, se escribe (||)
El resultado es verdadero si al menos una condición es verdadera.
bool isAdmin = false;
bool isModerator = true;
bool canEdit = isAdmin || isModerator; // true (puedes editar si al menos uno es true)
Si eres admin O moderador — ¡dale a los botones!
Operación "NO", NOT, se escribe (!)
El inversor convierte verdadero en falso y viceversa.
bool isWeekend = false;
bool shouldGoToWork = !isWeekend; // true (si no es fin de semana, a currar)
Si NO es fin de semana — ¡toca levantarse!
Combinando: crea condiciones tan complejas como quieras
Puedes combinar todas las operaciones lógicas que quieras (mejor no pasarse, para que no salga algo tipo "si no NO no NO no eres admin..."). Los paréntesis se pueden (¡y se deben!) usar para que quede claro.
Ejemplo:
int age = 17;
bool hasTicket = false;
bool isVip = true;
bool canGo = (age >= 18 && hasTicket) || isVip; // true, porque isVip = true
En este ejemplo la lógica es: si la persona es mayor de edad y tiene ticket, o si es VIP — pasa. Si no es VIP — solo si es adulto y tiene ticket.
GO TO FULL VERSION