Menu
CoddyTech

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 em uma posição específica de uma lista, o método insert() dá a você controle preciso sobre onde o novo elemento será colocado. Diferentemente do método add(), que sempre adiciona elementos ao final de uma lista, 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 em que você quer inserir o elemento e o próprio elemento. Quando você insere um elemento, todos os elementos existentes nessa posição e nas posições seguintes se deslocam uma posição para a direita.

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

// Insira 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']

Esse método é particularmente útil quando a ordem dos elementos é importante, como em listas de prioridades, cronogramas ou qualquer situação em que você precise manter uma sequência específica. A possibilidade de inserir em qualquer posição torna 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 de uma lista de tarefas existente. Seu programa deve:

  1. Ler uma entrada de texto que represente o nome da lista de tarefas
  2. Ler várias entradas de texto que representem tarefas existentes (a entrada terminará quando você receber uma string vazia)
  3. Ler uma entrada de texto que represente uma tarefa urgente a ser inserida
  4. Ler uma entrada inteira que represente a posição em que 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 deverá 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 deverá 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 posição informada será sempre um índice válido (entre 0 e o tamanho da lista de tarefas existente).

Experimente você mesmo

import 'dart:io';

void main() {
  // Leia o nome da lista de tarefas
  String? taskListName = stdin.readLineSync();
  
  // Leia as 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);
  }
  
  // Leia a tarefa urgente e a posição
  String? urgentTask = stdin.readLineSync();
  int position = int.parse(stdin.readLineSync()!);
  
  // Armazene as tarefas originais antes da inserção
  String originalTasks = tasks.toString();
  
  // TODO: Escreva seu código abaixo
  // Use o método insert() para adicionar a tarefa urgente na posição especificada
  
  // Imprima os resultados no formato exigido
  print('Task List: $taskListName');
  print('Original tasks: $originalTasks');
  print('Inserted: $urgentTask at position $position');
  // Imprima as tarefas atualizadas e a 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

Pratique por conta própria: Compilador de Dart online