Skip to content

مكتبة core — الأساسيات

مكتبة core تضم الدوال الأساسية التي يحتاجها كل مبرمج: دوال المصفوفات لمعالجة القوائم والبيانات، ودوال الأنواع لفحص وتحويل البيانات بين الأنواع المختلفة. جميع هذه الدوال مُسجلة تلقائياً ومتاحة بدون استيراد.

sad
# المصفوفات
متغير الطلاب = ["يوسف"، "مريم"، "أحمد"]
الطلاب = إضافة_عنصر(الطلاب، "خديجة")
اطبع_سطر("العدد: " + حجم_مصفوفة(الطلاب))

# فحص الأنواع
اطبع_سطر(النوع(42))          # "integer"
اطبع_سطر(هو_نص("مرحبا"))    # صحيح
اطبع_سطر(لنص(3.14))         # "3.14"

ملخص الدوال

دوال المصفوفات

الدالةالوصف
إضافة_عنصر(مصفوفة، عنصر)إضافة عنصر للنهاية
إزالة_عنصر(مصفوفة)إزالة آخر عنصر وإرجاعه
حجم_مصفوفة(مصفوفة)عدد العناصر
فهرس_عنصر(مصفوفة، عنصر)موقع العنصر (-1 إن لم يوجد)
قلب_مصفوفة(مصفوفة)عكس ترتيب العناصر
فرز_مصفوفة(مصفوفة، تصاعدي؟)فرز العناصر
شريحة(مصفوفة، بداية، نهاية؟)استخراج جزء

دوال التحويل

الدالةالوصف
لنص(قيمة)تحويل أي قيمة لنص
لرقم(قيمة)تحويل لعدد صحيح
لعشري(قيمة)تحويل لعدد عشري
لمصفوفة(قيمة)تحويل لمصفوفة
لمنطقي(قيمة)تحويل لقيمة منطقية

دوال فحص الأنواع

الدالةالوصف
النوع(قيمة)اسم النوع كنص
هو_رقم_صحيح(قيمة)هل هو عدد صحيح؟
هو_رقم_عشري(قيمة)هل هو عدد عشري؟
هو_نص(قيمة)هل هو نص؟
هو_مصفوفة(قيمة)هل هو مصفوفة؟

دوال المصفوفات

إضافة_عنصر(مصفوفة، عنصر) — إضافة عنصر

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

sad
# بناء قائمة تسوق لرمضان
متغير التسوق = ["تمر"، "لبن"، "ماء"]
التسوق = إضافة_عنصر(التسوق، "سمبوسة")
التسوق = إضافة_عنصر(التسوق، "قمر الدين")

لكل صنف في التسوق
    اطبع_سطر("• " + صنف)
نهاية
# • تمر
# • لبن
# • ماء
# • سمبوسة
# • قمر الدين

إزالة_عنصر(مصفوفة) — إزالة آخر عنصر

تُزيل آخر عنصر من المصفوفة وتُرجعه. تُعدّل المصفوفة الأصلية. إذا كانت المصفوفة فارغة تُرمى رسالة خطأ.

sad
# مكدس مهام (آخر ما يدخل أول ما يخرج)
متغير المهام = ["وضوء"، "صلاة"، "أذكار"]

متغير المهمة = إزالة_عنصر(المهام)
اطبع_سطر("المهمة الحالية: " + المهمة)
# الناتج: المهمة الحالية: أذكار

حجم_مصفوفة(مصفوفة) — عدد العناصر

تُرجع عدد العناصر الموجودة في المصفوفة. ترجع عدداً صحيحاً. مصفوفة فارغة تُرجع 0.

sad
# التحقق من اكتمال المجموعة
متغير الفريق = ["خالد"، "سارة"، "عمر"، "نورة"، "ياسر"]
متغير الحد_الأدنى = 5

إذا (حجم_مصفوفة(الفريق) >= الحد_الأدنى)
    اطبع_سطر("الفريق مكتمل (" + حجم_مصفوفة(الفريق) + " أعضاء)")
وإلا
    اطبع_سطر("الفريق يحتاج " + (الحد_الأدنى - حجم_مصفوفة(الفريق)) + " أعضاء إضافيين")
نهاية

فهرس_عنصر(مصفوفة، عنصر) — إيجاد موقع عنصر

تبحث عن عنصر في المصفوفة وتُرجع موقعه (يبدأ من 0). إذا لم يُعثر على العنصر تُرجع -1. تُقارن القيم بالتساوي.

