Decisiones y repeticiones
Un programa que solo ejecuta pasos en orden hace siempre lo mismo.
if / else if / else para decidir; switch para comparar una variable con varios valores; el ternario para decisiones muy cortas.
for cuando sabes cuántas veces repetir; while cuando repites hasta que se cumpla algo.
Todo bucle necesita una salida.
Dos bucles anidados recorren una retícula de filas y columnas.
- Un programa que solo ejecuta pasos en orden hace siempre lo mismo. Las estructuras de control le permiten decidir (si pasa esto, haz aquello) y repetir (haz esto 50 veces). Son la traducción directa de lo que dibujaste en pseudocódigo en la lección Algoritmos, pensar paso a paso.
- const luminosidadFondo = 30; let colorTexto; if (luminosidadFondo < 50) { colorTexto = "white"; } else { colorTexto = "black"; } console.log(colorTexto); // white
- La condición va entre paréntesis y tiene que dar true o false. El bloque entre llaves se ejecuta solo si la condición se cumple; el else (opcional), si no.
- Para más de dos casos, encadena else if. Se comprueban en orden y solo se ejecuta el primero que se cumple:
- const ancho = 820; let columnas; if (ancho >= 1200) { columnas = 4; } else if (ancho >= 768) { columnas = 3; } else if (ancho >= 480) { columnas = 2; } else { columnas = 1; } // columnas vale 3
Introducción
Un programa que solo ejecuta pasos en orden hace siempre lo mismo. Las estructuras de control le permiten decidir (si pasa esto, haz aquello) y repetir (haz esto 50 veces). Son la traducción directa de lo que dibujaste en pseudocódigo en la lección Algoritmos, pensar paso a paso.
Decidir con if
const luminosidadFondo = 30; let colorTexto; if (luminosidadFondo < 50) { colorTexto = "white"; } else { colorTexto = "black"; } console.log(colorTexto); // white
La condición va entre paréntesis y tiene que dar true o false. El bloque entre llaves se ejecuta solo si la condición se cumple; el else (opcional), si no.
Para más de dos casos, encadena else if. Se comprueban en orden y solo se ejecuta el primero que se cumple:
const ancho = 820; let columnas; if (ancho >= 1200) { columnas = 4; } else if (ancho >= 768) { columnas = 3; } else if (ancho >= 480) { columnas = 2; } else { columnas = 1; } // columnas vale 3
Elegir entre valores con switch
Cuando comparas una misma variable con varios valores concretos, switch queda más claro:
const categoria = "motion"; let icono; switch (categoria) { case "branding": icono = "🅱️"; break; case "web": icono = "🌐"; break; case "motion": icono = "🎞️"; break; default: icono = "📁"; }
No olvides el break al final de cada caso: sin él, el programa sigue ejecutando los casos de debajo.
El operador ternario
Para una decisión corta que produce un valor, existe una forma abreviada:
const modo = esOscuro ? "oscuro" : "claro"; // condición ? valor si true : valor si false
Úsalo solo en casos sencillos; si hay que leerlo dos veces, mejor un if.
Repetir con for
El bucle for repite un bloque un número de veces conocido. Tiene tres partes, separadas por punto y coma:
for (let i = 0; i < 5; i++) { console.log(`Forma número ${i}`); }
Inicio (let i = 0): se ejecuta una vez, antes de empezar. i es el contador. Condición (i < 5): se comprueba antes de cada vuelta; si es false, el bucle termina. Actualización (i++): se ejecuta al final de cada vuelta.
Este bucle muestra Forma número 0 hasta Forma número 4: cinco vueltas, porque se empieza a contar en 0. Un ejemplo de diseño, la escala tipográfica de la lección Algoritmos, pensar paso a paso:
Repetir mientras: while
while repite mientras se cumpla una condición. Úsalo cuando no sabes cuántas vueltas hacen falta:
// ¿Cuántas veces hay que multiplicar por 1,25 para pasar de 16 a más de 100? let medida = 16; let pasos = 0; while (medida <= 100) { medida = medida * 1.25; pasos++; } console.log(pasos); // 9
⚠️ Atención. Si la condición de un while nunca llega a ser falsa, el bucle no termina y la pestaña se cuelga (bucle infinito). Comprueba siempre que dentro del bucle cambia algo que acerca la salida. Si te pasa, cierra la pestaña y revisa el código.
break sale de un bucle en el acto y continue salta a la siguiente vuelta. Úsalos con moderación: un bucle con una condición clara se entiende mejor.
Bucles dentro de bucles
Un bucle puede contener otro. Es la forma natural de recorrer una retícula: por cada fila, todas las columnas.
for (let fila = 0; fila < 3; fila++) { for (let col = 0; col < 4; col++) { console.log(`Celda ${fila}-${col}`); } } // 3 × 4 = 12 celdas
En la lección Dibujar con código, Canvas usarás exactamente esto para dibujar un cartel con Canvas.
Errores frecuentes
Uno de más o de menos: i <= 5 da seis vueltas si empiezas en 0. Cuenta con los dedos las primeras y la última. if (x = 5) asigna en lugar de comparar; es if (x === 5). Olvidar el break en un switch. Declarar con const el contador de un for (for (const i = 0; …; i++) falla): usa let. Un ; justo después de if (…) o de for (…): el bloque se queda vacío y lo de dentro se ejecuta siempre.