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

الإضافة والحذف من المجموعات

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

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

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

Set<String> usernames = {'alice', 'bob', 'charlie'};

usernames.add('diana');     // يضيف 'diana' بنجاح
usernames.add('alice');     // لا يفعل شيئاً - 'alice' موجود بالفعل

print(usernames);  // {alice, bob, charlie, diana}

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

usernames.remove('bob');        // يزيل 'bob'
usernames.remove('unknown');    // لا يفعل شيئاً - العنصر غير موجود

print(usernames);  // {alice, charlie, diana}
challenge icon

التحدي

سهل

قم بإنشاء برنامج يدير نظام تعاون جماعي عن طريق إضافة أعضاء فريق جدد وإزالة الأعضاء غير النشطين من فريق المشروع. يجب على برنامجك القيام بما يلي:

  1. قراءة مدخل نصي (string) يمثل اسم المشروع
  2. قراءة مدخلات نصية متعددة تمثل أعضاء الفريق الأوليين (سينتهي الإدخال عندما تتلقى "initial_done")
  3. قراءة مدخلات نصية متعددة تمثل الأعضاء الجدد المراد إضافتهم (سينتهي الإدخال عندما تتلقى "add_done")
  4. قراءة مدخلات نصية متعددة تمثل الأعضاء المراد إزالتهم (سينتهي الإدخال عندما تتلقى "remove_done")
  5. إنشاء مجموعة (Set) تضم أعضاء الفريق الأوليين
  6. استخدام طريقة add() لإضافة كل عضو جديد إلى الفريق
  7. استخدام طريقة remove() لإزالة كل عضو محدد من الفريق
  8. طباعة نتائج إدارة الفريق بالتنسيق الدقيق الموضح أدناه

على سبيل المثال، إذا كان اسم المشروع هو "Mobile App Development"، والأعضاء الأوليون هم "Alice"، "Bob"، "Charlie"، والأعضاء الجدد المراد إضافتهم هم "Diana"، "Alice"، "Eve"، والأعضاء المراد إزالتهم هم "Bob"، "Frank"، فيجب أن يخرج برنامجك ما يلي:

Project: Mobile App Development
Initial team: {Alice, Bob, Charlie}
Adding new members: [Diana, Alice, Eve]
After adding members: {Alice, Bob, Charlie, Diana, Eve}
Removing members: [Bob, Frank]
Final team: {Alice, Charlie, Diana, Eve}
Team size: 4
Status: Team updated successfully

إذا كان اسم المشروع هو "Website Redesign"، والأعضاء الأوليون هم "John"، "Sarah"، والأعضاء الجدد المراد إضافتهم هم "Mike"، "John"، والأعضاء المراد إزالتهم هم "Sarah"، "Unknown"، فيجب أن يخرج برنامجك ما يلي:

Project: Website Redesign
Initial team: {John, Sarah}
Adding new members: [Mike, John]
After adding members: {John, Sarah, Mike}
Removing members: [Sarah, Unknown]
Final team: {John, Mike}
Team size: 2
Status: Team updated successfully

إذا كان اسم المشروع هو "Data Analysis"، والأعضاء الأوليون هم "Emma"، والأعضاء الجدد المراد إضافتهم هم "Tom"، "Lisa"، والأعضاء المراد إزالتهم هم "Emma"، فيجب أن يخرج برنامجك ما يلي:

Project: Data Analysis
Initial team: {Emma}
Adding new members: [Tom, Lisa]
After adding members: {Emma, Tom, Lisa}
Removing members: [Emma]
Final team: {Tom, Lisa}
Team size: 2
Status: Team updated successfully

يجب أن يثبت برنامجك أن طريقة add() لا تفعل شيئاً عند محاولة إضافة عضو موجود بالفعل، وأن طريقة remove() لا تفعل شيئاً عند محاولة إزالة عضو غير موجود. قم بتخزين قوائم المدخلات لإظهار العمليات التي تمت محاولتها، ثم اعرض محتويات المجموعة (Set) بعد كل عملية لإظهار الطبيعة الفريدة للمجموعات.

ورقة مرجعية

استخدم add() لإدراج عناصر في Set. إذا كان العنصر موجوداً بالفعل، فلن يحدث شيء:

Set<String> usernames = {'alice', 'bob', 'charlie'};

usernames.add('diana');     // Adds 'diana' successfully
usernames.add('alice');     // Does nothing - 'alice' already exists

print(usernames);  // {alice, bob, charlie, diana}

استخدم remove() لحذف عناصر من Set. إذا لم يكن العنصر موجوداً، فلن يحدث شيء:

usernames.remove('bob');        // Removes 'bob'
usernames.remove('unknown');    // Does nothing - element not found

print(usernames);  // {alice, charlie, diana}

جرّب بنفسك

import 'dart:io';

void main() {
  // قراءة اسم المشروع
  String? projectName = stdin.readLineSync();
  
  // قراءة أعضاء الفريق الأوليين
  List<String> initialMembers = [];
  String? member;
  while ((member = stdin.readLineSync()) != "initial_done") {
    initialMembers.add(member!);
  }
  
  // قراءة الأعضاء الجدد المراد إضافتهم
  List<String> membersToAdd = [];
  while ((member = stdin.readLineSync()) != "add_done") {
    membersToAdd.add(member!);
  }
  
  // قراءة الأعضاء المراد إزالتهم
  List<String> membersToRemove = [];
  while ((member = stdin.readLineSync()) != "remove_done") {
    membersToRemove.add(member!);
  }
  
  // TODO: اكتب الكود الخاص بك أدناه
  // إنشاء Set مع أعضاء الفريق الأوليين
  // إضافة أعضاء جدد باستخدام طريقة add()
  // إزالة الأعضاء باستخدام طريقة remove()
  
  // طباعة النتائج بالتنسيق المطلوب
  print("Project: $projectName");
  // أضف بيانات الطباعة المتبقية هنا
}
quiz iconاختبر نفسك

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

جميع دروس Logic & Flow