If you're seeing this message, it means we're having trouble loading external resources on our website.

Si estás detrás de un filtro de páginas web, por favor asegúrate de que los dominios *.kastatic.org y *.kasandbox.org estén desbloqueados.

Contenido principal

Condicionales anidadas

Los programas de computadora usan condicionales para seleccionar la ruta correcta que el programa debe seguir. Cuando solo selecciona una de dos rutas, puede utilizar un condicional simple (if/else). Cuando selecciona una de varias rutas, puede usar condicionales anidados o encadenados.

Condicionales anidados

Imagina un programa que reporte si un número es positivo, negativo o cero. Ese programa debe seleccionar entre 3 rutas.
El diagrama de flujo de la lógica podría verse así:
Diagrama de flujo con 2 diamantes, 3 rectángulos y 4 flechas.
  • El primer diamante tiene la pregunta "¿El número es mayor que 0?"
  • Del primer diamante una flecha marcada como verdadera va al rectángulo con texto "signo es positivo"
  • Del primer diamante una flecha marcada falsa va al diamante con la pregunta "¿El número es menor que 0?"
  • Del segundo diamante una flecha marcada como verdadera va al rectángulo con texto "signo es negativo"
  • Del segundo diamante una flecha marcada falsa va al rectángulo con el texto "signo es neutral"
Podemos traducir esto a JavaScript con condicionales anidados. Este es el equivalente en JS:
var numberSign;

if (number > 0) {
  numberSign = "positivo";
} else {
  if (number < 0) {
    numberSign = "negativo";
  } else {
    numberSign = "neutral";
  }
}
📝 Mira código similar en: App Lab | Snap | Python
El condicional exterior es un simple if/else, que corresponde al primer diamante en el diagrama de flujo. Luego dentro de else anidamos un condicional interno que corresponde al segundo diamante en el diagrama de flujo.
En lenguajes basados en texto como JavaScript, es importante poner atención a la sintaxis y el formateo de condicionales anidados. Observa el uso de llaves alrededor de cada conjunto de instrucciones y la indentación de la condicion interna dentro de else. Esto ayuda a otros programadores (¡incluyéndote en el futuro!) a entender mejor el flujo de la lógica.
✏️ El siguiente programa compara las puntuaciones de dos jugadores y determina quién ha ganado, perdido o empatado. Intenta cambiar los valores para que cada jugador gane.
📝 Mira código similar en: App Lab | Snap | Python

Flujos alternativos de anidación

Para la mayoría de los condicionales anidados, hay varias posibilidades en el orden de las diversas condiciones.
Para decidir si un número es positivo, negativo o neutral, también podemos empezar por preguntar si el número es igual a cero, como en este diagrama de flujo:
Diagrama de flujo con 2 diamantes, 3 rectángulos y 4 flechas.
  • El primer diamante tiene la pregunta "¿El número es igual a 0?"
  • Del primer diamante una flecha marcada como verdadera va al rectángulo con texto "signo es neutral"
  • Del primer diamante una flecha marcada falsa va al diamante con la pregunta "¿El número es mayor que 0?"
  • Del segundo diamante una flecha marcada como verdadera va al rectángulo con texto "signo es positivo"
  • Del segundo diamante una flecha marcada falsa va al rectángulo con el texto "signo es negativo"
Traducido a JavaScript, ese flujo se ve así:
var numberSign;

if (number === 0) {
  numberSign = "neutral";
} else {
  if (number > 0) {
    numberSign = "positivo";
  } else {
    numberSign = "negativo";
  }
}
Este flujo es tan correcto como el otro, y producirá el mismo conjunto de valores para las entradas que el primero.
De hecho, hay al menos otros cuatro flujos posibles para lograr el mismo resultado.
¿Qué flujo debe seguir tu programa? Mientras logre el mismo resultado, elige el flujo que parezca más natural e intuitivo. Una vez que hayas programado el flujo, siempre prueba tu programa con un rango de valores, para asegurar que funciona como se espera.

Anidación más profunda

Sería estupendo que todo en el mundo se dividiera claramente en tres categorías, pero el mundo es un lugar más enredado que eso. Afortunadamente, podemos anidar condicionales en tantos niveles como sea necesario, y nuestro programa puede seguir varias rutas diferentes.
Por ejemplo, podemos escribir un programa para clasificar una salsa como leve, media, picante o extrema, basado en la calificación de Scoville de picantes.
Este diagrama de flujo describe la lógica deseada:
Diagrama de flujo con 3 diamantes, 4 rectángulos y 6 flechas.
  • El primer diamante tiene la pregunta "¿Calificación es menor que 5000?"
  • Del primer diamante una flecha marcada como verdadera va al rectángulo con texto "nivel es leve".
  • Del primer diamante una flecha marcada falsa va al diamante con la pregunta "¿Calificación es menor que 20,000?"
  • Del segundo diamante una flecha marcada como verdadera va al rectángulo con texto "nivel es medio"
  • Del segundo diamante una flecha marcada como falsa va al diamante con la pregunta "¿Calificación es menor que 70,000?"
  • Del tercer diamante una flecha marcada verdadera va al rectángulo con el texto "nivel es picante"
  • Del tercer diamante una flecha marcada falsa va al rectángulo con el texto "nivel es extremo"
