📚 بُنى المعطيات (Collections) في لغة نفطه

هذا الملف يشرح كيفية تعريف واستخدام بُنى المعطيات الأساسية في لغة نفطه: القوائم، التركيبات، المجموعات، والمصفوفات الترابطية. كما يوضح كيفية إجراء عمليات حسابية ومنطقية عنصرًا بعنصر على هذه البُنى، مع أمثلة عملية.


This file explains how to define and use basic data structures in Naftah language: lists, tuples, sets, and associative arrays. It also shows how to perform element-wise arithmetic and logical operations with practical examples. —

🗂️ جدول أنواع بُنى المعطيات

النوع التعريف الشكل مثال ملاحظات
قائمة (List) مجموعة مرتبة من العناصر [عنصر1، عنصر2، ...] [٨٥، ٩٠، ٧٨، ٩٢] عناصر مرتبة، يمكن تكرارها، مفهرسة
تركيبة (Tuple) مجموعة مرتبة غير قابلة للتغيير (عنصر1، عنصر2، ...) (١٩٩٠، ٥، ٢٥) ثابتة، لا يمكن التغيير بعد التعريف
مجموعة (Set) مجموعة عناصر فريدة {عنصر1، عنصر2، ...} {١، ٢، ٣، ٤} لا تسمح بالتكرار، غير مرتبة
مصفوفة ترابطية مجموعة أزواج مفتاح-قيمة {"مفتاح": قيمة، ...} {"اسم": "أحمد", "عمر": ٢٠} المفاتيح فريدة، وصول مباشر عن طريق المفتاح

📋 تعريفات وأمثلة على بُنى المعطيات

1. قوائم (Lists)

ثابت درجات تعيين [٨٥، ٩٠، ٧٨، ٩٢]
ثابت أعداد_أولية تعيين [٢، ٣، ٥، ٧، ١١]
ثابت متداخلة تعيين [١٠، [٩، [٨، [٧، [٦، [٥، [٤، [٣، [٢، ١]]]]]]]]]

2. تركيبات (Tuples)

ثابت موقع تعيين (٣٢، ٤٥)
ثابت تاريخ_ميلاد تعيين (١٩٩٠، ٥، ٢٥)
ثابت زوج_متداخل تعيين (١٠، (٩، (٨، (٧، (٦، (٥، (٤، (٣، (٢، ١))))))))))

3. مجموعات (Sets)

ثابت عناصر_فريدة تعيين {١، ٢، ٣، ٤}
ثابت رموز تعيين {"أ"، "ب"، "ج"}

4. مصفوفات ترابطية (Associative Arrays)

ثابت الطالب تعيين {"اسم": "أحمد", "عمر": ٢٠, "معدل": ٨٨}
ثابت الإعدادات تعيين {"الوضع": "ليلي", "اللغة": "عربية"}
ثابت قائمة_طلاب تعيين [{"اسم": "ليلى", "عمر": ١٨}, {"اسم": "كريم", "عمر": ١٩}]
ثابت سجل تعيين {
    "الاسم": "سارة",
    "العناوين": ["المنزل", "العمل"],
    "الأرقام": (١٠٠١، ٢٠٠٢)
}

⚙️ العمليات الحسابية والمنطقية على بُنى المعطيات

العمليات بين قائمتين (عنصر بعنصر)

العملية مثال
ضرب * [٨٥، ٩٠، ٧٨، ٩٢] * [٨٥، ٩٠، ٧٨، ٩٢]
جمع + [٨٥، ٩٠، ٧٨، ٩٢] + [٨٥، ٩٠، ٧٨، ٩٢]
طرح - [٨٥، ٩٠، ٧٨، ٩٢] - [٨٥، ٩٠، ٧٨، ٩٢]
قسمة / [٨٥، ٩٠، ٧٨، ٩٢] / [٨٥، ٩٠، ٧٨، ٩٢]
باقي القسمة % [٨٥، ٩٠، ٧٨، ٩٢] % [٨٥، ٩٠، ٧٨، ٩٢]

العمليات بصيغة النقطية (dot-notation)

[٨٥، ٩٠، ٧٨، ٩٢] .*. [٨٥، ٩٠، ٧٨، ٩٢]
[٨٥، ٩٠، ٧٨، ٩٢] .+. [٨٥، ٩٠، ٧٨، ٩٢]
[٨٥، ٩٠، ٧٨، ٩٢] .-. [٨٥، ٩٠، ٧٨، ٩٢]
حاول(
[٨٥، ٩٠، ٧٨، ٩٢] ./. [٨٥، ٩٠، ٧٨، ٩٢]
){
فشل(خ)-> إطبع(خ)
}
[٨٥، ٩٠، ٧٨، ٩٢] .%. [٨٥، ٩٠، ٧٨، ٩٢]

