diegoRodicio

View Categories

🏫 Exemplo final e paso a Flutter

Tempo de lectura estimado: 2 minutos

🏫 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.