sad
# البحث عن مدينة في قائمة المدن المقدسة
متغير المدن = ["مكة"، "المدينة"، "القدس"، "الرياض"، "القاهرة"]

متغير موقع = فهرس_عنصر(المدن، "القدس")
إذا (موقع != -1)
    اطبع_سطر("القدس في الموقع: " + موقع)
وإلا
    اطبع_سطر("المدينة غير موجودة")
نهاية
# الناتج: القدس في الموقع: 2

قلب_مصفوفة(مصفوفة) — عكس الترتيب

تُرجع مصفوفة جديدة بترتيب عكسي. مفيدة لعرض العناصر من الأحدث إلى الأقدم أو لتطبيق خوارزميات معينة.

sad
# عرض آخر 5 أحداث بترتيب زمني عكسي
متغير الأحداث = ["فتح مكة"، "غزوة بدر"، "الهجرة"، "صلح الحديبية"]
متغير معكوسة = قلب_مصفوفة(الأحداث)

اطبع_سطر("الأحداث (من الأحدث):")
لكل حدث في معكوسة
    اطبع_سطر("  ← " + حدث)
نهاية

فرز_مصفوفة(مصفوفة، تصاعدي؟) — فرز العناصر

تُرتّب عناصر المصفوفة تصاعدياً بشكل افتراضي. يمكن تمرير خطأ كمعامل ثانٍ للفرز التنازلي. تعمل مع الأرقام والنصوص.

sad
# ترتيب درجات طلاب الحلقة القرآنية
متغير الدرجات = [85، 92، 78، 96، 88، 74]

متغير تصاعدي = فرز_مصفوفة(الدرجات)
اطبع_سطر("من الأقل: " + لنص(تصاعدي))

متغير تنازلي = فرز_مصفوفة(الدرجات، خطأ)
اطبع_سطر("من الأعلى: " + لنص(تنازلي))

# ترتيب أسماء
متغير الأسماء = ["زينب"، "أحمد"، "مريم"، "بلال"]
اطبع_سطر(لنص(فرز_مصفوفة(الأسماء)))

شريحة(مصفوفة، بداية، نهاية؟) — استخراج جزء

تستخرج جزءاً من المصفوفة من موقع البداية إلى ما قبل موقع النهاية. إذا لم تُحدَّد النهاية، تستخرج حتى آخر المصفوفة. لا تُعدّل المصفوفة الأصلية.

sad
# تقسيم جدول الصلوات
متغير الصلوات = ["الفجر"، "الظهر"، "العصر"، "المغرب"، "العشاء"]

متغير صلوات_النهار = شريحة(الصلوات، 1، 3)
اطبع_سطر("صلوات النهار: " + لنص(صلوات_النهار))
# ["الظهر"، "العصر"]

متغير صلوات_المساء = شريحة(الصلوات، 3)
اطبع_سطر("صلوات المساء: " + لنص(صلوات_المساء))
# ["المغرب"، "العشاء"]

دوال التحويل

لنص(قيمة) — تحويل إلى نص

تحوّل أي قيمة من أي نوع إلى نص. تدعم الأرقام الصحيحة والعشرية والمنطقية والمصفوفات والقيمة الفارغة. دالة آمنة لا تُرمي أخطاء أبداً.

sad
# تحويل أنواع مختلفة
اطبع_سطر(لنص(42))            # "42"
اطبع_سطر(لنص(3.14))          # "3.14"
اطبع_سطر(لنص(صحيح))          # "true"
اطبع_سطر(لنص([1، 2، 3]))     # "[1, 2, 3]"

# بناء رسالة
متغير العمر = 25
متغير رسالة = "عمر الطالب: " + لنص(العمر) + " سنة"
اطبع_سطر(رسالة)

لرقم(قيمة) — تحويل إلى عدد صحيح

تحوّل القيمة إلى عدد صحيح. النصوص الرقمية تُحوَّل لقيمها العددية، الأعداد العشرية تُبتر (بدون تقريب)، القيم المنطقية تُصبح 0 أو 1، والنصوص غير الرقمية تُرجع 0.

sad
# تحويل مدخلات المستخدم
متغير إدخال_العمر = "25"
متغير العمر = لرقم(إدخال_العمر)
اطبع_سطر(العمر + 1)     # 26

# تحويلات مختلفة
اطبع_سطر(لرقم("123"))    # 123
اطبع_سطر(لرقم(3.14))     # 3
اطبع_سطر(لرقم(صحيح))     # 1
اطبع_سطر(لرقم("hello"))  # 0

لعشري(قيمة) — تحويل إلى عدد عشري

