Volver al inicio
Estructuras de Control

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

if básicojavascript
1// Sintaxis básica
2const edad = 20;
3
4if (edad >= 18) {
5 console.log("Eres mayor de edad");
6}
7
8// Otro ejemplo
9const 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

if/elsejavascript
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 ejemplo
10const hora = 14;
11
12if (hora < 12) {
13 console.log("Buenos días");
14} else {
15 console.log("Buenas tardes");
16}
17
18// Comparando valores
19const 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

if/else if/elsejavascript
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 edad
16const 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.

Orden de evaluaciónjavascript
1const numero = 100;
2
3if (numero > 50) {
4 console.log("Mayor que 50"); // ✅ Se ejecuta esto
5} else if (numero > 80) {
6 console.log("Mayor que 80"); // ❌ Nunca llega aquí aunque sea true
7}
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

Switch con díasjavascript
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

Calculadora con switchjavascript
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}`); // 15
10 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"):

Problema sin breakjavascript
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.

Bucle forjavascript
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: 0
7// Vuelta número: 1
8// Vuelta número: 2
9// Vuelta número: 3
10// Vuelta número: 4
11
12// Contar del 1 al 10
13for (let i = 1; i <= 10; i++) {
14 console.log(i);
15}
16
17// Contar hacia atrás
18for (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, 10
26}

while - Repetir mientras sea true

Usa while cuando no sabes cuántas veces se repetirá el bucle.

Bucle whilejavascript
1// Ejemplo: contar hasta 5
2let contador = 0;
3
4while (contador < 5) {
5 console.log("Contador: " + contador);
6 contador++; // ¡Importante! o será bucle infinito
7}
8
9// Ejemplo: pedir contraseña hasta que sea correcta
10let 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.

Evitar bucles infinitosjavascript
1// ❌ BUCLE INFINITO - ¡NO HAGAS ESTO!
2let x = 0;
3while (x < 10) {
4 console.log(x);
5 // Falta x++, entonces x siempre será 0
6}
7
8// ✅ CORRECTO
9let y = 0;
10while (y < 10) {
11 console.log(y);
12 y++; // Incrementamos para que eventualmente llegue a 10
13}

do...while - Ejecutar al menos una vez

Similar a while, pero garantiza que el código se ejecute al menos una vez.

Bucle do...whilejavascript
1// La diferencia: se ejecuta ANTES de verificar la condición
2let 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 vez
11
12// Ejemplo práctico: menú que se muestra al menos una vez
13let 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.

break y continuejavascript
1// break - Sale completamente del bucle
2for (let i = 0; i < 10; i++) {
3 if (i === 5) {
4 break; // Sale del bucle cuando i es 5
5 }
6 console.log(i);
7}
8// Salida: 0, 1, 2, 3, 4
9
10// continue - Salta a la siguiente iteración
11for (let i = 0; i < 10; i++) {
12 if (i % 2 === 0) {
13 continue; // Salta los pares
14 }
15 console.log(i); // Solo muestra impares
16}
17// Salida: 1, 3, 5, 7, 9

4. 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+).

Planteamientojavascript
1const edad = 25;
2
3// Tu código aquí
4
5
6
7
8
9// Salida: "Adulto"
Ver solución
Soluciónjavascript
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.

Planteamientojavascript
1const bebida = "café";
2
3// Tu código aquí
4
5
6
7
8
9
10// Salida: "Café: €2.50"
Ver solución
Soluciónjavascript
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.

Planteamientojavascript
1const numero = 5;
2
3// Tu código aquí
4
5
6
7
8// Salida:
9// Tabla del 5:
10// 5 x 1 = 5
11// 5 x 2 = 10
12// 5 x 3 = 15
13// ...
14// 5 x 10 = 50
Ver solución
Soluciónjavascript
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 = 5
12// 5 x 2 = 10
13// 5 x 3 = 15
14// ...
15// 5 x 10 = 50

Ejercicio 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.

Planteamientojavascript
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
Soluciónjavascript
1for (let i = 1; i <= 100; i++) {
2 if (i % 5 === 0) {
3 continue; // Salta los múltiplos de 5
4 }
5 console.log(i);
6}
7
8// Salida: 1, 2, 3, 4, 6, 7, 8, 9, 11, 12... (sin 5, 10, 15, 20, etc.)