العمليات البتية بين قائمتين (للأعداد الصحيحة فقط)

[٨٥، ٩٠، ٧٨، ٩٢] بت_و [٨٥، ٩٠، ٧٨، ٩٢]
[٨٥، ٩٠، ٧٨، ٩٢] بت_أو [٨٥، ٩٠، ٧٨، ٩٢]
[٨٥، ٩٠، ٧٨، ٩٢] بت_أو_حصري [٨٥، ٩٠، ٧٨، ٩٢]

المقارنات بين قائمتين (عنصر بعنصر)

[٨٥، ٩٠، ٧٨، ٩٢] أصغر_من [٨٥، ٩٠، ٧٨، ٩٢]
[٨٥، ٩٠، ٧٨، ٩٢] أكبر_من [٨٥، ٩٠، ٧٨، ٩٢]
[٨٥، ٩٠، ٧٨، ٩٢] أصغر_أو_يساوي [٨٥، ٩٠، ٧٨، ٩٢]
[٨٥، ٩٠، ٧٨، ٩٢] أكبر_أو_يساوي [٨٥، ٩٠، ٧٨، ٩٢]
[٨٥، ٩٠، ٧٨، ٩٢] يساوي [٨٥، ٩٠، ٧٨، ٩٢]
[٨٥، ٩٠، ٧٨، ٩٢] لا_يساوي [٨٥، ٩٠، ٧٨، ٩٢]

العمليات بين رقم وقائمة (تُطبّق على كل عنصر في القائمة)

2 * [٨٥، ٩٠، ٧٨، ٩٢]
2 + [٨٥، ٩٠، ٧٨، ٩٢]
2 - [٨٥، ٩٠، ٧٨، ٩٢]
2 / [٨٥، ٩٠، ٧٨، ٩٢]
2 % [٨٥، ٩٠، ٧٨، ٩٢]

العمليات ++ و – (قبلية وبعدية) على القوائم

[٨٥، ٩٠، ٧٨، ٩٢]++
++[٨٥، ٩٠، ٧٨، ٩٢]
[٨٥، ٩٠، ٧٨، ٩٢]--
--[٨٥، ٩٠، ٧٨، ٩٢]

عملية النفي البتي

بت_ليس [٨٥، ٩٠، ٧٨، ٩٢]

🧾 الوصول إلى عناصر الوسائط (Arguments)

عند تنفيذ سكربت في نفطه، يتم تمرير الوسائط (arguments) كسلسلة من القيم من الخارج، ويُتاح الوصول إليها داخل السكربت عبر صف (tuple) اسمها وسائط و تحتوي على القيم المرسلة.


✅ الصيغة:

وسائط[n]        ← للوصول إلى العنصر رقم n من قائمة الوسائط

🧰 الاستخدام النموذجي في سكربت نفطه


--- التحقق مما إذا كانت هناك وسائط مدخلة
إذا عدد_الوسائط أكبر_من 0 إذن {

    --- طباعة عدد صفوف الوسائط
    إطبع(عدد_الوسائط)

    --- طباعة أول وسيط مدخل
    إطبع(وسائط[0])
}

--- بدء حلقة تكرار عبر جميع الوسائط
إذا عدد_الوسائط أكبر_من 0 إذن {
	كرر_حلقة أ تعيين 0 إلى عدد_الوسائط ناقص 1 إفعل {
		--- طباعة الوسيط الحالي
		ثابت ت تعيين وسائط[أ]
		إطبع("{{أ}}: {{ت}}")
	}
أنهي
}
غير_ذلك {
    إطبع("الوسائط فارغة")
}


🧠 ملاحظات مهمة


## 📁 ملفات مرتبطة * [Home - الرئيسية](./../../../README.md) * [🔑 الكلمات المفتاحية - Keywords](./01_keywords.md) * [🧱 الأنواع الأولية و الثوابت و المتغيرات - Primitive Types And Variables](./02_primitives_and_variables.md) * [🧮 التعبيرات - Expressions](./04_expressions.md) * [🔢 الأعداد بأنظمة العد - Radix Numbers](./05_radix_numbers.md) * [📦 تعريف الكائنات - Objects](./06_objects.md) * [🌀 التحكم في تدفق البرنامج - Control Flow](./07_control_flow.md) * [⚙️ الدوال في لغة نفطه - Functions](./08_functions.md) * [⚙️ التوافق مع Java (Java Interop) في لغة نفطه - Java Interop](./09_java_interop.md) * [⚡ التعامل مع التزامن في نفطه – Concurrency](./10_concurrency.md) * [⏱️ الزمن والنقاط الزمنية في نفطه – Temporal](./11_temporal.md) ---