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

إنشاء مجموعة

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

الآن بعد أن فهمت ما هو Set، فلنتعلم كيفية إنشاء واحد. في Dart، يمكنك إنشاء Set باستخدام الأقواس المتعرجة {} مع فصل العناصر بفواصل، بشكل مشابه لكيفية كتابة مجموعة رياضية.

Set<String> colors = {'red', 'blue', 'green'};
print(colors);  // {red, blue, green}

من المهم عدم الخلط بين هذا النحو وبين إنشاء Map. بينما يستخدم كلاهما الأقواس المتعرجة، فإن Set يحتوي على قيم فقط، بينما يحتوي Map على أزواج مفتاح-قيمة مفصولة بنقطتين. يجب التصريح عن Set فارغ بشكل صريح مع نوع لتمييزه عن Map فارغ.

Set<String> emptySet = <String>{};  // مجموعة فارغة
Map<String, int> emptyMap = {};     // خريطة فارغة

يمكنك أيضاً إنشاء Set بقيم مكررة، ولكن تذكر أن التكرارات ستتم إزالتها تلقائياً، مما يترك فقط العناصر الفريدة في المجموعة النهائية.

challenge icon

التحدي

سهل

قم بإنشاء برنامج يدير نظام وسم (tagging) للمدونة من خلال إنشاء مجموعة (Set) من الوسوم الفريدة لمنشور مدونة. يجب على برنامجك القيام بما يلي:

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

على سبيل المثال، إذا كان عنوان المدونة هو "Introduction to Dart Programming" والوسوم هي "programming"، "dart"، "tutorial"، "programming"، "beginner"، يجب أن يخرج برنامجك ما يلي:

Blog Post: Introduction to Dart Programming
Tags added: [programming, dart, tutorial, programming, beginner]
Unique tags: {programming, dart, tutorial, beginner}
Total unique tags: 4
Status: Blog post tagged successfully

إذا كان عنوان المدونة هو "Web Development Tips" والوسوم هي "web"، "html"، "css"، "web"، "html"، "javascript"، يجب أن يخرج برنامجك ما يلي:

Blog Post: Web Development Tips
Tags added: [web, html, css, web, html, javascript]
Unique tags: {web, html, css, javascript}
Total unique tags: 4
Status: Blog post tagged successfully

إذا كان عنوان المدونة هو "Getting Started" والوسوم هي "guide"، "basics"، يجب أن يخرج برنامجك ما يلي:

Blog Post: Getting Started
Tags added: [guide, basics]
Unique tags: {guide, basics}
Total unique tags: 2
Status: Blog post tagged successfully

يجب أن يقوم برنامجك بإنشاء مجموعة (Set) باستخدام صيغة الأقواس المتعرجة {} وإظهار كيفية تعامل المجموعات تلقائياً مع إزالة التكرارات. قم بتخزين جميع الوسوم المدخلة في قائمة (list) أولاً لإظهار ما تم إدخاله في الأصل، ثم قم بإنشاء المجموعة لإظهار الوسوم الفريدة. يجب أن تعرض المجموعة محتوياتها بتنسيق المجموعة القياسي مع الأقواس المتعرجة.

ورقة مرجعية

أنشئ Set باستخدام الأقواس المتعرجة {} مع عناصر مفصولة بفواصل:

Set<String> colors = {'red', 'blue', 'green'};
print(colors);  // {red, blue, green}

بالنسبة للمجموعات (Sets) الفارغة، صرح عن النوع بشكل صريح للتمييز بينها وبين الخرائط (Maps) الفارغة:

Set<String> emptySet = <String>{};  // مجموعة فارغة
Map<String, int> emptyMap = {};     // خريطة فارغة

تقوم المجموعات (Sets) تلقائيًا بإزالة القيم المكررة، مع الاحتفاظ بالعناصر الفريدة فقط.

جرّب بنفسك

import 'dart:io';

void main() {
  // قراءة عنوان منشور المدونة
  String? title = stdin.readLineSync();
  
  // قراءة الوسوم حتى يتم إدخال "done"
  List<String> allTags = [];
  String? tag;
  while ((tag = stdin.readLineSync()) != "done") {
    if (tag != null) {
      allTags.add(tag);
    }
  }
  
  // TODO: اكتب كودك هنا
  // إنشاء Set من قائمة الوسوم للحصول على وسوم فريدة
  // حساب العدد الإجمالي للوسوم الفريدة
  
  // طباعة النتائج
  print("Blog Post: $title");
  print("Tags added: $allTags");
  // طباعة الوسوم الفريدة بتنسيق Set
  // طباعة إجمالي عدد الوسوم الفريدة
  // طباعة رسالة الحالة
}
quiz iconاختبر نفسك

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

جميع دروس Logic & Flow