Saltar al contenido principal

Condicionales

Las sentencias condicionales permiten que tu programa tome decisiones. Así es como funcionan if/else y switch en diferentes lenguajes.

Sentencias If/Else​

// Basic if/else
if (age >= 18) {
console.log("Adult");
} else {
console.log("Minor");
}

// Ternary operator
const status = age >= 18 ? "Adult" : "Minor";

// Nested ternary
const result = x > 0 ? (y > 0 ? "Both positive" : "X positive") : "X not positive";

// Chained ternary
const grade = score >= 90 ? "A" : score >= 80 ? "B" : "C";

// Else if
if (score >= 90) {
grade = "A";
} else if (score >= 80) {
grade = "B";
} else {
grade = "C";
}

Sentencias Switch/Case​

// Switch statement
switch (day) {
case 1:
console.log("Monday");
break;
case 2:
console.log("Tuesday");
break;
default:
console.log("Other day");
}

// Switch expression (no break needed)
switch (day) {
case 1: return "Monday";
case 2: return "Tuesday";
default: return "Other";
}

Puntos Clave​

  • Sintaxis if/else -- Los lenguajes de la familia C (C, C++, Java, JavaScript, C#) usan llaves y else if; Python usa elif con dos puntos e indentación; Ruby usa elsif y end; PHP usa elseif (una sola palabra). El estilo de Python if cond: sin llaves reduce el ruido pero requiere indentación consistente. Si prefieres delimitadores de bloque explícitos y vienes de C/Java, elige un lenguaje basado en llaves; si valoras la concisión y legibilidad, Python o Ruby pueden resultar más limpios.

  • Switch vs match -- El switch estilo C (C, C++, Java, JavaScript, PHP) requiere break para evitar el fallthrough; olvidarlo es un error común. El match de Rust está basado en expresiones—devuelve un valor y no tiene fallthrough, por lo que let x = match n { 1 => "one", _ => "other" }; es idiomático. Python 3.10+ y C# 8+ agregan expresiones match/switch con coincidencia de patrones. Para lógica con múltiples ramas, prefiere el match de Rust o Swift cuando la exhaustividad importa; usa switch estilo C cuando necesites fallthrough explícito o trabajes en bases de código heredadas.

  • Operadores ternarios -- La mayoría de los lenguajes usan cond ? a : b (C, C++, Java, JavaScript, C#, Swift, PHP). Go omite deliberadamente ?: y usa if cond { a } else { b } para asignación, favoreciendo la claridad sobre la brevedad. Python usa a if cond else b (la condición va en el medio). Rust y Zig usan if como expresiones: let x = if cond { a } else { b };. Si quieres condicionales inline compactos, usa ternario; si prefieres la explicitud al estilo Go, evita ternarios anidados y opta por bloques if/else simples.

  • Expresión vs sentencia -- En Rust, Zig y Ruby, if puede ser una expresión que produce un valor; C, Java y Go tratan if solo como una sentencia. JavaScript usa el ternario para expresiones. Esto afecta cómo asignas condicionalmente: Rust permite let grade = if score >= 90 { "A" } else { "B" }; sin una variable separada ni múltiples asignaciones. Elige lenguajes basados en expresiones cuando quieras evitar estado mutable y escribir código más declarativo.

  • Cuándo elegir cuál -- Para programación de sistemas o máxima explicitud, el if/else de Go y la ausencia de ternario reducen las sorpresas. Para código funcional orientado a expresiones, Rust y Zig destacan. Para prototipado rápido y legibilidad, el elif de Python y a if cond else b son accesibles. Para backends empresariales o web, C#, Java y PHP ofrecen condicionales familiares estilo C con buen soporte de herramientas.