🏫 Notas de 2º DAM
Este programa reúne mapas, bucles, condicións e funcións. Os datos están escritos no código para poder probalo en DartPad.
🔗 Ver o código en DartPad — https://dartpad.dev/?id=daf88d13a31eec149229a923edeea398
<String, int>{...} indica o tipo do mapa ao crealo. É equivalente a declarar Map<String, int> notas = {...}.
⌨️ Variante con lectura por teclado
Para practicar o necesario para o proxecto, esta versión pide nomes e notas, comproba os datos e mostra o resultado. Execútaa na terminal.
import 'dart:io';
// Devolve unha nota válida, ou null se remata a entrada.
int? lerNota(String nome) {
while (true) {
stdout.write('Nota de $nome (0 a 10): ');
final texto = stdin.readLineSync();
if (texto == null) return null;
final nota = int.tryParse(texto.trim());
if (nota == null) {
print('Escribe un número enteiro');
continue;
}
if (nota < 0 || nota > 10) {
print('A nota debe estar entre 0 e 10');
continue;
}
return nota;
}
}
void main() {
final notas = <String, int>{};
print('Notas de 2º DAM — IES San Mamede');
while (true) {
stdout.write('Nome do alumno (Intro para rematar): ');
final texto = stdin.readLineSync();
if (texto == null) break; // Rematou a entrada.
final nome = texto.trim();
if (nome.isEmpty) break; // O usuario decide rematar.
final nota = lerNota(nome);
if (nota == null) break;
notas[nome] = nota; // Se repetimos un nome, actualizamos a nota.
}
if (notas.isEmpty) {
print('Non se gardaron notas');
return;
}
int suma = 0;
for (final entrada in notas.entries) {
print('${entrada.key}: ${entrada.value}');
suma += entrada.value;
}
final media = suma / notas.length;
print('Media: ${media.toStringAsFixed(2)}');
}
Proba cunha nota incorrecta, cun nome repetido e sen introducir ningún alumno. O programa debe responder a cada caso sen pecharse cun erro.
🚀 O que levamos cara ao Tema 2.2 e Flutter
Xa sabemos gardar datos, traballar con listas e mapas, ler por teclado, crear funcións e esperar resultados asíncronos. No seguinte tema agruparemos datos e comportamento en clases e obxectos.
En Flutter volveremos atopar final, const, os tipos con ?, os parámetros nomeados, os callbacks, as coleccións e os Future. A entrada de datos farase mediante a interface; aquí stdin permítenos practicar a lóxica na consola.