Estructuras condicionales en JavaScript: 10 ejercicios resueltos + aprendizaje teorico
Aprende a dominar las estructuras condicionales en JavaScript con ejemplos prácticos resueltos. Descubre cómo aplicar if, else y switch para crear programas eficientes y flexibles.
Aprendizaje teórico
Las estructuras condicionales en JavaScript permiten tomar decisiones en el código según ciertas condiciones. Con ellas, podemos dirigir el flujo del programa hacia diferentes bloques de ejecución en función de valores o comparaciones lógicas. Las más comunes son:
- if / else if / else: Evalúan una expresión booleana. Si la expresión es verdadera (
true
), se ejecuta el código dentro del bloqueif
. De lo contrario, se prueba la siguiente condiciónelse if
y así sucesivamente, hasta que, si ninguna es verdadera, se ejecuta el bloqueelse
.
if (condicion) {
// Se ejecuta si 'condicion' es verdadera
} else if (otraCondicion) {
// Se ejecuta si 'condicion' es falsa y 'otraCondicion' es verdadera
} else {
// Se ejecuta si todas las condiciones anteriores son falsas
}
switch: Evalúa una expresión y la compara con distintos casos (case
). Si la expresión coincide con alguno de los casos, se ejecuta el bloque de código correspondiente. El uso de break
evita que se sigan evaluando los siguientes casos. Si ninguna coincidencia se cumple, se ejecuta el bloque default
.
switch (expresion) {
case valor1:
// Código a ejecutar si 'expresion === valor1'
break;
case valor2:
// Código a ejecutar si 'expresion === valor2'
break;
default:
// Código a ejecutar si no hay coincidencia
break;
}
Estas estructuras de control son fundamentales para dotar de lógica y dinamismo a las aplicaciones JavaScript, permitiendo responder de manera adecuada a distintas situaciones.
10 ejercicios resueltos sobre estructuras condicionales en JavaScript
A continuación, encontrarás 10 ejercicios prácticos, cada uno con una breve explicación y el código fuente comentado.
Ejercicio 1: Determinar si un número es positivo, negativo o cero
Explicación: Pedimos un número al usuario y, usando condiciones if
, determinamos si es mayor que 0, menor que 0 o igual a 0.
function verificarNumero(numero) {
if (numero > 0) {
return "El número es positivo";
} else if (numero < 0) {
return "El número es negativo";
} else {
return "El número es cero";
}
}
// Ejemplo de uso
console.log(verificarNumero(10)); // "El número es positivo"
console.log(verificarNumero(-5)); // "El número es negativo"
console.log(verificarNumero(0)); // "El número es cero"
Ejercicio 2: Validar si un usuario es mayor de edad
Explicación: Dependiendo de la edad del usuario, mostramos un mensaje indicando si es mayor de edad (>= 18) o no.
function esMayorDeEdad(edad) {
if (edad >= 18) {
return "Eres mayor de edad";
} else {
return "Eres menor de edad";
}
}
// Ejemplo de uso
console.log(esMayorDeEdad(20)); // "Eres mayor de edad"
console.log(esMayorDeEdad(15)); // "Eres menor de edad"
Ejercicio 3: Comparar dos números y mostrar el mayor
Explicación: Se comparan dos números y se muestra cuál de los dos es mayor, o si son iguales.
function mayorDeDos(a, b) {
if (a > b) {
return a + " es mayor que " + b;
} else if (b > a) {
return b + " es mayor que " + a;
} else {
return "Ambos números son iguales";
}
}
// Ejemplo de uso
console.log(mayorDeDos(10, 7)); // "10 es mayor que 7"
console.log(mayorDeDos(3, 9)); // "9 es mayor que 3"
console.log(mayorDeDos(5, 5)); // "Ambos números son iguales"
Ejercicio 4: Verificar si un año es bisiesto
Explicación: Un año es bisiesto si es divisible entre 4, pero no entre 100, o si también es divisible entre 400.
function esBisiesto(anio) {
// Condición para año bisiesto
if ((anio % 4 === 0 && anio % 100 !== 0) || (anio % 400 === 0)) {
return anio + " es bisiesto";
} else {
return anio + " no es bisiesto";
}
}
// Ejemplo de uso
console.log(esBisiesto(2020)); // "2020 es bisiesto"
console.log(esBisiesto(1900)); // "1900 no es bisiesto"
console.log(esBisiesto(2000)); // "2000 es bisiesto"
Ejercicio 5: Asignar categoría según la nota
Explicación: Dada una nota numérica (0-10), asignamos una categoría: «Excelente» (9-10), «Bueno» (7-8), «Regular» (5-6) y «Reprobado» (<5).
function asignarCategoria(nota) {
if (nota >= 9 && nota <= 10) {
return "Excelente";
} else if (nota >= 7 && nota < 9) {
return "Bueno";
} else if (nota >= 5 && nota < 7) {
return "Regular";
} else if (nota >= 0 && nota < 5) {
return "Reprobado";
} else {
return "Nota inválida";
}
}
// Ejemplo de uso
console.log(asignarCategoria(10)); // "Excelente"
console.log(asignarCategoria(8)); // "Bueno"
console.log(asignarCategoria(3)); // "Reprobado"
Ejercicio 6: Calcular descuento según tipo de cliente (switch)
Explicación: Dependiendo del tipo de cliente (oro, plata o bronce), se aplicará un descuento específico en el precio total.
function calcularDescuento(tipoCliente, precio) {
let descuento;
switch (tipoCliente) {
case "oro":
descuento = 0.2; // 20% de descuento
break;
case "plata":
descuento = 0.1; // 10% de descuento
break;
case "bronce":
descuento = 0.05; // 5% de descuento
break;
default:
descuento = 0; // Sin descuento
break;
}
return precio - (precio * descuento);
}
// Ejemplo de uso
console.log(calcularDescuento("oro", 100)); // 80
console.log(calcularDescuento("plata", 100)); // 90
console.log(calcularDescuento("bronce", 100)); // 95
console.log(calcularDescuento("otro", 100)); // 100
Ejercicio 7: Identificar el día de la semana (switch)
Explicación: Según un número (1 al 7), mostramos el día de la semana correspondiente. Si el número no está en ese rango, indicamos que es inválido.
function diaDeLaSemana(numero) {
switch (numero) {
case 1:
return "Lunes";
case 2:
return "Martes";
case 3:
return "Miércoles";
case 4:
return "Jueves";
case 5:
return "Viernes";
case 6:
return "Sábado";
case 7:
return "Domingo";
default:
return "Número inválido";
}
}
// Ejemplo de uso
console.log(diaDeLaSemana(3)); // "Miércoles"
console.log(diaDeLaSemana(7)); // "Domingo"
console.log(diaDeLaSemana(9)); // "Número inválido"
Ejercicio 8: Calcular la tarifa de transporte público según la edad (if-else)
Explicación: El costo varía dependiendo de la edad. Por ejemplo, menores de 5 años no pagan, adultos pagan tarifa completa y mayores de 60 pagan tarifa reducida.
function calcularTarifa(edad) {
if (edad < 5) {
return "Tarifa: Gratis";
} else if (edad >= 5 && edad < 60) {
return "Tarifa: $2.00";
} else {
return "Tarifa: $1.00";
}
}
// Ejemplo de uso
console.log(calcularTarifa(3)); // "Tarifa: Gratis"
console.log(calcularTarifa(30)); // "Tarifa: $2.00"
console.log(calcularTarifa(65)); // "Tarifa: $1.00"
Ejercicio 9: Validar ingreso a un sistema (if-else)
Explicación: Si el usuario y la contraseña coinciden con la base de datos, mostramos «Acceso permitido», de lo contrario «Acceso denegado».
function validarAcceso(usuario, contrasena) {
const userDB = "admin";
const passDB = "12345";
if (usuario === userDB && contrasena === passDB) {
return "Acceso permitido";
} else {
return "Acceso denegado";
}
}
// Ejemplo de uso
console.log(validarAcceso("admin", "12345")); // "Acceso permitido"
console.log(validarAcceso("usuario", "00000")); // "Acceso denegado"
Ejercicio 10: Seleccionar operación aritmética (switch)
Explicación: Según la operación solicitada (suma, resta, multiplicación, división), se realiza el cálculo correspondiente y se devuelve el resultado.
function calcular(a, b, operacion) {
let resultado;
switch (operacion) {
case "suma":
resultado = a + b;
break;
case "resta":
resultado = a - b;
break;
case "multiplicacion":
resultado = a * b;
break;
case "division":
if (b !== 0) {
resultado = a / b;
} else {
return "No se puede dividir entre cero";
}
break;
default:
return "Operación no válida";
}
return "El resultado de la " + operacion + " es: " + resultado;
}
// Ejemplo de uso
console.log(calcular(10, 5, "suma")); // "El resultado de la suma es: 15"
console.log(calcular(10, 5, "division")); // "El resultado de la division es: 2"
console.log(calcular(10, 0, "division")); // "No se puede dividir entre cero"
console.log(calcular(10, 5, "potencia")); // "Operación no válida"
Preguntas frecuentes (FAQs)
¿Puedo usar if-else en lugar de switch (y viceversa)?
Sí, en muchos casos tanto if-else
como switch
pueden resolver el mismo problema. Sin embargo, switch
puede ser más legible cuando se evalúa una sola variable contra múltiples posibles valores.
¿Cuál es la mejor práctica para comparar valores en if?
Es recomendable usar el triple igual (===
) en lugar de doble igual (==
) para evitar conversiones implícitas de tipo que pueden llevar a resultados inesperados.
¿Qué sucede si olvido poner break en un switch?
Si no se coloca break
en un case
, JavaScript continuará ejecutando los casos siguientes hasta encontrar un break
o el final del bloque switch
, lo que suele provocar comportamientos no deseados.
¡Felicidades! Ahora has reforzado tu comprensión de las estructuras condicionales en JavaScript, desde los sencillos if-else
hasta la versátil sentencia switch
.
Estos ejemplos prácticos te ayudarán a tomar decisiones lógicas en tus programas y a desarrollar soluciones más dinámicas. Sigue explorando y practicando para pulir aún más tu habilidad en JavaScript.
Si deseas seguir aprendiendo y explorando más ejemplos y buenas prácticas en JavaScript, visita nuestro blog. Allí encontrarás artículos, tutoriales y guías para mejorar cada día en el fascinante mundo de la programación. ¡Te esperamos!
Sigue aprendiendo en MDN