تحوّل القيمة إلى عدد عشري. مماثلة لـ لرقم لكن تُرجع قيمة عشرية بدلاً من صحيحة.

sad
متغير سعر = لعشري("29.99")
اطبع_سطر(سعر * 1.15)    # السعر مع ضريبة القيمة المضافة

لمصفوفة(قيمة) — تحويل إلى مصفوفة

تحوّل القيمة إلى مصفوفة. النصوص تُقسَّم إلى أحرف، الأرقام والقيم الأخرى تُغلَّف في مصفوفة بعنصر واحد، والمصفوفات تبقى كما هي.

sad
# تقسيم نص لأحرف
متغير الأحرف = لمصفوفة("سلام")
اطبع_سطر(لنص(الأحرف))    # ['س', 'ل', 'ا', 'م']

# تغليف قيمة
اطبع_سطر(لنص(لمصفوفة(42)))   # [42]

لمنطقي(قيمة) — تحويل إلى قيمة منطقية

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

sad
اطبع_سطر(لمنطقي(1))       # صحيح
اطبع_سطر(لمنطقي(0))       # خطأ
اطبع_سطر(لمنطقي(""))      # خطأ
اطبع_سطر(لمنطقي("نص"))    # صحيح
اطبع_سطر(لمنطقي([]))      # خطأ

دوال فحص الأنواع

النوع(قيمة) — الحصول على اسم النوع

تُرجع اسم نوع القيمة كنص. مفيدة للتصحيح والتسجيل ولكتابة دوال تتعامل مع أنواع مختلفة.

sad
اطبع_سطر(النوع(42))              # "integer"
اطبع_سطر(النوع(3.14))            # "double"
اطبع_سطر(النوع("مرحبا"))         # "string"
اطبع_سطر(النوع(صحيح))            # "boolean"
اطبع_سطر(النوع([1، 2، 3]))       # "array"

# استخدام عملي
دالة اطبع_نوع(قيمة)
    اطبع_سطر("القيمة: " + لنص(قيمة) + " — النوع: " + النوع(قيمة))
نهاية

اطبع_نوع(100)
اطبع_نوع("السلام عليكم")

هو_رقم_صحيح(قيمة) / هو_رقم_عشري(قيمة) / هو_نص(قيمة) / هو_مصفوفة(قيمة)

دوال فحص تُرجع صحيح إذا كانت القيمة من النوع المطلوب وخطأ خلاف ذلك. مفيدة للتحقق قبل إجراء عمليات تحتاج نوعاً محدداً.

sad
# دالة آمنة تتعامل مع أنواع مختلفة
دالة معالجة(بيانات)
    إذا (هو_مصفوفة(بيانات))
        اطبع_سطر("مصفوفة بها " + حجم_مصفوفة(بيانات) + " عنصر")
    وإلا
        إذا (هو_رقم_صحيح(بيانات))
            اطبع_سطر("عدد صحيح: " + بيانات)
        وإلا
            إذا (هو_نص(بيانات))
                اطبع_سطر("نص: " + بيانات)
            نهاية
        نهاية
    نهاية
نهاية

معالجة(42)
معالجة("الحمد لله")
معالجة([1، 2، 3])

مثال شامل

sad
# نظام درجات الطلاب
اطبع_سطر("=== نظام درجات حلقة التحفيظ ===")

متغير الأسماء = ["عبدالله"، "فاطمة"، "إبراهيم"، "آمنة"، "عثمان"]
متغير الدرجات = [92، 88، 95، 78، 85]

# حساب المعدل
متغير المجموع = 0
لكل درجة في الدرجات
    المجموع = المجموع + درجة
نهاية
متغير المعدل = لعشري(المجموع) / حجم_مصفوفة(الدرجات)

اطبع_سطر("عدد الطلاب: " + حجم_مصفوفة(الأسماء))
اطبع_سطر("المعدل العام: " + لنص(تقريب(المعدل)))

# الطلاب المتفوقون (فوق 90)
اطبع_سطر("")
اطبع_سطر("الطلاب المتفوقون:")
متغير رقم = 0
لكل اسم في الأسماء
    إذا (الدرجات[رقم] >= 90)
        اطبع_سطر("  ⭐ " + اسم + " — " + الدرجات[رقم])
    نهاية
    رقم = رقم + 1
نهاية

# الترتيب حسب الدرجة
متغير مرتبة = فرز_مصفوفة(الدرجات، خطأ)
اطبع_سطر("")
اطبع_سطر("الدرجات مرتبة تنازلياً: " + لنص(مرتبة))

مُرخَّص بموجب رخصة MIT