Exercício final - Dart trabalhando com sintaxe
import 'dart:io';
void cadastroAlunosNotas(List<String> nomes, List<List<double>> notas) {
String? nome;
String? entrada;
double? nota;
//double? notaNegativa;
List<double> notasDoAluno = [];
print('Digite o nome do aluno:');
nome = stdin.readLineSync();
if (nome != null && nome.isNotEmpty && nome.length > 2) {
nomes.add(nome);
do {
print('Digite uma nota para o aluno (ou "fim" para terminar):');
entrada = stdin.readLineSync();
//notaNegativa = double.parse(entrada!);
if (entrada == 'fim') {
notas.add(notasDoAluno);
break;
} else if (entrada == null) {
print('Nota inválida. Tente novamente. null');
} else if (entrada.isEmpty) {
print('Nota inválida. Tente novamente. isEmpty');
} else if (double.parse(entrada).isNegative) {
print('Nota inválida. Tente novamente. Int');
} else {
try {
nota = double.parse(entrada);
notasDoAluno.add(nota);
} catch (e) {
print('Nota invalida. Tente novamente.');
}
}
} while (true);
} else {
print('Nome inválido');
}
}
double calcularMedia(List<double> notas) {
double somar = 0.0;
for (double elemento in notas) {
somar = somar + elemento;
}
return somar / notas.length;
}
void listarAlunosENotas (List<String> nomes, List<List<double>> notas) {
print('Lista de Alunos e Méidas');
for (int i = 0; i < nomes.length; i++) {
double media = calcularMedia(notas[i]);
print('${nomes[i]}: ${media.toStringAsFixed(2)}');
}
}
void menu(List<String> nomes, List<List<double>> notas) {
String? opcao;
print('1 - Registrar, 2 - Listar, 3 - Sair');
opcao = stdin.readLineSync();
do {
switch (opcao) {
case '1':
opcao = '';
cadastroAlunosNotas(nomes, notas);
menu(nomes, notas);
break;
case '2':
opcao = '';
// Listando os alunos e notas
listarAlunosENotas(nomes, notas);
menu(nomes, notas);
break;
case'3':
opcao = '';
print('Fechando o programa');
break;
}
} while (opcao != '3');
}
void cabecalho () {
print('┌─┐─┐ ┬┌─┐┬─┐┌─┐┬┌─┐┬┌─┐ ┌┐┌┌─┐┌┬┐┌─┐┌─┐ ┌┬┐┌─┐┌┬┐┬┌─┐┌─┐');
print('├┤ ┌┴┬┘├┤ ├┬┘│ ││ ││ │ ─── ││││ │ │ ├─┤└─┐ │││├┤ │││├─┤└─┐');
print('└─┘┴ └─└─┘┴└─└─┘┴└─┘┴└─┘ ┘└┘└─┘ ┴ ┴ ┴└─┘ ┴ ┴└─┘─┴┘┴┴ ┴└─┘');
}
void main() {
List<String> nomes = [];
List<List<double>> notas = [];
cabecalho();
menu(nomes, notas);
//cadastroAlunosNotas(nomes, notas);
}