التعيين
📄 الأصل: assignment.nfth
📦 تحميل الملف: ⬇ تحميل
🔗 عرض الملف:
--- SPDX-License-Identifier: Apache-2.0
--- Copyright © The Naftah Project Authors
---*
هذا الملف يحتوي على مجموعة من التعليمات بلغة برمجة نفطه. بهدف توضيح كيفية:
تعريف الثوابت والمتغيرات وإسناد القيم لها
استخدام قوالب النصوص لإدراج القيم ديناميكيًا، مع دعم خيارات مثل النص الخام والقيم الافتراضية
التعامل مع البُنى المعقدة مثل القوائم المتداخلة والمجموعات المتداخلة
إنشاء كائنات (Objects) بخصائص متداخلة والوصول إليها باستخدام الصيغة النقطية (:) أو الصيغة المربعة ([])
تحويل السلاسل النصية إلى تمثيل ثُماني-البت (byte arrays)
تُظهر الأمثلة المتنوعة مدى مرونة اللغة في تمثيل البيانات المعقدة وتوليد النصوص الديناميكية بطريقة قابلة للقراءة والتحكم.
*---
--- تعريف ثابت اسمه "ت" بقيمة 2
ثابت ت تعيين 2
ثابت ت: أي_عدد تعيين 2
--- تعريف متغير بدون قيمة ابتدائية اسمه "ش"
متغير ش
متغير ش: أي_عدد
--- إسناد القيمة 1 للمتغير "ش"
ش تعيين ١
--- تعريف متغير "ع" بقيمة 15
متغير ع تعيين 15
متغير ع: أي_عدد تعيين 15
--- تعريف ثابت "ي" بقيمة 1
ثابت ي تعيين ١
--- إرجاع نص مع تضمين القيم باستخدام قوالب ${}
ارجع "ت = ${ت}، ش = ${ش}، ع = ${ع}، ي = ${ي}"
--- إرجاع النص بصيغة "خام" دون تنفيذ القوالب
ارجع خام "ت = ${ت}، ش = ${ش}، ع = ${ع}، ي = ${ي}"
ارجع نص_خام "ت = ${ت}، ش = ${ش}، ع = ${ع}، ي = ${ي}"
ارجع سلسلة_خام "ت = ${ت}، ش = ${ش}، ع = ${ع}، ي = ${ي}"
--- إرجاع مع قيمة افتراضية في حال كانت المتغيرات غير معرفة
ارجع "ت = ${ت:ت_فارغ}، ش = ${ش:ش_فارغ}، ع = ${ع:ع_فارغ}، ي = ${ي:ي_فارغ}"
--- إرجاع نص مع تضمين القيم باستخدام قوالب {}$
ارجع "ت = {ت}$، ش = {ش}$، ع = {ع}$، ي = {ي}$"
--- إرجاع مع قيمة افتراضية في حال كانت المتغيرات غير معرفة باستخدام قوالب {}$
ارجع "ت = {ت:ت_فارغ}$، ش = {ش:ش_فارغ}$، ع = {ع:ع_فارغ}$، ي = {ي:ي_فارغ}$"
--- إرجاع نص مع تضمين القيم باستخدام قوالب {{}}
ارجع "ت = {{ت}}، ش = {{ش}}، ع = {{ع}}، ي = {{ي}}"
--- تحويل السلسلة إلى تمثيل 8-بت (byte array)
ارجع ثمانية_بت "ت = {{ت}}، ش = {{ش}}، ع = {{ع}}، ي = {{ي}}"
ارجع بايتات "ت = {{ت}}، ش = {{ش}}، ع = {{ع}}، ي = {{ي}}"
ارجع سلسلة_ثمانية_بت "ت = {{ت}}، ش = {{ش}}، ع = {{ع}}، ي = {{ي}}"
ارجع مصفوفة_ثمانية_بت "ت = {{ت}}، ش = {{ش}}، ع = {{ع}}، ي = {{ي}}"
ارجع سلسلة_بايتات "ت = {{ت}}، ش = {{ش}}، ع = {{ع}}، ي = {{ي}}"
ارجع مصفوفة_بايتات "ت = {{ت}}، ش = {{ش}}، ع = {{ع}}، ي = {{ي}}"
--- إرجاع مع قيمة افتراضية في حال كانت المتغيرات غير معرفة باستخدام قوالب {{}}
ارجع "ت = {{ت:ت_فارغ}}، ش = {{ش:ش_فارغ}}، ع = {{ع:ع_فارغ}}، ي = {{ي:ي_فارغ}}"
--- تعريف مجموعة فيها عنصر متداخل
متغير مجموعة_1 تعيين {١، ٢، {١، ٢، ٣، ٤}، ٤}
--- إسناد قيمة داخل عنصر متداخل
مجموعة_1[3][2] = {١، ٢، ٣، ٤}
--- الوصول إلى عنصر داخل العنصر المتداخل
مجموعة_1[3][3]
--- تعريف قائمة بالأرقام
متغير قائمة_ تعيين [٨٥، ٩٠، ٧٨، ٩٢]
--- تعريف قائمة بالأرقام مع تحديد النوع
متغير قائمة_: قائمة<:عدد_قصير:> تعيين [٨٥، ٩٠، ٧٨، ٩٢]
--- تعريف قائمة بالأرقام مع تحديد النوع
متغير قائمة_: قائمة<:أي_عدد:> تعيين [٨٥، ٩٠، ٧٨، ٩٢]
--- تعيين قائمة كعنصر في قائمة
قائمة_[0] = [٨٥، ٩٠، ٧٨، ٩٢]
--- تكرار التعشيق داخل العنصر الأول
قائمة_[0][0] = [٨٥، ٩٠، ٧٨، ٩٢]
--- تعشيق أعمق
قائمة_[0][0][0] = [٨٥، ٩٠، ٧٨، ٩٢]
--- تعشيق أعمق أكثر
قائمة_[0][0][0][0] = [٨٥، ٩٠، ٧٨، ٩٢]
--- تعشيق أعمق أكثر
قائمة_[0][0][0][0][0] = [٨٥، ٩٠، ٧٨، ٩٢]
--- قراءة القيمة في أعمق مستوى
قائمة_[0][0][0][0][0]
--- تعريف كائن يمثل مدينة
متغير المدينة تعيين {
متغير الاسم تعيين "قبلي", --- خاصية "الاسم" = "قبلي"
متغير عدد_السكان تعيين 50000, --- خاصية عدد السكان
--- خاصية فرعية "بلدة"
متغير البلدة تعيين {
متغير الاسم تعيين "سوق الأحد", --- اسم البلدة
متغير عدد_البيوت تعيين 400 --- عدد البيوت في البلدة
}
}
--- تعديل عدد البيوت في البلدة إلى 50 (باستخدام الصيغة النقطية بـ :)
المدينة:البلدة:عدد_البيوت = 50
--- ارجاع قيمة عدد البيوت
المدينة:البلدة:عدد_البيوت
--- تعديل القيمة باستخدام الصيغة المربعة
المدينة["البلدة"]["عدد_البيوت"] = 5000
--- ارجاع القيمة الجديدة
المدينة["البلدة"]["عدد_البيوت"]
--- إعلان ثابت مكوّن من عدة معرفات دون تحديد أنواع
ثابت ت٫ش٬ع،ي؛ز,س؛ص٫ه٬ض،ق
[ت٫ش٬ع،ي؛ز,س؛ص٫ه٬ض،ق]
--- إعلان ثابت من عدة معرفات مع تحديد نوع واحد لجميعها (منطقي)
ثابت ت٫ش٬ع،ي؛ز,س؛ص٫ه٬ض،ق: منطقي
[ت٫ش٬ع،ي؛ز,س؛ص٫ه٬ض،ق]
--- إعلان ثابت من عدة معرفات مع تحديد عدة أنواع مطابقة للعدد
ثابت ت٫ش٬ع،ي؛ز,س؛ص٫ه٬ض،ق: منطقي؛تسلسل_رموز؛عدد_طويل؛عدد_عائم_طويل؛عدد_عائم؛عدد_صحيح؛رمز؛عدد_قصير_جدا؛عدد_قصير؛منطقي
[ت٫ش٬ع،ي؛ز,س؛ص٫ه٬ض،ق]
--- إعلان ثابت بعدة معرفات ولكن بأنواع أقل من عددها
ثابت ت٫ش٬ع،ي؛ز,س؛ص٫ه٬ض،ق: منطقي؛تسلسل_رموز؛عدد_طويل؛عدد_عائم_طويل
[ت٫ش٬ع،ي؛ز,س؛ص٫ه٬ض،ق]
--- إعلان ثابت مع تعيين قيم مطابقة للتركيبة (Tuple)
ثابت ت٫ش٬ع،ي تعيين "قبلي"؛400؛9223372036854775807؛(٣٢، ٤٥)
(ت٫ش٬ع،ي)
--- إعلان ثابت بأنواع متعددة وتعيين قيم مطابقة لها
ثابت ت٫ش٬ع،ي: تسلسل_رموز؛عدد_طويل؛عدد_طويل؛أي_نوع تعيين "قبلي"؛400؛9223372036854775807؛(٣٢، ٤٥)
(ت٫ش٬ع،ي)
--- إعلان متغير وتعديل قيم داخل قائمة متعددة الأبعاد (Nested Lists)
متغير ه : عدد_صحيح تعيين 2147483647
متغير قائمة_ تعيين [٨٥، ٩٠، ٧٨، ٩٢]
--- الوصول إلى قيم متداخلة واستخدامها في حسابات
قائمة_[0]؛قائمة_[0][0]؛قائمة_[0][0][0]؛قائمة_[0][0][0][0]؛قائمة_[0][0][0][0][0]؛ه = [٨٥، ٩٠، ٧٨، ٩٢] , [٨٥، ٩٠، ٧٨، ٩٢], [٨٥، ٩٠، ٧٨، ٩٢], [٨٥، ٩٠، ٧٨، ٩٢], [٨٥، ٩٠، ٧٨، ٩٢], ه - 1
(ه , قائمة_[0][0][0][0][0])
--- إعلان مدينة ككائن متداخل وإجراء عملية تعديل داخل العمق
متغير ه : عدد_صحيح تعيين 2147483647
متغير المدينة تعيين {
متغير الاسم تعيين "قبلي",
متغير عدد_السكان تعيين 50000,
متغير البلدة تعيين {
متغير الاسم تعيين "سوق الأحد",
متغير عدد_البيوت تعيين 400
}
}
--- تعديل قيمة داخل هيكل متداخل (Nested Object) واستخدامها في عملية حسابية
المدينة:البلدة:عدد_البيوت؛ه = المدينة:البلدة:عدد_البيوت + 50 , ه - 1
(ه , المدينة:البلدة:عدد_البيوت)
--- تعيين متغيرين باستخدام تركيبة (Tuple)
متغير أ؛ب تعيين (٣٢، ٤٥)
(أ , ب)
--- إعلان متغيرين ثم تعيينهما لاحقًا باستخدام تركيبة
متغير أ؛ب
أ؛ب تعيين (٣٢، ٤٥)
(أ , ب)
--- دالة تُرجع تركيبة وإسنادها لمتغيرين
دالة دالة_ترجع_تركيبة() : عدد_طويل {
ارجع (٣٢، ٤٥)
}
متغير أ؛ب تعيين دالة_ترجع_تركيبة()
(أ , ب)
--- دالة تُرجع عدة قيم مفصولة بفاصلة (تُعتبر Tuple)
دالة دالة_ترجع_تركيبة() : عدد_طويل {
ارجع ٣٢ ، ٤٥
}
متغير أ؛ب تعيين دالة_ترجع_تركيبة()
(أ , ب)
--- تعديل الحقول داخل الكائنات (java Objects) متعددة المستويات باستخدام النقطتين ":" أو الأقواس المربعة []
ثابت معرف_مستخدم تعيين جافا:أدة:معرف_مستخدم(6161415689025233999؛5488940234982179551)
--- تعديل أكثر_سيغ_بتات في معرف_مستخدم إلى 1 (باستخدام الصيغة النقطية بـ :)
معرف_مستخدم:أكثر_سيغ_بتات تعيين 1
--- تعديل لشرقا_سيغ_بتات في معرف_مستخدم إلى 10 (باستخدام الصيغة النقطية بـ :)
معرف_مستخدم:لشرقا_سيغ_بتات تعيين 10
--- تعديل القيم باستخدام الصيغة المربعة
معرف_مستخدم["أكثر_سيغ_بتات"] تعيين 1
معرف_مستخدم["لشرقا_سيغ_بتات"] تعيين 10
ثابت ديناميك_رقم تعيين أورغ:داعيتاك:نفطه:مدرجة_مدرجة:لغة:ديناميك_رقم(1)
--- تعديل قيمة في ديناميك_رقم إلى 10 (باستخدام الصيغة النقطية بـ :)
ديناميك_رقم؟:قيمة = 10
--- تعديل القيمة باستخدام الصيغة المربعة
ديناميك_رقم؟["قيمة"] = 10
ثابت قائمة_ تعيين جافا:أدة:صفائف_القائمة([1؛100؛0])
--- تعديل الحجم في قائمة إلى 2 (باستخدام الصيغة النقطية بـ :)
قائمة_:الحجم = 2
--- تعديل عنصر_بيانات في قائمة إلى [100؛0] (باستخدام الصيغة النقطية بـ :)
قائمة_:عنصر_بيانات = [100؛0]
--- تعديل القيم باستخدام الصيغة المربعة
قائمة_["الحجم"] = 2
قائمة_["عنصر_بيانات"] = [100؛0]