1. Operador if else
Las apps no tendrían mucha gracia si hicieran siempre lo mismo, sin importar cómo cambian las circunstancias externas. Un programa tiene que saber adaptarse a diferentes situaciones y hacer unas cosas en unos casos, y otras en otros.
En C# esto se hace con el operador condicional — una palabra clave especial que te deja ejecutar diferentes bloques de comandos dependiendo de si la condición es verdadera o falsa.
El operador condicional tiene tres partes: condición, comando 1 y comando 2. Si la condición es verdadera, se ejecuta comando 1, si no, se ejecuta comando 2. Los comandos nunca se ejecutan a la vez. El esquema general es así:
if (condición)
comando1;
else
comando2;
if-else
if significa "si", y else es "si no". En lenguaje humano sería algo así:
Si condición es verdadera, entonces
ejecutar comando1;
si no
ejecutar comando2;
if-else en lenguaje humano
Ejemplos:
//En pantalla aparecerá: Aún eres un niño
int age = 17;
if (age < 18)
Console.WriteLine("Aún eres un niño");
else
Console.WriteLine("Ya eres adulto");
//En pantalla aparecerá: Calor
int temperature = 5;
if (temperature < 0)
Console.WriteLine("Hace frío fuera");
else
Console.WriteLine("Calor");
//En pantalla aparecerá: Puedes sacarte el carnet
int age = 18;
if (age == 18)
Console.WriteLine("Puedes sacarte el carnet");
else
Console.WriteLine("Puedes ahorrar para el coche");
2. Bloque de comandos
Si quieres que tu programa ejecute varias instrucciones cuando se cumple (o no) la condición, puedes agruparlas en un bloque de comandos.
Para agrupar comandos en un bloque, tienes que "envolverlos" entre llaves. Así se ve en general:
{
comando1;
comando2;
comando3;
}
Puedes poner tantos comandos como quieras en el bloque. Incluso ninguno.
Ejemplos combinando el operador if-else y bloques de comandos:
//En pantalla aparecerá: Aún eres un niño. No discutas con los adultos
int age = 17;
if (age < 18)
{
Console.WriteLine("Aún eres un niño");
Console.WriteLine("No discutas con los adultos");
}
else
{
Console.WriteLine("Ya eres adulto");
Console.WriteLine("Vaya juventud");
}
//En pantalla aparecerá: Calor
int temperature = 5;
if (temperature < 0)
{
Console.WriteLine("Hace frío fuera");
Console.WriteLine("Ponte gorro");
}
else
Console.WriteLine("Calor");
//Se ejecutará un bloque vacío. No se mostrará nada en pantalla.
int age = 21;
if (age == 18)
Console.WriteLine("Preséntate en la oficina de reclutamiento");
else
{
}
3. Sintaxis corta del operador if
Si el bloque else no tiene código, puedes omitirlo. Entonces el operador if queda así:
if (condición)
comando1;
if
Ejemplo:
int age = 19;
if (age >= 18)
{
Console.WriteLine("¡Eres mayor de edad!");
}
¿Cómo funciona?
Si la condición es verdadera, se ejecuta el bloque de código. Si es falsa, no pasa nada — el programa sigue adelante.
El bloque else está en el programa, pero está vacío (no hay comandos entre las llaves). Puedes quitarlo: no cambia nada.
4. Combinando condiciones: else if
A veces necesitas comprobar más que un simple "sí/no", sino elegir entre varias opciones. Aquí entra en juego la combinación else if:
if (condición1)
{
// Se ejecuta si condición1 es verdadera
}
else if (condición2)
{
// Se ejecuta si condición2 es verdadera y condición1 es falsa
}
else
{
// Se ejecuta si ninguna de las condiciones anteriores se cumple
}
Ejemplo:
int hour = 13;
if (hour < 12)
{
Console.WriteLine("¡Buenos días!");
}
else if (hour < 18)
{
Console.WriteLine("¡Buenas tardes!");
}
else
{
Console.WriteLine("¡Buenas noches!");
}
¿Qué pasa aquí?
- Si la hora es antes de las 12 — es mañana.
- Si es de 12 a 18 — es tarde.
- Si es más — es noche.
- ¡El programa elige solo UNA opción! En cuanto se cumple una condición, las demás ni se miran.
5. Ilustración esquemática: diagrama de flujo de ramificación
Así se ve en un diagrama de flujo:
Y si hay varias condiciones:
Esto se parece mucho a los caminos en los juegos de rol de mesa: vas a la izquierda — una cosa, a la derecha — otra, recto — ¡otra más!
6. ¿Qué condiciones se pueden comprobar?
Dentro de los paréntesis después de if tiene que haber una expresión LÓGICA — cuyo resultado sea true o false.
Operadores de comparación principales:
| Operador | Significado | Ejemplo |
|---|---|---|
| == | Igual | x == 5 |
| != | No igual | x != 10 |
| > | Mayor | x > 0 |
| < | Menor | age < 18 |
| >= | Mayor o igual | score >= 100 |
| <= | Menor o igual | count <= 50 |
Ejemplos de condiciones:
if (number == 10)
if (age != 18)
if (temperature > 36)
if (balance <= 0)
Ojo: = (un signo) — es asignación. == (dos signos) — comparación. ¡Es uno de los errores más típicos de los que empiezan! Si por error escribes:
if (x = 5) // ¡ERROR!
— el compilador te va a regañar, y con razón.
7. Trabajando con cadenas en condiciones
Puedes comparar no solo números, sino también cadenas:
string password = Console.ReadLine();
if (password == "qwerty")
{
Console.WriteLine("¡Has entrado!");
}
Ojo: comparar cadenas con == en C# funciona bien en casos normales, porque compara el contenido de las cadenas (no solo las referencias a objetos). Ya hablaremos más sobre los detalles de comparar cadenas cuando veamos métodos de strings y temas de localización.
8. Detalles y matices:
¿Llaves: sí o no?
Si después de if o else solo hay un comando, puedes omitir las llaves:
if (age > 18)
Console.WriteLine("¡Tienes más de 18!");
// Pero es más seguro ESCRIBIRLAS SIEMPRE:
if (age > 18)
{
Console.WriteLine("¡Tienes más de 18!");
}
Consejo: escribe siempre con llaves. Así te ahorras un montón de errores, sobre todo cuando amplíes el código.
Errores lógicos: ¡ojo con las condiciones!
Si escribes esto:
if (age > 18)
Console.WriteLine("¡Tienes más de 18!");
Console.WriteLine("¡Bienvenido!");
El compilador lo va a leer así:
if (age > 18)
{
Console.WriteLine("¡Tienes más de 18!");
}
Console.WriteLine("¡Bienvenido!");
La segunda línea siempre se ejecutará — las llaves son necesarias para que ambas líneas estén dentro de la "rama".
GO TO FULL VERSION