Condicionales en C: ¿qué son y cómo usarlas?

manueldemeza 08/12/2025

Bienvenidos, STEAMdiantes. Hoy nuestro código cobra vida inteligente.

Una estructura condicional es una instrucción que le permite al programa bifurcar su camino. Le da la capacidad de elegir qué bloque de código ejecutar basándose en una pregunta lógica (Verdadero o Falso). Sin condicionales, la automatización sería imposible.

En C, tenemos dos herramientas principales para esto: la sentencia if (para decisiones lógicas) y la sentencia switch (para menús y opciones discretas).

La sentencia if

Es la estructura más fundamental. Su traducción es literal: “Si…”. Evalúa una condición entre paréntesis. Si el resultado es Verdadero (1), ejecuta el bloque de código entre las llaves. Si es Falso (0), lo ignora y sigue de largo.

Sintaxis:

if (condicion) {
    // Código que se ejecuta SOLO si la condición es verdadera
}

Ejemplo: imagina una válvula de alivio de presión.

if (presion > 200) {
    printf("¡ALERTA! Abriendo valvula de alivio.\n");
    abrir_valvula();
}
// Si la presión es 150, el programa salta lo de arriba y sigue aquí.

La sentencia else

A veces no basta con hacer algo si se cumple la condición; también necesitamos definir qué hacer si NO se cumple. Aquí entra el else (“si no…”).

Sintaxis:

if (condicion) {
    // Camino A (Verdadero)
} else {
    // Camino B (Falso)
}

Ejemplo: control de acceso.

if (id_usuario == 1234) {
    printf("Acceso Concedido. Bienvenido Ingeniero.\n");
} else {
    printf("Error: Acceso Denegado.\n");
    sonar_alarma();
}

La sentencia else if

El mundo no es blanco o negro. A veces tenemos gris, azul y rojo. Cuando necesitamos evaluar múltiples condiciones en secuencia, usamos else if.

La computadora evaluará en orden. La primera que sea verdadera gana, ejecuta su bloque y se salta todo lo demás.

Ejemplo: niveles de un tanque.

if (nivel_agua == 0) {
    printf("Tanque VACIO. Bomba apagada por proteccion.\n");
} 
else if (nivel_agua < 20) {
    printf("Nivel BAJO. Rellenando...\n");
} 
else if (nivel_agua < 90) {
    printf("Nivel OPERATIVO. Sistema normal.\n");
} 
else {
    // Si no fue ninguna de las anteriores, asume que está lleno
    printf("Tanque LLENO. Cerrando entrada.\n");
}
La sentencia switch

Imagina que estás programando el selector de velocidades de un ventilador (0, 1, 2, 3). Podrías usar muchos if y else if, pero el código se volvería sucio y difícil de leer.

Para casos donde comparamos una variable contra valores fijos y enteros (como un menú), usamos switch (“cambiar” o “conmutar”).

Sintaxis y reglas:

  1. case: define el valor a comparar.
  2. break (CRUCIAL): indica “aquí termina este caso, salte del switch”. Si olvidas el break, la computadora seguirá ejecutando los casos de abajo (error conocido como fall-through).
  3. default: es como el else final. Se ejecuta si ningún caso coincidió.

Ejemplo: selector de modo de una máquina.

int modo = 2; // 1=Manual, 2=Auto, 3=Mantenimiento
switch (modo) {
    case 1:
        printf("Modo MANUAL activado.\n");
        break; // ¡Importante!
    
    case 2:
        printf("Modo AUTOMATICO activado.\n");
        break;
    case 3:
        printf("Modo MANTENIMIENTO. Bloqueando motores.\n");
        break;
    default:
        printf("Error: Modo desconocido. Sistema detenido.\n");
        break;
}
Errores comunes

La trampa del punto y coma:

  • if (x > 0); { … }
  • Ese punto y coma después del paréntesis mata al if. Le dice a C: “Si x es mayor a 0, no hagas nada. Luego ejecuta el bloque siempre”. Nunca pongas ; después de la condición.

Asignación en lugar de comparación:

  • if (x = 5)
  • Esto asigna 5 a x, y como 5 es verdadero, entra al if siempre.
  • if (x == 5) (doble igual).

Olvidar las llaves {}:

  • Si solo hay una línea de código, las llaves son opcionales. PERO, ya te digo: úsalas siempre. Evita errores graves cuando agregues más líneas en el futuro.
Práctica: sistema de climatización

Vamos a Visual Studio. Crearemos un programa que simule un Aire Acondicionado inteligente. Integrará if, else if y switch.

#include <stdio.h>
int main() {
    // --- Entradas del Sistema ---
    int temperatura_actual = 28;  // Grados Celsius
    int modo_usuario = 1;         // 0=Apagado, 1=Frio, 2=Calor
    printf("=== SISTEMA HVAC v1.0 ===\n");
    // 1. Selector de Modo (Switch)
    switch (modo_usuario) {
        case 0:
            printf("Sistema APAGADO.\n");
            break;
        case 1: // Modo Frio (Cool)
            printf("Modo: ENFRIAMIENTO seleccionado.\n");
            
            // 2. Lógica de control (If Anidado)
            if (temperatura_actual > 25) {
                printf("Accion: Compresor ENCENDIDO (Hace calor).\n");
            } else {
                printf("Accion: Compresor en reposo (Temperatura OK).\n");
            }
            break;
        case 2: // Modo Calor (Heat)
            printf("Modo: CALEFACCION seleccionado.\n");
            
            if (temperatura_actual < 20) {
                printf("Accion: Calefactor ENCENDIDO (Hace frio).\n");
            } else {
                printf("Accion: Calefactor en reposo.\n");
            }
            break;
        default:
            printf("Error: Codigo de modo invalido.\n");
    }
    // 3. Sistema de Seguridad (Independiente del modo)
    if (temperatura_actual > 50 || temperatura_actual < -10) {
        printf("\nALERTA CRITICA: Falla de sensor o temperatura extrema.\n");
    }
    return 0;
}

Tu tarea será:

  1. Copiar o transcribir y compilar el código.
  2. Cambiar modo_usuario a 2 y temperatura_actual a 15. ¿cuéntanos que pasa?
  3. Cambia modo_usuario a 5. Verifica que entre al default.
  4. Quita un break intencionalmente y observa el desastre.

Ahora nuestro programa toma decisiones. Pero, ¿qué pasa si queremos repetir una tarea 1000 veces sin escribir 1000 líneas de código? En el próximo artículo entraremos en la automatización. Prepárense ingenieros.

Gracias por leernos.
Si te gusto este artículo, únete a nuestra comunidad en Facebook o WhatsApp para más…
¡Hasta la próxima!

Etiquetas:
¿Te gustó este artículo? ¡Compártelo!

Comentarios

5 1 vote
Valora este artículo
Suscribirse
Notificarme de
guest
0 Comentarios
Oldest
Newest Most Voted
Inline Feedbacks
View all comments