Estructuras de Controlc++ifelsecondicionalesestructuras-de-control

Estructura de Control if-else

Aprende a tomar decisiones en tus programas usando if, else if y else

OOI Oaxaca9 de febrero de 20266 min read

La sentencia if

La sentencia if ejecuta código solo si una condición es verdadera:

if (condición) {
    // Se ejecuta si la condición es true
}

Ejemplo básico

int edad;
cin >> edad;

if (edad >= 18) {
    cout << "Eres mayor de edad" << endl;
}

if-else

Ejecuta un bloque si la condición es verdadera, otro si es falsa:

if (condición) {
    // Se ejecuta si es true
} else {
    // Se ejecuta si es false
}

Ejemplo

int numero;
cin >> numero;

if (numero % 2 == 0) {
    cout << "Par" << endl;
} else {
    cout << "Impar" << endl;
}

if-else if-else

Para múltiples condiciones:

if (condición1) {
    // Si condición1 es true
} else if (condición2) {
    // Si condición2 es true
} else if (condición3) {
    // Si condición3 es true
} else {
    // Si ninguna es true
}

Ejemplo: Calificación en letras

int nota;
cin >> nota;

if (nota >= 90) {
    cout << "A" << endl;
} else if (nota >= 80) {
    cout << "B" << endl;
} else if (nota >= 70) {
    cout << "C" << endl;
} else if (nota >= 60) {
    cout << "D" << endl;
} else {
    cout << "F" << endl;
}

if anidados

Un if puede contener otros if:

int edad;
bool tienePermiso;
cin >> edad >> tienePermiso;

if (edad >= 18) {
    if (tienePermiso) {
        cout << "Puede entrar" << endl;
    } else {
        cout << "Necesita permiso" << endl;
    }
} else {
    cout << "Es menor de edad" << endl;
}

Equivalente más legible:

if (edad >= 18 && tienePermiso) {
    cout << "Puede entrar" << endl;
} else if (edad >= 18) {
    cout << "Necesita permiso" << endl;
} else {
    cout << "Es menor de edad" << endl;
}

Llaves opcionales

Si el bloque tiene una sola instrucción, las llaves son opcionales:

// Con llaves (recomendado)
if (x > 0) {
    cout << "Positivo" << endl;
}

// Sin llaves (funciona, pero puede causar errores)
if (x > 0)
    cout << "Positivo" << endl;

¡Cuidado! Sin llaves, solo la primera línea pertenece al if:

if (x > 0)
    cout << "Positivo" << endl;
    cout << "Esto siempre se ejecuta" << endl;  // ¡No es parte del if!

El operador ternario

Una forma compacta de if-else para asignaciones:

// Forma larga
int mayor;
if (a > b) {
    mayor = a;
} else {
    mayor = b;
}

// Forma con operador ternario
int mayor = (a > b) ? a : b;

Sintaxis

resultado = (condición) ? valor_si_true : valor_si_false;

Ejemplos

// Valor absoluto
int absoluto = (n < 0) ? -n : n;

// Mínimo de dos números
int minimo = (a < b) ? a : b;

// Paridad
string paridad = (n % 2 == 0) ? "par" : "impar";

Ejemplo: Determinar el mayor de tres números

int a, b, c;
cin >> a >> b >> c;

int mayor;

if (a >= b && a >= c) {
    mayor = a;
} else if (b >= a && b >= c) {
    mayor = b;
} else {
    mayor = c;
}

cout << "El mayor es: " << mayor << endl;

Con operador ternario:

int mayor = (a > b) ? ((a > c) ? a : c) : ((b > c) ? b : c);

Con función max:

int mayor = max({a, b, c});

Ejemplo: Clasificar triángulos

int a, b, c;
cin >> a >> b >> c;

// Verificar si es válido
if (a + b <= c || b + c <= a || a + c <= b) {
    cout << "No es un triángulo válido" << endl;
} else if (a == b && b == c) {
    cout << "Equilátero" << endl;
} else if (a == b || b == c || a == c) {
    cout << "Isósceles" << endl;
} else {
    cout << "Escaleno" << endl;
}

Ejemplo: Calculadora con menú

double a, b;
char operacion;

cout << "Ingresa: numero operador numero" << endl;
cin >> a >> operacion >> b;

if (operacion == '+') {
    cout << a + b << endl;
} else if (operacion == '-') {
    cout << a - b << endl;
} else if (operacion == '*') {
    cout << a * b << endl;
} else if (operacion == '/') {
    if (b != 0) {
        cout << a / b << endl;
    } else {
        cout << "Error: División por cero" << endl;
    }
} else {
    cout << "Operación no válida" << endl;
}

Errores comunes

1. Usar = en lugar de ==

// ❌ Error: asignación
if (x = 5) { }

// ✅ Correcto: comparación
if (x == 5) { }

2. Punto y coma después del if

// ❌ Error: el ; termina el if
if (x > 0);
{
    cout << "Positivo" << endl;  // Siempre se ejecuta
}

// ✅ Correcto
if (x > 0) {
    cout << "Positivo" << endl;
}

3. Condiciones que siempre son true/false

// ❌ Siempre true
if (x = 5) { }

// ❌ Comparación incorrecta de rangos
if (1 < x < 10) { }  // No hace lo que crees

// ✅ Correcto
if (x > 1 && x < 10) { }

Ejercicios de práctica

Ejercicio 1

Determina el signo de un número (positivo, negativo o cero).

Ver solución
int n;
cin >> n;

if (n > 0) {
    cout << "Positivo" << endl;
} else if (n < 0) {
    cout << "Negativo" << endl;
} else {
    cout << "Cero" << endl;
}

Ejercicio 2

Dado un año, determina si es bisiesto.

Ver solución
int anio;
cin >> anio;

if ((anio % 4 == 0 && anio % 100 != 0) || anio % 400 == 0) {
    cout << "Bisiesto" << endl;
} else {
    cout << "No bisiesto" << endl;
}

Ejercicio 3

Dados los coeficientes a, b, c de una ecuación cuadrática, determina cuántas soluciones reales tiene.

Ver solución
double a, b, c;
cin >> a >> b >> c;

double discriminante = b*b - 4*a*c;

if (discriminante > 0) {
    cout << "Dos soluciones reales" << endl;
} else if (discriminante == 0) {
    cout << "Una solución real" << endl;
} else {
    cout << "Sin soluciones reales" << endl;
}

Siguiente paso

Aprende a repetir código con Ciclo For.