Skip to content

الفصل 18: البرمجة الوظيفية

المستوى: متقدم | البرمجة الوظيفية: الدوال النقية، map/filter/reduce، التركيب، الكاري

18.1 الدوال النقية

دالة نقية: نفس المدخلات تعطي دائماً نفس المخرجات، بدون تأثيرات جانبية.

sad
# ✅ دالة نقية
دالة مربع(ن)
    ارجع ن * ن
نهاية

# ❌ دالة غير نقية (تعدل حالة خارجية)
متغير عداد = 0
دالة زد()
    عداد = عداد + 1
    ارجع عداد
نهاية

18.2 Map / Filter / Reduce

sad
متغير أرقام = [1، 2، 3، 4، 5]

# Map — تحويل كل عنصر
دالة حوّل(مصفوفة، دالة_تحويل)
    متغير نتيجة = []
    لكل عنصر في مصفوفة
        نتيجة.أضف(دالة_تحويل(عنصر))
    نهاية
    ارجع نتيجة
نهاية

# Filter — تصفية
دالة صفّي(مصفوفة، شرط)
    متغير نتيجة = []
    لكل عنصر في مصفوفة
        إذا (شرط(عنصر))
            نتيجة.أضف(عنصر)
        نهاية
    نهاية
    ارجع نتيجة
نهاية

# Reduce — تجميع
دالة اختزل(مصفوفة، دالة_تجميع، قيمة_أولية)
    متغير نتيجة = قيمة_أولية
    لكل عنصر في مصفوفة
        نتيجة = دالة_تجميع(نتيجة، عنصر)
    نهاية
    ارجع نتيجة
نهاية

متغير مربعات = حوّل(أرقام، لامدا(ن) ارجع ن * ن نهاية)
متغير زوجية = صفّي(أرقام، لامدا(ن) ارجع ن % 2 == 0 نهاية)
متغير مجموع = اختزل(أرقام، لامدا(ت، ن) ارجع ت + ن نهاية، 0)

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