Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

الإضافة إلى القائمة: insert

جزء من قسم Logic & Flow في رحلة Dart على Coddy — الدرس 4 من 65.

عندما تحتاج إلى إضافة عنصر إلى موضع محدد في قائمة، تمنحك الطريقة insert() تحكماً دقيقاً في المكان الذي يوضع فيه العنصر الجديد. على عكس الطريقة add()، التي تضيف العناصر دائماً إلى نهاية القائمة، تسمح لك insert() بوضع عنصر في أي موضع تختاره.

تأخذ الطريقة insert() معاملين: موضع الفهرس الذي تريد إدراج العنصر فيه، والعنصر نفسه. عند إدراج عنصر، يتم إزاحة جميع العناصر الموجودة في ذلك الموضع وما بعده بمقدار موضع واحد إلى اليمين.

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

// إدراج مهمة جديدة في البداية (الفهرس 0)
tasks.insert(0, 'Check emails');

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

تعد هذه الطريقة مفيدة بشكل خاص عندما يكون ترتيب العناصر مهماً، مثل قوائم الأولويات، أو الجداول الزمنية، أو أي موقف تحتاج فيه إلى الحفاظ على تسلسل معين. إن القدرة على الإدراج في أي موضع تجعل من insert() أداة قوية لإدارة المجموعات المرتبة.

challenge icon

التحدي

سهل

قم بإنشاء برنامج يدير نظام مهام ذات أولوية عن طريق إدراج المهام العاجلة في مواقع محددة في قائمة مهام موجودة. يجب على برنامجك القيام بما يلي:

  1. قراءة مدخل نصي (string) يمثل اسم قائمة المهام
  2. قراءة مدخلات نصية متعددة تمثل المهام الموجودة (سينتهي الإدخال عندما تتلقى سلسلة فارغة)
  3. قراءة مدخل نصي يمثل مهمة عاجلة لإدراجها
  4. قراءة مدخل عددي (integer) يمثل الموقع الذي يجب إدراج المهمة العاجلة فيه
  5. استخدام التابع insert() لإضافة المهمة العاجلة في الموقع المحدد
  6. طباعة قائمة المهام المحدثة بالتنسيق الدقيق الموضح أدناه

على سبيل المثال، إذا كان اسم قائمة المهام هو "Work Schedule"، والمهام الموجودة هي "Review documents"، "Team meeting"، "Submit report"، والمهمة العاجلة هي "Client call"، والموقع هو 1، فيجب أن يخرج برنامجك ما يلي:

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

إذا كان اسم قائمة المهام هو "Daily Goals"، والمهام الموجودة هي "Exercise"، "Read book"، والمهمة العاجلة هي "Buy groceries"، والموقع هو 0، فيجب أن يخرج برنامجك ما يلي:

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

يجب أن يستخدم برنامجك التابع insert() لإضافة المهمة العاجلة في الموقع المحدد. سيكون مدخل الموقع دائماً فهرساً (index) صالحاً (بين 0 وطول قائمة المهام الموجودة).

ورقة مرجعية

تتيح لك الطريقة insert() إضافة عنصر في موضع محدد في القائمة. وهي تأخذ معلمتين: موضع الفهرس والعنصر المراد إدراجه.

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

// إدراج في الفهرس 0 (البداية)
tasks.insert(0, 'Check emails');

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

عند إدراج عنصر، يتم إزاحة جميع العناصر الموجودة في ذلك الموضع وما بعده موضعاً واحداً إلى اليمين. هذه الطريقة مفيدة للحفاظ على المجموعات المرتبة حيث يكون الموضع مهماً.

جرّب بنفسك

import 'dart:io';

void main() {
  // قراءة اسم قائمة المهام
  String? taskListName = stdin.readLineSync();
  
  // قراءة المهام الموجودة حتى يتم إدخال سلسلة فارغة
  List<String> tasks = [];
  while (true) {
    String? task = stdin.readLineSync();
    if (task == null || task.isEmpty) {
      break;
    }
    tasks.add(task);
  }
  
  // قراءة المهمة العاجلة وموقعها
  String? urgentTask = stdin.readLineSync();
  int position = int.parse(stdin.readLineSync()!);
  
  // TODO: اكتب الكود الخاص بك أدناه
  // استخدم التابع insert() لإضافة المهمة العاجلة في الموقع المحدد
  
  // طباعة النتائج بالتنسيق المطلوب
  print('Task List: $taskListName');
  print('Original tasks: $tasks');
  print('Inserted: $urgentTask at position $position');
  // طباعة المهام المحدثة والعدد الإجمالي
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس Logic & Flow