Boletín de ejercicios¶
Individual. Cada ejercicio en su propio archivo (e1.dart, e2.dart…). Ejecuta con dart run eN.dart. Tiempo orientativo: 20-30 minutos por ejercicio.
E2¶
Ficha de alumno (tipos y valores nulos).
- Declara las variables de un alumno:
nombre(String),edad(int),notaMedia(double),repetidor(boolean),segundoApellido(String, puede sernull) yemail(String, sin inicializar). - Muestra una ficha. Si no hay segundo apellido, no debe aparecer
null. - Si
emailes nulo, muestrasin email. - Asigna un email solo si es nulo y muestra su longitud sin provocar
NullPointerException. - Pide la edad por teclado y controla que sea un número.
E3¶
Calculadora de notas (control de flujo y métodos).
- Escribe
String calificacion(double nota)con unswitchque devuelvaInsuficiente,Suficiente,Bien,Notable,SobresalienteoMatrícula. Si la nota no está entre 0 y 10, devuelveNota no válida. - Escribe
double media(List<Double> notas, boolean redondear). Siredondeares verdadero, devuelve la media con un decimal. Crea también una versión sobrecargada sin ese parámetro. - En
main, recorre3.5, 5, 6.8, 9.2, 10, 11, muestra cada nota con su calificación y después la media con y sin redondeo.
E4¶
La cesta del mercado (colecciones). Dado este mapa de precios por kilo:
Map<String, Double> precios = Map.of(
"boquerones", 7.90,
"cazón", 12.50,
"chocos", 11.00,
"tomates", 2.30,
"pimientos", 2.80);
- Muestra solo los productos de menos de 5 €/kg.
- Crea una lista con los nombres en mayúsculas.
- Dada una cesta
boquerones → 0.5,tomates → 1.2,chocos → 0.75(producto → kilos), calcula el total y muéstralo con dos decimales. - Añade a la cesta un producto que no esté en
preciosy haz que tu código lo ignore sin romperse.
E5¶
Agrupaciones del COAC (clases y enumerados).
- Crea el
enum Modalidad(COMPARSA, CHIRIGOTA, CORO, CUARTETO) con una etiqueta legible. - Crea la clase
Agrupacionconnombre,modalidad,autor(puede sernull) ypuntos. Ofrece dos constructores: uno completo y otro sin autor ni puntos. Añade un métodoesFinalista()(más de 300 puntos) y untoStringque muestreautor desconocidosi no hay autor. - En
main, crea una lista de 6 agrupaciones y muestra: las finalistas, la de más puntos y cuántas hay de cada modalidad.
E6¶
Descargas simuladas (asincronía).
- Escribe
CompletableFuture<List<String>> descargarAgrupaciones()que tarde 2 segundos y devuelva una lista de nombres. - Escribe
CompletableFuture<String> descargarLetra(String agrupacion)que tarde entre 1 y 3 segundos (usa un aleatorio) y falle si el nombre contiene"X". - En
main: descarga la lista; después descarga las letras de todas a la vez conallOf, captura los errores y muestra el tiempo total. - Responde en un comentario: ¿cuánto tardaría si las descargaras una detrás de otra? ¿Por qué?