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.
E1¶
Diagnóstico del entorno.
- Ejecuta
flutter doctor -vy guarda una captura. - Crea
e1.mdcon una tabla: cada línea del doctor, su estado (✓, ! o ✗) y si hay que arreglarla para compilar a Android y web. Justifícalo en una frase. - Ejecuta
flutter devicesy copia la salida. ¿Cuántas plataformas puedes usar ahora? ¿Cuál te falta y qué tendrías que instalar?
E2¶
Ficha de alumno (tipos y null safety).
- Declara las variables de un alumno:
nombre(String),edad(int),notaMedia(double),repetidor(bool),segundoApellido(String?) yemail(String?, sin inicializar). - Muestra una ficha con interpolación. 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 usar
!. - (Solo en local) Pide la edad por teclado y controla que sea un número.
E3¶
Calculadora de notas (control de flujo y funciones).
- Escribe
String calificacion(double nota)con una selección múltiple que 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, {bool redondear = false}). Siredondeares verdadero, devuelve la media con un decimal. - En
main, recorre[3.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:
final precios = {
'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 enumerado
Modalidad(comparsa, chirigota, coro, cuarteto) con una etiqueta legible. - Crea la clase
Agrupacioncon un constructor de parámetros con nombre:nombreymodalidadobligatorios,autoropcional ypuntoscon valor por defecto 0. Añade un getterfinalista(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
Future<List<String>> descargarAgrupaciones()que tarde 2 segundos y devuelva una lista de nombres. - Escribe
Future<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, captura los errores y muestra el tiempo total con un cronómetro. - Responde en un comentario: ¿cuánto tardaría si las descargaras una detrás de otra? ¿Por qué?