Estructuras de Control
Aprende a tomar decisiones en tu código y a repetir tareas de forma eficiente con bucles.
1. Condicionales: if / else
Las condicionales permiten ejecutar código solo si se cumple una condición. Es como decir: "Si pasa esto, haz aquello".
if - Ejecutar código si la condición es true
1// Sintaxis básica2const edad = 20;3 4if (edad >= 18) {5 console.log("Eres mayor de edad");6}7 8// Otro ejemplo9const temperatura = 30;10 11if (temperatura > 25) {12 console.log("Hace calor");13}14 15// Con múltiples condiciones (AND)16const tieneLicencia = true;17const tieneSeguro = true;18 19if (edad >= 18 && tieneLicencia && tieneSeguro) {20 console.log("Puedes conducir");21}if / else - Elegir entre dos opciones
1const edad = 15;2 3if (edad >= 18) {4 console.log("Eres mayor de edad");5} else {6 console.log("Eres menor de edad");7}8 9// Otro ejemplo10const hora = 14;11 12if (hora < 12) {13 console.log("Buenos días");14} else {15 console.log("Buenas tardes");16}17 18// Comparando valores19const contraseña = "12345";20 21if (contraseña === "12345") {22 console.log("Contraseña correcta");23} else {24 console.log("Contraseña incorrecta");25}if / else if / else - Múltiples opciones
1const nota = 75;2 3if (nota >= 90) {4 console.log("Excelente - A");5} else if (nota >= 80) {6 console.log("Muy bien - B");7} else if (nota >= 70) {8 console.log("Bien - C");9} else if (nota >= 60) {10 console.log("Aprobado - D");11} else {12 console.log("Reprobado - F");13}14 15// Otro ejemplo: categorías por edad16const edad = 12;17 18if (edad < 12) {19 console.log("Niño");20} else if (edad < 18) {21 console.log("Adolescente");22} else if (edad < 65) {23 console.log("Adulto");24} else {25 console.log("Adulto mayor");26}💡 Tip importante
JavaScript evalúa las condiciones de arriba hacia abajo y se detiene en la primera que sea true.
1const numero = 100;2 3if (numero > 50) {4 console.log("Mayor que 50"); // ✅ Se ejecuta esto5} else if (numero > 80) {6 console.log("Mayor que 80"); // ❌ Nunca llega aquí aunque sea true7}8 9// El orden importa!2. Switch
El switch es útil cuando tienes muchas opciones basadas en un solo valor. Es más limpio que muchos if/else if.
Sintaxis básica
1const dia = "lunes";2 3switch (dia) {4 case "lunes":5 console.log("Inicio de semana");6 break;7 case "martes":8 case "miércoles":9 case "jueves":10 console.log("Mitad de semana");11 break;12 case "viernes":13 console.log("Casi fin de semana!");14 break;15 case "sábado":16 case "domingo":17 console.log("Fin de semana!");18 break;19 default:20 console.log("Día no válido");21}22 23// Salida: "Inicio de semana"Otro ejemplo: Calculadora simple
1const operacion = "+";2const a = 10;3const b = 5;4let resultado;5 6switch (operacion) {7 case "+":8 resultado = a + b;9 console.log(`${a} + ${b} = ${resultado}`); // 1510 break;11 case "-":12 resultado = a - b;13 console.log(`${a} - ${b} = ${resultado}`);14 break;15 case "*":16 resultado = a * b;17 console.log(`${a} * ${b} = ${resultado}`);18 break;19 case "/":20 resultado = a / b;21 console.log(`${a} / ${b} = ${resultado}`);22 break;23 default:24 console.log("Operación no válida");25}⚠️ No olvides el break
Si olvidas el break, el código seguirá ejecutando los casos siguientes (efecto "fall-through"):
1const numero = 1;2 3switch (numero) {4 case 1:5 console.log("Uno");6 // ❌ Falta break!7 case 2:8 console.log("Dos");9 break;10}11 12// Salida:13// "Uno"14// "Dos" (se ejecuta aunque numero no sea 2!)3. Bucles (Loops)
Los bucles permiten repetir código múltiples veces sin tener que escribirlo una y otra vez.
for - Bucle con contador
El más común cuando sabes cuántas veces quieres repetir algo.
1// Sintaxis: for (inicio; condición; incremento)2for (let i = 0; i < 5; i++) {3 console.log("Vuelta número: " + i);4}5// Salida:6// Vuelta número: 07// Vuelta número: 18// Vuelta número: 29// Vuelta número: 310// Vuelta número: 411 12// Contar del 1 al 1013for (let i = 1; i <= 10; i++) {14 console.log(i);15}16 17// Contar hacia atrás18for (let i = 10; i >= 0; i--) {19 console.log(i);20}21console.log("¡Despegue!");22 23// Saltar de 2 en 2 (números pares)24for (let i = 0; i <= 10; i += 2) {25 console.log(i); // 0, 2, 4, 6, 8, 1026}while - Repetir mientras sea true
Usa while cuando no sabes cuántas veces se repetirá el bucle.
1// Ejemplo: contar hasta 52let contador = 0;3 4while (contador < 5) {5 console.log("Contador: " + contador);6 contador++; // ¡Importante! o será bucle infinito7}8 9// Ejemplo: pedir contraseña hasta que sea correcta10let intentos = 0;11let contraseñaCorrecta = false;12const password = "secreto123";13 14while (!contraseñaCorrecta && intentos < 3) {15 const intento = prompt("Introduce la contraseña:");16 17 if (intento === password) {18 console.log("¡Acceso concedido!");19 contraseñaCorrecta = true;20 } else {21 intentos++;22 console.log(`Contraseña incorrecta. Intentos restantes: ${3 - intentos}`);23 }24}⚠️ Cuidado con bucles infinitos
Si la condición del while nunca se vuelve false, el bucle nunca terminará y bloqueará tu navegador.
1// ❌ BUCLE INFINITO - ¡NO HAGAS ESTO!2let x = 0;3while (x < 10) {4 console.log(x);5 // Falta x++, entonces x siempre será 06}7 8// ✅ CORRECTO9let y = 0;10while (y < 10) {11 console.log(y);12 y++; // Incrementamos para que eventualmente llegue a 1013}do...while - Ejecutar al menos una vez
Similar a while, pero garantiza que el código se ejecute al menos una vez.
1// La diferencia: se ejecuta ANTES de verificar la condición2let numero = 10;3 4do {5 console.log("Número: " + numero);6 numero++;7} while (numero < 5);8 9// Salida: "Número: 10"10// Aunque 10 no es menor que 5, se ejecuta una vez11 12// Ejemplo práctico: menú que se muestra al menos una vez13let opcion;14 15do {16 console.log("=== MENÚ ===");17 console.log("1. Ver perfil");18 console.log("2. Configuración");19 console.log("3. Salir");20 opcion = prompt("Elige una opción:");21 22 if (opcion === "1") {23 console.log("Mostrando perfil...");24 } else if (opcion === "2") {25 console.log("Abriendo configuración...");26 }27} while (opcion !== "3");28 29console.log("¡Hasta luego!");break y continue - Controlar el flujo
Herramientas para controlar la ejecución de los bucles.
1// break - Sale completamente del bucle2for (let i = 0; i < 10; i++) {3 if (i === 5) {4 break; // Sale del bucle cuando i es 55 }6 console.log(i);7}8// Salida: 0, 1, 2, 3, 49 10// continue - Salta a la siguiente iteración11for (let i = 0; i < 10; i++) {12 if (i % 2 === 0) {13 continue; // Salta los pares14 }15 console.log(i); // Solo muestra impares16}17// Salida: 1, 3, 5, 7, 94. Ejercicios Prácticos
Ejercicio 1: Clasificador de edad
Crea un programa que clasifique a una persona según su edad: Niño (0-12), Adolescente (13-17), Adulto (18-64), Adulto mayor (65+).
1const edad = 25;2 3// Tu código aquí4 5 6 7 8 9// Salida: "Adulto" Ver solución
1const edad = 25;2 3if (edad >= 0 && edad <= 12) {4 console.log("Niño");5} else if (edad >= 13 && edad <= 17) {6 console.log("Adolescente");7} else if (edad >= 18 && edad <= 64) {8 console.log("Adulto");9} else if (edad >= 65) {10 console.log("Adulto mayor");11} else {12 console.log("Edad no válida");13}14 15// Salida: "Adulto"Ejercicio 2: Menú de opciones con switch
Crea un menú de bebidas usando switch. Según la opción muestra el precio.
1const bebida = "café";2 3// Tu código aquí4 5 6 7 8 9 10// Salida: "Café: €2.50" Ver solución
1const bebida = "café";2 3switch (bebida) {4 case "café":5 console.log("Café: €2.50");6 break;7 case "té":8 console.log("Té: €2.00");9 break;10 case "jugo":11 console.log("Jugo: €3.00");12 break;13 case "agua":14 console.log("Agua: €1.50");15 break;16 default:17 console.log("Bebida no disponible");18}19 20// Salida: "Café: €2.50"Ejercicio 3: Tabla de multiplicar
Usa un bucle for para mostrar la tabla de multiplicar del 5.
1const numero = 5;2 3// Tu código aquí4 5 6 7 8// Salida:9// Tabla del 5:10// 5 x 1 = 511// 5 x 2 = 1012// 5 x 3 = 1513// ...14// 5 x 10 = 50 Ver solución
1const numero = 5;2 3console.log(`Tabla del ${numero}:`);4for (let i = 1; i <= 10; i++) {5 const resultado = numero * i;6 console.log(`${numero} x ${i} = ${resultado}`);7}8 9// Salida:10// Tabla del 5:11// 5 x 1 = 512// 5 x 2 = 1013// 5 x 3 = 1514// ...15// 5 x 10 = 50Ejercicio 4: Números del 1 al 100 (saltar múltiplos de 5)
Usa un bucle for con continue para mostrar números del 1 al 100, pero saltando los múltiplos de 5.
1// Tu código aquí2 3 4 5 6// Salida: 1, 2, 3, 4, 6, 7, 8, 9, 11, 12... (sin 5, 10, 15, 20, etc.) Ver solución
1for (let i = 1; i <= 100; i++) {2 if (i % 5 === 0) {3 continue; // Salta los múltiplos de 54 }5 console.log(i);6}7 8// Salida: 1, 2, 3, 4, 6, 7, 8, 9, 11, 12... (sin 5, 10, 15, 20, etc.)