Mobile App Development · Dart/Flutter

07 · Array/Listas — Exercícios

Sete exercícios curtos para praticar List, Map, Set e os métodos where e map.

Exercício 1

exercicio_01_lista_nomes.dart

Cria uma List<String> tipada com três nomes, adiciona um quarto com add() e percorre a lista com for-in, imprimindo cada nome em uma linha.

// Demonstração de List<String> — lista de strings em Dart.
// List é uma coleção ordenada que permite duplicatas e acesso por índice.
void main() {
  // Cria uma lista tipada de nomes com três elementos iniciais.
  // List<String> só aceita valores do tipo String.
  List<String> nomes = ['Ana', 'Bia', 'Carlos'];
  // add() insere um novo elemento ao final da lista.
  nomes.add('Davi');

  // for-in percorre cada elemento da lista em ordem de inserção.
  for (String nome in nomes) {
    print(nome);
  }
}

Saída esperada

Ana
Bia
Carlos
Davi

Como executar

dart run 07-Array/02_Exercicios/codigo_fonte/exercicio_01_lista_nomes.dart

Exercício 2

exercicio_02_lista_numeros.dart

Cria uma List<int> e usa um acumulador para somar todos os elementos, percorrendo a lista com for-in e +=.

// Demonstração de List<int> com acumulador para calcular a soma dos elementos.
// Mostra como iterar uma lista e acumular valores com o operador +=.
void main() {
  // Lista de números inteiros.
  List<int> numeros = [10, 20, 30, 40];
  // Acumulador inicializado com zero — vai acumular a soma de todos os elementos.
  int soma = 0;

  // Para cada número na lista, adiciona seu valor ao acumulador.
  for (int numero in numeros) {
    soma += numero; // Equivalente a: soma = soma + numero
  }

  // Exibe o resultado: 10 + 20 + 30 + 40 = 100.
  print('Soma: $soma');
}

Saída esperada

Soma: 100

Como executar

dart run 07-Array/02_Exercicios/codigo_fonte/exercicio_02_lista_numeros.dart

Exercício 3

exercicio_03_map_usuario.dart

Cria um Map<String, dynamic> com nome, idade e status ativo de um usuário e acessa cada valor pela chave, usando dynamic porque os valores têm tipos diferentes.

// Demonstração de Map em Dart — coleção de pares chave-valor.
// Map<String, dynamic>: chaves são Strings e valores podem ser de qualquer tipo.
// 'dynamic' permite misturar tipos diferentes nos valores (String, int, bool etc.).
void main() {
  // Cria um Map com três entradas: nome (String), idade (int) e ativo (bool).
  Map<String, dynamic> usuario = {'nome': 'Ana', 'idade': 24, 'ativo': true};

  // Acessa os valores pelo nome da chave entre colchetes [].
  // O valor retornado pode ser de qualquer tipo (dynamic).
  print('Nome: ${usuario['nome']}');
  print('Idade: ${usuario['idade']}');
  print('Ativo: ${usuario['ativo']}');
}

Saída esperada

Nome: Ana
Idade: 24
Ativo: true

Como executar

dart run 07-Array/02_Exercicios/codigo_fonte/exercicio_03_map_usuario.dart

Exercício 4

exercicio_04_set_tags.dart

Converte uma lista com um valor repetido em um Set<String> com .toSet(), eliminando a duplicata, e adiciona uma nova tag com add().

// Demonstração de Set em Dart — coleção que não permite elementos duplicados.
// Set<String>: armazena strings únicas; a ordem não é garantida.
// Diferença de List: Set elimina automaticamente duplicatas.
void main() {
  // O valor 'dart' aparece duas vezes, mas o Set elimina a duplicata.
  // Resultado real: {'dart', 'flutter', 'mobile'} (sem repetição).
  Set<String> tags = ['dart', 'flutter', 'mobile', 'dart'].toSet();
  // add() insere 'web' — só é adicionado se ainda não existir no Set.
  tags.add('web');

  // Imprime o Set completo — a saída mostra os elementos sem duplicatas.
  print(tags);
}

Saída esperada

{dart, flutter, mobile, web}

Como executar

dart run 07-Array/02_Exercicios/codigo_fonte/exercicio_04_set_tags.dart

Exercício 5

exercicio_05_where.dart

Usa where para filtrar apenas os números pares de uma lista, com isEven como condição, e converte o resultado de volta para List com .toList().

// Demonstração do método 'where' para filtrar elementos de uma lista.
// 'where' recebe uma função anônima (lambda) e retorna apenas os elementos
// para os quais a função retorna true.
void main() {
  List<int> numeros = [1, 2, 3, 4, 5, 6, 7, 8];
  // where((numero) => numero.isEven) filtra apenas os números pares.
  // isEven é uma propriedade de int que retorna true se o número for par.
  // toList() converte o resultado do 'where' (Iterable) de volta para uma List.
  List<int> pares = numeros.where((numero) => numero.isEven).toList();

  // Exibe os números pares filtrados: [2, 4, 6, 8].
  print('Pares: $pares');
}

Saída esperada

Pares: [2, 4, 6, 8]

Como executar

dart run 07-Array/02_Exercicios/codigo_fonte/exercicio_05_where.dart

Exercício 6

exercicio_06_map_transformacao.dart

Usa map para transformar cada nome de uma lista em maiúsculas com toUpperCase(), sem alterar a lista original, convertendo o resultado com .toList().

// Demonstração do método 'map' para transformar elementos de uma lista.
// 'map' aplica uma função a cada elemento e retorna um novo Iterable
// com os valores transformados — sem alterar a lista original.
void main() {
  List<String> nomes = ['ana', 'bia', 'carlos'];
  // map((nome) => nome.toUpperCase()) transforma cada String para maiúsculas.
  // toUpperCase() é um método de String que converte todos os caracteres.
  // toList() converte o Iterable resultante de volta para uma List<String>.
  List<String> nomesFormatados = nomes
      .map((nome) => nome.toUpperCase())
      .toList();

  // Exibe a lista transformada: ['ANA', 'BIA', 'CARLOS'].
  print(nomesFormatados);
}

Saída esperada

[ANA, BIA, CARLOS]

Como executar

dart run 07-Array/02_Exercicios/codigo_fonte/exercicio_06_map_transformacao.dart

Exercício 7

exercicio_07_lista_mapas.dart

Cria uma List<Map<String, dynamic>> — uma lista de mapas — para representar produtos sem precisar criar uma classe, e percorre cada mapa acessando seus valores pelas chaves.

// Demonstração de List<Map<String, dynamic>> — lista de mapas.
// Usada quando precisamos de uma coleção de objetos estruturados
// sem criar uma classe dedicada. Cada mapa representa um produto.
void main() {
  // Lista onde cada elemento é um Map com as chaves 'nome' e 'preco'.
  List<Map<String, dynamic>> produtos = [
    {'nome': 'Mouse', 'preco': 89.90},
    {'nome': 'Teclado', 'preco': 150.00},
    {'nome': 'Monitor', 'preco': 900.00},
  ];

  // Percorre cada mapa da lista e acessa seus valores pelas chaves.
  for (Map<String, dynamic> produto in produtos) {
    // produto['nome'] retorna o valor da chave 'nome' (String).
    // produto['preco'] retorna o valor da chave 'preco' (double).
    print('${produto['nome']}: R\$ ${produto['preco'].toStringAsFixed(2)}');
  }
}

Saída esperada

Mouse: R$ 89.90
Teclado: R$ 150.00
Monitor: R$ 900.00

Como executar

dart run 07-Array/02_Exercicios/codigo_fonte/exercicio_07_lista_mapas.dart