Menu
CoddyTech

Listeye Ekleme: insert

Coddy'nin Dart Journey'sinin Mantık & Akış bölümünün bir parçası. Ders 4 / 65.

Bir listeye belirli bir konuma öğe eklemeniz gerektiğinde, insert() yöntemi yeni öğenin nereye yerleştirileceği üzerinde hassas kontrol sağlar. Öğeleri her zaman listenin sonuna ekleyen add() yönteminden farklı olarak insert(), bir öğeyi seçtiğiniz herhangi bir konuma yerleştirmenize olanak tanır.

insert() metodu iki parametre alır: öğeyi eklemek istediğiniz indeks konumu ve öğenin kendisi. Bir öğe eklediğinizde, o konumdaki ve sonrasındaki tüm mevcut öğeler bir konum sağa kayar.

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

// Başlangıca (index 0) yeni bir görev ekle
tasks.insert(0, 'Check emails');

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

Bu yöntem, öncelik listeleri, programlar veya belirli bir sırayı korumanız gereken herhangi bir durum gibi öğelerin sırasının önemli olduğu durumlarda özellikle kullanışlıdır. Herhangi bir konuma ekleme olanağı, insert() yöntemini sıralı koleksiyonları yönetmek için güçlü bir araç hâline getirir.

challenge icon

Görev

Kolay

Mevcut bir görev listesine acil görevleri belirli konumlara ekleyerek öncelikli bir görev sistemini yöneten bir program oluştur. Programın şunları yapmalıdır:

  1. Görev listesi adını temsil eden bir dize girdisi oku
  2. Mevcut görevleri temsil eden birden fazla dize girdisi oku (boş bir dize aldığında girdi sona erecektir)
  3. Eklenecek acil görevi temsil eden bir dize girdisi oku
  4. Acil görevin ekleneceği konumu temsil eden bir tam sayı girdisi oku
  5. Acil görevi belirtilen konuma eklemek için insert() yöntemini kullan
  6. Güncellenmiş görev listesini aşağıda gösterilen biçimin aynısıyla yazdır

Örneğin, görev listesi adı "Work Schedule", mevcut görevler "Review documents", "Team meeting", "Submit report", acil görev "Client call" ve konum 1 ise programın şu çıktıyı vermelidir:

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

Görev listesi adı "Daily Goals", mevcut görevler "Exercise", "Read book", acil görev "Buy groceries" ve konum 0 ise programın şu çıktıyı vermelidir:

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

Programın, acil görevi belirtilen konuma eklemek için insert() yöntemini kullanmalıdır. Konum girdisi her zaman geçerli bir indeks olacaktır (0 ile mevcut görev listesinin uzunluğu arasında).

Kendin dene

import 'dart:io';

void main() {
  // Görev listesinin adını oku
  String? taskListName = stdin.readLineSync();
  
  // Boş bir dizeye kadar mevcut görevleri oku
  List<String> tasks = [];
  while (true) {
    String? task = stdin.readLineSync();
    if (task == null || task.isEmpty) {
      break;
    }
    tasks.add(task);
  }
  
  // Acil görevi ve konumu oku
  String? urgentTask = stdin.readLineSync();
  int position = int.parse(stdin.readLineSync()!);
  
  // Eklemeden önce orijinal görevleri sakla
  String originalTasks = tasks.toString();
  
  // TODO: Kodunu aşağıya yaz
  // Acil görevi belirtilen konuma eklemek için insert() metodunu kullan
  
  // Sonuçları istenen biçimde yazdır
  print('Task List: $taskListName');
  print('Original tasks: $originalTasks');
  print('Inserted: $urgentTask at position $position');
  // Güncellenmiş görevleri ve toplam sayıyı yazdır
}
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Mantık & Akış bölümündeki tüm dersler

Kendi başına pratik yap: Online Dart derleyicisi