Contenido principal
Principios de ciencias de la computación avanzados (AP Computer Science Principles)
Curso: Principios de ciencias de la computación avanzados (AP Computer Science Principles) > Unidad 3
Lección 5: CondicionalesCondicionales 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í:
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";
}
}
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.
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:
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:
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";
}
}
}
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!
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ón | salida |
---|---|
número > 0 | "positivo" |
número < 0 | "negativo" |
número === 0 | "neutral" |
condición | salida |
---|---|
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";
}
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";
}
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!
¿Quieres unirte a la conversación?
Sin publicaciones aún.