Podemos implementarlo en JavaScript con instrucciones if/else como antes, pero con un nivel adicional de anidación.
var level;

if (rating < 5000) {
  level = "leve";
} else {
  if (rating < 20000) {
    level = "medio";
  } else {
    if (rating < 70000) {
      level = "picante";
    } else {
      level = "extremo";
    }
  }
}
📝 Mira código similar en: App Lab | Snap | Python
Ahora nuestro programa puede asignar level a uno de los cuatro valores diferentes, dependiendo de qué ruta se selecciona.
Deebemos ser más cuidadosos con el orden aquí, ya que cada if anidado supone que el programa ya comprobó la condición anterior. No podemos mezclar las condiciones tanto como con el programa positivo/negativo/neutral. Una vez más, piensa cuidadosamente en el orden cuando estructures condicionales
✏️ El siguiente programa es una calculadora sencilla de calorías diarias para gatos y perros. Intenta cambiar las primeras variables para tu propia mascota, si tienes una, o la de un amigo. También puedes hacer la calculadora más precisa con factores como si la mascota tiene sobrepeso o si vive dentro o fuera de casa. Con condicionales anidadas, ¡puedes verificar cualquier cosa!
📝 Mira código similar en: App Lab | Snap | Python

Condicionales encadenados

Al programar a menudo nos encontramos usando condicionales para comprobar posibles valores de una sola variable.
Ya hemos visto dos ejemplos de eso, y podemos resumir cada uno en una tabla:
condiciónsalida
número > 0"positivo"
número < 0"negativo"
número === 0"neutral"
condiciónsalida
calificación < 5000"leve"
calificación < 20000"medio"
calificación < 70000"picante"
calificación >= 70000"extremo"
Muchos lenguajes de programación incluyen una manera de escribir condicionales "encadenados", como una manera aún mejor de comprobar estos valores.
En el lenguaje JavaScript, podemos encadenar condicionales con instrucciones else if.
Así podemos escribir el verificaor de signos de números con condicionales encadenados:
var numberSign;

if (number > 0) {
  numberSign = "positivo";
} else if (number < 0) {
  numberSign = "negativo";
} else {
  numberSign = "neutral";
}
📝 Mira código similar en: App Lab | Python
Este código es muy similar al original, pero utiliza else if, en lugar de un else anidado con un if dentro de él.
Un condicional encadenado es generalmente más fácil de leer, especialmente a medida que el número de condiciones aumenta, y además es un poco más corto.
Aquí está la calculadora de nivel de salsa escrita con condicionales encadenados:
var level;

if (rating < 5000) {
  level = "leve";
} else if (rating < 20000) {
  level = "medio";
} else if (rating < 70000) {
  level = "picante";
} else {
  level = "extremo";
}
📝 Mira código similar en: App Lab | Python
Compara esto con la versión original con condicionales anidados. Esto fluye mejor, ¿no?
No todos los lenguajes proveen la capacidad de encadenar condicionales, pero si programas en un lenguaje como JS o Python que incluye esa ventaja, aprovéchala para casos como estos.
📝 Pista para examen: el examen de AP CSP no incluye condicionales encadenados. Utiliza condicionales anidados en todas las situaciones.

Condicionales anidados en pseudocódigo

Este pseudocódigo muestra un condicional simple anidado, con un IF/ELSE externo y un IF/ELSE interno:
IF (<condición 1>)
{
     <instrucciones 1>
} 
ELSE 
{
    IF (<condición 2>)
    {
         <instrucciones 2>
    } 
    ELSE 
    {
        <instrucciones 3>
    }
}
Este es el programa de verificación de signos en pseudocódigo:
IF (number > 0)
{
    numberSign ← "positivo";
}
ELSE
{
    IF (number < 0)
    {
        numberSign ← "negativo";
    }
    ELSE
    {
        numberSign ← "neutral";
    }
}

🙋🏽🙋🏻‍♀️🙋🏿‍♂️¿Tienes alguna pregunta sobre este tópico? Nos encantaría contestarte; ¡simplemente pregunta en el area de preguntas abajo!