دالة المضروب
📄 الأصل: function-declaration-factorial.na
📦 تحميل الملف: ⬇ تحميل
🔗 عرض الملف:
--- SPDX-License-Identifier: Apache-2.0
--- Copyright © The Naftah Project Authors
---*
هذا القسم يحتوي على تعريفات متعددة لدالة "المضروب" (العامل)، باستخدام العودية (التعريف الذاتي)، بلغة برمجة نفطه.
تشمل هذه التعريفات ما يلي:
١. دالة عودية لحساب المضروب:
- تُستخدم العودية لتكرار العملية الحسابية.
- تحتوي على شرط وقف لمنع الاستدعاءات اللانهائية.
- تُرجع 1 عندما يكون العدد ≤ 1، وتستدعي نفسها مع العدد - 1 في الحالة الأخرى.
٢. استدعاءات لاختبار الدالة:
- استدعاء مع القيمة 1 للتحقق من صحة التنفيذ.
- استدعاء بدون معامل، والذي قد يؤدي إلى خطأ إن لم تكن هناك قيمة افتراضية معرفة (تُستخدم القيمة 10 كافتراضية في هذا السياق).
٣. دالة مضروب محسنة:
- تحتوي على دالة داخلية (محلية) تطبع الرقم قبل كل استدعاء.
- تُستخدم لأغراض التتبع أو الفهم البصري لتسلسل الاستدعاءات العودية.
- تعزز مبدأ "التجريد" عبر فصل مسؤولية الطباعة عن الحساب.
الهدف من هذا المثال هو:
- توضيح كيفية بناء دوال عودية باستخدام بناء جملة عربي مبسط.
- إبراز مفاهيم مثل القيم الافتراضية، الدوال الداخلية، والشرط العودي.
*---
---* دالة لحساب المضروب (العامل) لعدد معين باستخدام العودية *---
دالة دالة_المضروب(عدد_مضروب تعيين 10) : عدد_طويل {
--- إذا كان العدد أقل من أو يساوي 1، أرجع 1 (شرط الوقف)
إذا عدد_مضروب أصغر_أو_يساوي ١ إذن {
ارجع 1
}
أنهي
--- استدعاء ذاتي لحساب المضروب
ارجع عدد_مضروب ضارب دالة_المضروب(عدد_مضروب ناقص 1)
}
--- اختبار الدالة باستدعائها مع 1
دالة_المضروب(1)
--- استدعاء بدون معامل (قد يؤدي إلى خطأ إذا لم يكن هناك قيمة افتراضية)
دالة_المضروب()
---* دالة مضروب تحتوي على دالة داخلية لطباعة القيمة في كل استدعاء *---
دالة دالة_المضروب(عدد_مضروب تعيين 10) : عدد_طويل {
--- تعريف دالة داخلية لطباعة الرقم
دالة دالة_المضروب_إطبع(عدد_مضروب) : عدم {
إطبع(عدد_مضروب)
}
--- استدعاء دالة الطباعة قبل الحساب
دالة_المضروب_إطبع(عدد_مضروب)
--- شرط الوقف: إذا العدد <= 1، أرجع 1
إذا عدد_مضروب أصغر_أو_يساوي ١ إذن {
ارجع 1
}
أنهي
--- حساب المضروب بشكل عودي
ارجع عدد_مضروب ضارب دالة_المضروب(عدد_مضروب ناقص 1)
}