Skip to content

المولدات

المولد (Generator) هو دالة خاصة تُنتج قيماً واحدة تلو الأخرى باستخدام الكلمة المفتاحية أنتج. بدلاً من إرجاع كل النتائج دفعة واحدة، المولد "يتوقف مؤقتاً" عند كل أنتج ثم يكمل من حيث توقف.

التركيب الأساسي

sad
مولد دالة عدّ(من، إلى)
  متغير ن = من
  بينما (ن <= إلى)
    أنتج ن
    ن += 1
  نهاية
نهاية

# الاستخدام مع لكل
لكل رقم في عدّ(1، 5)
  اطبع_سطر(رقم)   # 1 2 3 4 5
نهاية

متى تستخدم المولدات؟

الحالةلماذا مولد؟
بيانات كبيرة جداًلا تحتاج تحميلها كلها في الذاكرة
تسلسلات لا نهائيةمستحيل إنشاء مصفوفة لا نهائية
معالجة تدريجيةمعالجة كل عنصر فور إنتاجه
أداء أفضلبدء فوري دون انتظار إنتاج الكل

مولد لا نهائي

sad
مولد دالة أرقام_لا_نهائية(من = 0)
  متغير ن = من
  بينما (صحيح)
    أنتج ن
    ن += 1
  نهاية
نهاية

# خذ أول 5 فقط
لكل رقم في أخذ(أرقام_لا_نهائية()، 5)
  اطبع_سطر(رقم)   # 0 1 2 3 4
نهاية

مثال عملي: مولد فيبوناتشي

sad
مولد دالة فيبوناتشي()
  متغير أ = 0
  متغير ب = 1
  بينما (صحيح)
    أنتج أ
    متغير مؤقت = أ + ب
    أ = ب
    ب = مؤقت
  نهاية
نهاية

# أول 10 أرقام فيبوناتشي
لكل ف في أخذ(فيبوناتشي()، 10)
  اطبع(ف + " ")   # 0 1 1 2 3 5 8 13 21 34
نهاية

الفرق بين ارجع وأنتج

  • ارجع تنهي الدالة نهائياً وتُرجع قيمة واحدة
  • أنتج تُرجع قيمة ثم "تتوقف مؤقتاً" — الدالة تكمل من نفس النقطة عند الطلب التالي

نهاية نهاية

أول 10 أعداد أولية

لكل عدد في أخذ(الأعداد_الأولية()، 10) اطبع_سطر(عدد) نهاية

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