Menu
Coddy logo textTech

Adicionando a uma Lista: insert

Parte da seção Lógica & Fluxo do Journey de Dart da Coddy — lição 4 de 65.

Quando você precisa adicionar um elemento a uma posição específica em uma lista, o método insert() oferece controle preciso sobre onde o novo elemento vai. Ao contrário do método add(), que sempre adiciona elementos ao final de uma lista, o insert() permite que você coloque um elemento em qualquer posição que escolher.

O método insert() recebe dois parâmetros: a posição do índice onde você deseja inserir o elemento e o próprio elemento. Quando você insere um elemento, todos os elementos existentes naquela posição e além dela se deslocam uma posição para a direita.

List<String> tasks = ['Buy groceries', 'Walk the dog', 'Read a book'];

// Insere uma nova tarefa no início (índice 0)
tasks.insert(0, 'Check emails');

print(tasks);  // ['Check emails', 'Buy groceries', 'Walk the dog', 'Read a book']

Este método é particularmente útil quando a ordem dos elementos importa, como listas de prioridade, cronogramas ou qualquer situação em que você precise manter uma sequência específica. A capacidade de inserir em qualquer posição torna o insert() uma ferramenta poderosa para gerenciar coleções ordenadas.

challenge icon

Desafio

Fácil

Crie um programa que gerencie um sistema de tarefas prioritárias inserindo tarefas urgentes em posições específicas em uma lista de tarefas existente. Seu programa deve:

  1. Ler uma entrada de string representando o nome da lista de tarefas
  2. Ler múltiplas entradas de string representando tarefas existentes (a entrada terminará quando você receber uma string vazia)
  3. Ler uma entrada de string representando uma tarefa urgente para inserir
  4. Ler uma entrada de número inteiro representando a posição onde a tarefa urgente deve ser inserida
  5. Usar o método insert() para adicionar a tarefa urgente na posição especificada
  6. Imprimir a lista de tarefas atualizada no formato exato mostrado abaixo

Por exemplo, se o nome da lista de tarefas for "Work Schedule", as tarefas existentes forem "Review documents", "Team meeting", "Submit report", a tarefa urgente for "Client call" e a posição for 1, seu programa deve exibir:

Task List: Work Schedule
Original tasks: [Review documents, Team meeting, Submit report]
Inserted: Client call at position 1
Updated tasks: [Review documents, Client call, Team meeting, Submit report]
Total tasks: 4

Se o nome da lista de tarefas for "Daily Goals", as tarefas existentes forem "Exercise", "Read book", a tarefa urgente for "Buy groceries" e a posição for 0, seu programa deve exibir:

Task List: Daily Goals
Original tasks: [Exercise, Read book]
Inserted: Buy groceries at position 0
Updated tasks: [Buy groceries, Exercise, Read book]
Total tasks: 3

Seu programa deve usar o método insert() para adicionar a tarefa urgente na posição especificada. A entrada da posição sempre será um índice válido (entre 0 e o comprimento da lista de tarefas existente).

Folha de consulta

O método insert() permite que você adicione um elemento em uma posição específica em uma lista. Ele recebe dois parâmetros: a posição do índice e o elemento a ser inserido.

List<String> tasks = ['Buy groceries', 'Walk the dog', 'Read a book'];

// Inserir no índice 0 (início)
tasks.insert(0, 'Check emails');

print(tasks);  // ['Check emails', 'Buy groceries', 'Walk the dog', 'Read a book']

Quando você insere um elemento, todos os elementos existentes naquela posição e além se deslocam uma posição para a direita. Este método é útil para manter coleções ordenadas onde a posição importa.

Experimente você mesmo

import 'dart:io';

void main() {
  // Ler o nome da lista de tarefas
  String? taskListName = stdin.readLineSync();
  
  // Ler tarefas existentes até encontrar uma string vazia
  List<String> tasks = [];
  while (true) {
    String? task = stdin.readLineSync();
    if (task == null || task.isEmpty) {
      break;
    }
    tasks.add(task);
  }
  
  // Ler tarefa urgente e posição
  String? urgentTask = stdin.readLineSync();
  int position = int.parse(stdin.readLineSync()!);
  
  // TODO: Escreva seu código abaixo
  // Use o método insert() para adicionar a tarefa urgente na posição especificada
  
  // Imprimir os resultados no formato exigido
  print('Task List: $taskListName');
  print('Original tasks: $tasks');
  print('Inserted: $urgentTask at position $position');
  // Imprimir tarefas atualizadas e contagem total
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Lógica & Fluxo