Ejercicios
Decisiones simples (if e if-else)
1. Aviso de batería baja
Una estación meteorológica tiene una batería cuyo porcentaje de carga se almacena en una variable. Si la carga es inferior al 20 %, muestra el aviso «Batería baja: conecta la alimentación». En caso contrario, no debe aparecer ningún aviso. Prueba el programa con cargas del 19 %, 20 % y 85 %.
Contenidos: decisión simple if, operadores de comparación.
2. Envío gratuito
Una tienda ofrece envío gratuito para pedidos de 50 € o más. Partiendo del importe de un pedido, muestra «Envío gratuito» o «Gastos de envío: 4,95 €». Calcula también el importe final que deberá pagar el cliente.
Contenidos: decisión if-else, comparación, cálculo aritmético.
3. Acceso a la zona de mantenimiento
En una instalación, el acceso está permitido únicamente cuando una persona dispone de acreditación y la zona no está bloqueada. Dos variables booleanas indican ambas condiciones. Muestra si puede entrar o si el acceso queda denegado. Comprueba las cuatro combinaciones posibles.
Contenidos: decisión if-else, operadores lógicos.
Cadenas de decisiones
4. Nivel de alerta por viento
Una estación registra una velocidad del viento, expresada en km/h. Clasifícala como calma (menos de 20), moderado (desde 20 y menos de 50), fuerte (desde 50 y menos de 80) o extremo (80 o más). Si la velocidad es negativa, muestra «Dato no válido». Debe mostrarse una sola clasificación.
Contenidos: cadena if-else if-else, intervalos y condiciones excluyentes.
5. Categoría de un corredor
En una carrera, la categoría depende de la edad: infantil (hasta 11 años), cadete (12 a 15), juvenil (16 a 19), absoluta (20 a 39) y veterana (40 o más). Considera inválidas las edades negativas. Muestra la categoría correspondiente mediante una cadena de decisiones.
Contenidos: cadena if-else if-else, comparación de rangos.
Decisiones anidadas
6. Descuento por fidelidad
Una tienda solo aplica descuentos si el importe de la compra alcanza 100 €. Si se cumple ese requisito, comprueba si el cliente es habitual: en ese caso aplica un 15 % de descuento; si no lo es, aplica un 5 %. Para compras inferiores a 100 €, no hay descuento. Muestra el porcentaje aplicado y el precio final.
Contenidos: decisiones anidadas if dentro de if, cálculos.
7. Inscripción en un curso de buceo
Para inscribirse es necesario tener al menos 16 años. Solo si se cumple esta condición se comprueba la autorización familiar: las personas menores de 18 necesitan autorización; las mayores de edad no. Muestra «Edad insuficiente», «Falta autorización» o «Inscripción admitida», según corresponda.
Contenidos: decisiones anidadas, validación por etapas.
8. Diagnóstico de un servidor
Un sistema tiene tres indicadores booleanos: servidor encendido, conexión de red disponible y servicio web funcionando. Primero comprueba si el servidor está encendido; si lo está, comprueba la conexión; y únicamente si esta funciona, comprueba el servicio web. Muestra exactamente uno de estos diagnósticos: «Servidor apagado», «Sin conexión de red», «Servicio web detenido» o «Sistema operativo».
Contenidos: decisiones anidadas en varios niveles, comprobación secuencial.
Selección múltiple (switch-case-default)
9. Panel de ascensor
Un edificio tiene plantas identificadas con los números -1, 0, 1, 2 y 3. Dado el número de planta seleccionado, muestra respectivamente «Garaje», «Recepción», «Oficinas», «Laboratorios» o «Terraza». Para cualquier otro valor, muestra «Planta inexistente».
Contenidos: switch, case, default.
10. Calculadora de operaciones
Define dos números y un carácter que representa una operación: '+', '-', '*' o '/'. Selecciona la operación mediante switch, calcula el resultado y muéstralo. Si se solicita dividir entre cero, informa del error sin realizar la división. Si el símbolo es desconocido, muestra un mensaje de operación no admitida.
Contenidos: switch-case-default, operaciones matemáticas, comprobación de divisor.
11. Tarifa por zona de reparto
Un servicio de mensajería identifica sus zonas con los caracteres 'A', 'B', 'C' y 'D'. Las tarifas son de 3,50 €, 5 €, 7,50 € y 10 €, respectivamente. Dado el código de zona, muestra la tarifa; cualquier otro código deberá producir el mensaje «Zona desconocida». Evita mostrar una tarifa para códigos inválidos.
Contenidos: switch-case-default, selección por caracteres.
Saltos (break y continue)
12. Primer múltiplo encontrado
Recorre los enteros desde 10 hasta 100 y localiza el primer número que sea divisible a la vez entre 7 y entre 3. Cuando lo encuentres, muéstralo y termina inmediatamente el recorrido mediante break. No se permite fijar el resultado directamente.
Contenidos: bucle, condición lógica, salto break.
13. Turnos excluidos de una actividad
Una actividad tiene 30 turnos numerados del 1 al 30. Muestra únicamente los turnos que no sean múltiplos de 4 ni de 6. Recorre todos los números y emplea continue para omitir los turnos excluidos antes de mostrarlos. Al terminar, muestra cuántos turnos se han aceptado.
Contenidos: bucle, operador módulo, salto continue, contador.
Bucles while
14. Hucha con aportaciones crecientes
Una persona empieza con 0 € ahorrados y aporta 5 € la primera semana, 10 € la segunda, 15 € la tercera, y así sucesivamente, aumentando la aportación en 5 € cada semana. Mediante while, calcula cuántas semanas necesita para alcanzar o superar una meta de ahorro definida en el código. Muestra el número de semanas y el total acumulado. Considera metas positivas.
Contenidos: while, acumulador, contador, actualización de estado.
15. Reducir un número a una cifra
Partiendo de un número entero positivo de varias cifras, suma sus dígitos para obtener otro número. Si el resultado todavía tiene varias cifras, repite el proceso hasta conseguir un único dígito. Por ejemplo, 9875 pasa a 29, después a 11 y finalmente a 2. Usa bucles while y operadores aritméticos; no conviertas el número a una cadena.
Contenidos: while, división entera, módulo, acumulación y repetición.
Bucles do-while
16. Cuenta atrás de lanzamiento
Define el número de segundos restantes para el lanzamiento de una sonda, con un valor inicial de 0 o mayor. Muestra la cuenta atrás, incluido el 0, y después «¡Lanzamiento!». Utiliza do-while y asegúrate de que, si comienza en 0, este se muestra una vez.
Contenidos: do-while, ejecución mínima de una iteración, decremento.
17. Aproximación al doble de una inversión
Una inversión tiene un capital inicial positivo y crece un porcentaje fijo cada año. Mediante do-while, aplica el crecimiento anual y muestra el capital tras cada año hasta que alcance o supere el doble del capital inicial. Indica cuántos años han sido necesarios. Para probarlo, utiliza un porcentaje anual positivo.
Contenidos: do-while, acumulación multiplicativa, condición de parada.
Bucles for
18. Tabla de conversión de temperaturas
Muestra las temperaturas de 0 °C a 100 °C, avanzando de 10 en 10, y su equivalencia en grados Fahrenheit mediante la expresión F = C × 9 / 5 + 32. Presenta cada pareja de valores en una línea.
Contenidos: for, incrementos distintos de uno, cálculos.
19. Factorial de un número
Define un entero entre 0 y 12 y calcula su factorial mediante un bucle for. Recuerda que el factorial de 0 es 1. Muestra el número y su factorial, y comprueba los casos 0, 1 y 5.
Contenidos: for, acumulador multiplicativo, casos límite.
20. ¿Es un número primo?
Dado un entero mayor o igual que 2, determina si es primo comprobando mediante for si tiene algún divisor distinto de 1 y de sí mismo. No uses funciones matemáticas auxiliares ni colecciones. Muestra «Primo» o «No primo» y prueba al menos con 2, 9 y 17.
Contenidos: for, divisibilidad, variable booleana.
21. Interés simple por años
Define un capital inicial, una tasa de interés anual expresada en porcentaje y un número positivo de años. Calcula el interés simple de cada año sobre el capital inicial (sin capitalización) y muestra, para cada año, el interés generado y el total acumulado hasta ese momento.
Contenidos: for, cálculo porcentual, acumulación y presentación de resultados.
Bucles anidados
22. Rectángulo de asteriscos
Define dos enteros positivos que representen el alto y el ancho de una figura. Dibuja un rectángulo formado por asteriscos, con tantas filas y columnas como indiquen las variables. Por ejemplo, para alto 3 y ancho 5 deben aparecer tres filas de cinco asteriscos. No construyas ni almacenes las filas en arrays.
Contenidos: dos bucles anidados, filas y columnas.
23. Triángulo numérico
Dada una altura positiva, muestra un triángulo creciente. La primera fila contiene 1; la segunda, 12; la tercera, 123; y así sucesivamente, hasta alcanzar la altura indicada. Utiliza un bucle para las filas y otro para escribir sus números. Considera alturas entre 1 y 9.
Contenidos: bucles anidados, límites dependientes de la fila.
24. Tablas de multiplicar completas
Muestra las tablas de multiplicar del 1 al 10. Para cada tabla, presenta sus diez productos (del 1 al 10) e intercala un separador antes de comenzar la siguiente. Resuelve el problema utilizando exactamente dos bucles anidados para generar las multiplicaciones.
Contenidos: bucles for anidados, recorrido de pares de valores.
25. Tablero de ajedrez textual
Genera un tablero de 8 filas y 8 columnas utilizando los caracteres 'B' y 'N' para representar casillas blancas y negras. La esquina superior izquierda será blanca y los colores se alternarán horizontal y verticalmente. Muestra las ocho filas sin usar arrays ni cadenas predefinidas para las filas.
Contenidos: bucles anidados, paridad de la suma de índices, patrones.
26. Pares de dados
Simula todas las combinaciones posibles de resultados de lanzar dos dados de seis caras. Muestra cada par de valores y, al finalizar, indica cuántas combinaciones producen una suma igual a 7 y cuántas producen una suma mayor que 9. No utilices números aleatorios: recorre sistemáticamente todos los pares posibles.
Contenidos: bucles anidados, enumeración exhaustiva, contadores con condición.
27. Pirámide centrada
Dada una altura entre 1 y 10, dibuja una pirámide centrada de asteriscos. En la primera fila se muestra un asterisco, en la segunda tres, en la tercera cinco, y así sucesivamente. Introduce los espacios iniciales necesarios para que la pirámide quede alineada. Utiliza bucles anidados para generar tanto los espacios como los asteriscos; no emplees métodos de repetición de cadenas.
Contenidos: bucles anidados, patrones, relaciones entre filas, espacios y símbolos.
Captura y lanzamiento de excepciones (try-catch-finally)
28. División con control de errores
Define dos números enteros. Dentro de un bloque try, realiza la división entera y muestra el cociente. Si el divisor es cero, captura la excepción aritmética que provoca la operación y muestra un mensaje comprensible. Tanto si la división se realiza como si falla, escribe «Operación terminada» desde finally. Prueba con un divisor distinto de cero y con cero.
Contenidos: try-catch-finally, captura de excepción aritmética.
29. Validación de una nota
Una nota numérica debe estar comprendida entre 0 y 10, ambos incluidos. Declárala directamente en el código. Dentro de try, comprueba su validez y, si queda fuera del intervalo, lanza una excepción estándar con el mensaje «La nota debe estar entre 0 y 10». Captúrala en catch y muestra su mensaje; si es válida, indica que se ha registrado. En finally, muestra «Validación finalizada».
Contenidos: validación, lanzamiento explícito de excepciones, try-catch-finally.
30. Procesamiento de un código de producto
El código de un producto se representa mediante una cadena que debe contener un número entero positivo. Define el código directamente en el programa. Dentro de try, intenta convertirlo a entero y, si el resultado es cero o negativo, lanza una excepción estándar indicando que el identificador debe ser positivo. Utiliza bloques catch para distinguir un texto no numérico de un número no positivo. En finally, muestra «Comprobación de código completada». Prueba con "125", "ABC" y "-8".
Contenidos: conversión de tipos, excepciones de formato, lanzamiento y captura de excepciones, finally.