المجموعات
المجموعات
Section titled “المجموعات”يوفر كنوز عدة أنواع من المجموعات لتخزين البيانات بطرق مختلفة.
المتجهات (Vector)
Section titled “المتجهات (Vector)”المتجه هو مجموعة ديناميكية يمكن أن يتغير حجمها.
إنشاء متجه
Section titled “إنشاء متجه”// متجه فارغدع متغير أعداد: متجه<صحيح> = متجه[];
// متجه بقيم أوليةدع متغير فواكه: متجه<نص> = متجه["تفاح", "موز", "برتقال"];إضافة وحذف العناصر
Section titled “إضافة وحذف العناصر”دع متغير قائمة: متجه<صحيح> = متجه[];
// إضافة للنهايةقائمة.ادفع(10);قائمة.ادفع(20);قائمة.ادفع(30);
// حذف من النهايةدع آخر = قائمة.انزع(); // يُرجع 30الوصول للعناصر
Section titled “الوصول للعناصر”دع أعداد: متجه<صحيح> = متجه[1, 2, 3, 4, 5];
// بالفهرسدع أول = أعداد[0]; // 1دع ثاني = أعداد[1]; // 2
// تعديل عنصردع متغير قابل: متجه<صحيح> = متجه[1, 2, 3];قابل[0] = 100; // الآن [100, 2, 3]خصائص المتجه
Section titled “خصائص المتجه”دع أعداد: متجه<صحيح> = متجه[10, 20, 30];
// الطولدع ط = أعداد.طول(); // 3
// هل فارغ؟إذا أعداد.طول() == 0 { اطبع("المتجه فارغ");}التكرار على المتجه
Section titled “التكرار على المتجه”دع فواكه: متجه<نص> = متجه["تفاح", "موز", "برتقال"];
// التكرار المباشرلكل فاكهة في فواكه { اطبع(فاكهة);}
// مع الفهرسدع متغير ف = 0;لكل فاكهة في فواكه { اطبع_صحيح(ف); اطبع(فاكهة); ف += 1;}القاموس (HashMap)
Section titled “القاموس (HashMap)”القاموس يخزن أزواج مفتاح-قيمة.
إنشاء قاموس
Section titled “إنشاء قاموس”// قاموس فارغدع متغير درجات: قاموس<نص, صحيح> = قاموس[];
// لا يوجد إنشاء بقيم أولية، أضف العناصر بعد الإنشاءدرجات.أضف("رياضيات", 95);درجات.أضف("فيزياء", 88);درجات.أضف("كيمياء", 92);إضافة وتعديل العناصر
Section titled “إضافة وتعديل العناصر”دع متغير أعمار: قاموس<نص, صحيح> = قاموس[];
// إضافةأعمار.أضف("أحمد", 25);أعمار.أضف("محمد", 30);
// التعديل (بنفس الطريقة)أعمار.أضف("أحمد", 26); // تحديث القيمةقراءة العناصر
Section titled “قراءة العناصر”دع متغير بيانات: قاموس<نص, صحيح> = قاموس[];بيانات.أضف("س", 10);بيانات.أضف("ص", 20);
// القراءة ترجع اختياريطابق بيانات.اقرأ("س") { بعض(قيمة) => { اطبع_صحيح(قيمة); // 10 } عدم => { اطبع("المفتاح غير موجود"); }}حذف العناصر
Section titled “حذف العناصر”دع متغير قاموسي: قاموس<نص, صحيح> = قاموس[];قاموسي.أضف("مفتاح", 100);
// الحذفقاموسي.احذف("مفتاح");التحقق من وجود مفتاح
Section titled “التحقق من وجود مفتاح”دع متغير قاموسي: قاموس<نص, نص> = قاموس[];قاموسي.أضف("اسم", "أحمد");
إذا قاموسي.يحتوي("اسم") { اطبع("المفتاح موجود");}التكرار على القاموس
Section titled “التكرار على القاموس”دع متغير درجات: قاموس<نص, صحيح> = قاموس[];درجات.أضف("رياضيات", 95);درجات.أضف("فيزياء", 88);درجات.أضف("كيمياء", 92);
// التكرار على الأزواجلكل (مادة, درجة) في درجات { اطبع(مادة); اطبع_صحيح(درجة);}أمثلة عملية
Section titled “أمثلة عملية”عداد التكرارات
Section titled “عداد التكرارات”دالة عد_كلمات(كلمات: متجه<نص>) -> قاموس<نص, صحيح> { دع متغير عداد: قاموس<نص, صحيح> = قاموس[];
لكل كلمة في كلمات { طابق عداد.اقرأ(كلمة) { بعض(عدد) => { عداد.أضف(كلمة, عدد + 1); } عدم => { عداد.أضف(كلمة, 1); } } }
أرجع عداد;}ذاكرة تخزين مؤقت
Section titled “ذاكرة تخزين مؤقت”هيكل ذاكرة_مؤقتة<ن> { بيانات: قاموس<نص, ن>}
نفذ<ن> ذاكرة_مؤقتة<ن> { دالة جديد() -> ذاتي { أرجع ذاتي { بيانات: قاموس[] }; }
دالة أضف(&متغير ذاتي, مفتاح: نص, قيمة: ن) { ذاتي.بيانات.أضف(مفتاح, قيمة); }
دالة اقرأ(&ذاتي, مفتاح: نص) -> اختياري<ن> { أرجع ذاتي.بيانات.اقرأ(مفتاح); }}قائمة مهام
Section titled “قائمة مهام”هيكل مهمة { عنوان: نص, مكتملة: منطقي}
هيكل قائمة_مهام { مهام: متجه<مهمة>}
نفذ قائمة_مهام { دالة جديد() -> ذاتي { أرجع ذاتي { مهام: متجه[] }; }
دالة أضف(&متغير ذاتي, عنوان: نص) { ذاتي.مهام.ادفع(مهمة { عنوان: عنوان, مكتملة: خطأ }); }
دالة أكمل(&متغير ذاتي, فهرس: صحيح) { ذاتي.مهام[فهرس].مكتملة = صح; }
دالة عدد_المكتملة(&ذاتي) -> صحيح { دع متغير عداد = 0; لكل مهمة في ذاتي.مهام { إذا مهمة.مكتملة { عداد += 1; } } أرجع عداد; }}تجميع البيانات
Section titled “تجميع البيانات”هيكل طالب { اسم: نص, صف: نص, درجة: صحيح}
دالة تجميع_بالصف(طلاب: متجه<طالب>) -> قاموس<نص, متجه<طالب>> { دع متغير مجموعات: قاموس<نص, متجه<طالب>> = قاموس[];
لكل طالب في طلاب { طابق مجموعات.اقرأ(طالب.صف) { بعض(متغير قائمة) => { قائمة.ادفع(طالب); } عدم => { دع متغير قائمة_جديدة: متجه<طالب> = متجه[]; قائمة_جديدة.ادفع(طالب); مجموعات.أضف(طالب.صف, قائمة_جديدة); } } }
أرجع مجموعات;}جدول مقارنة المجموعات
Section titled “جدول مقارنة المجموعات”| الخاصية | المصفوفة | المتجه | القاموس |
|---|---|---|---|
| الحجم | ثابت | متغير | متغير |
| الوصول | بالفهرس O(1) | بالفهرس O(1) | بالمفتاح O(1) |
| الإضافة | ❌ | ✅ O(1)* | ✅ O(1)* |
| الحذف | ❌ | ✅ | ✅ |
| الترتيب | محفوظ | محفوظ | غير مضمون |
* في المتوسط