سنستكمل في هذا الدرس إنشاء الله النوعين الأخرى للدوال " Method " في #C ..
3- الدوال التي لا نمرر لها parameters ولكن تعود بقيمة :
ومعنى أن الدالة لا تمرر ''أو لا تستقبل'' parameter أنه عند إنشاء الدالة القوسين ستكون فارغة ( ) أي أنه لا توجد قيمة تريد الدالة استقبالها .
معنى أن الدالة تعود بقيمة أي عندما ننشئ الدالة سنستخدم keyword هي
return وتكون متبوعة بالقيمة التي تعود بها الدالة .ولا تنسى أنه يجب أن تكتب في الـ
Method header نوع القيمة التي ستعود بها الدالة في خانة الـ
return _value _type ...
دعنا ننشي الدالة ونرى لنتفق أولا على وظيفة هذه الدالة .........مثلا نريد الدالة أن تطبع لنا الشكل التالي :
العملية سهلة للغاية أولا سأكتب الأوامر التي تطبع لي الشكل السابق ثم سأضعها داخل method :
أولا أنشأنا متغير اسمه output من النوع string , وأسندنا له قيمة فارغة .
بعد ذلك بدأنا في التكرار الأول "for " يبدأ من القيمة 1 ويزيد في كل مرة بمقدار 1 حتى يصل للقيمة 4 ....
في الدورة الأولى:
التكرار الأول count =1 ,
يدخل للتكرار الثاني تكون j = 1 فيقوم بتخزين الحرف " * " داخل المتغير output بطريقة مشابهة للتالي :
output = output + "* " >> output = " " + "* " = "* ";
تزيد قيمة j لتصبح j = 2 فيكرر نفس العملية:
output = output + "* " >> output = "* " + "* " = "* * ";
عندما j = 3:
output = output + "* " >> output = "* * " + "* " = "* * * ";
عندما j = 4 :
output = output + "* " >> output = "* * * " + "* " = "* * * * ";
عندها يتوقف التكرار الداخلي فيقوم بتنفيذ الجملة :
output = output + " \n "; >> output= "* * * * " + " \n ";
أي اطبع سطر جديد \n
وبعدها سيزيد قيمة التكرار الأول ليصبح count = 2 : ويكرر التكرار الداخلي 4 مرات مثل المرة السابقة تماما ثم يطبع سطر جديد ..
والتكرار الخارجي يستمر حتى تصبح قيمة الـ count أكبر من 4 عندها يتوقف التكرار وتصبح قيمة الـ output محتفظة بالشكل التالي :
* * * * ; * * * * ; * * * * ; * * * *
بقي فقط أن ننشئ الدالة التي تنفذ الأوامر السابقة مع الوضع في الاعتبار أننا نريد الدالة تعود بقيمة المتغير output السابق :
وطبعا إذا أردنا تنفيذ الدالة من أي نقطة في البرنامج كل ما علينا هو فقط مناداتها كالتالي :
لكن الدالة ThirdMethod السابقة تعود بقيمة إذن يجب علينا عندما نستدعيها أن نخزن القيمة التي تعود منها في متغير وهذا المتغير له نفس نوع الـ
return _value _type في الدالة نفسها إذن سنعرف أي متغير له النوع
string لكي نخزن فيه نتيجة الدالة
ThirdMethod ليصبح استدعاء الدالة صحيحا كالتالي :
بعد ذلك عندما تقوم بطباعة القيمة
result ستطبع بذلك نتيجة الدالة
ThirdMethod ......
البرنامج كاملا:
4- النوع الرابع والأخير هي الدوال التي تستقبل "تمرر " parameter وتعود بقيمة :
لنطبق على نفس الدالة السابقة لكن مع تغيير بسيط هي أن عدد الـ " * " سنرسلها للدالة أي أن الرقم 4 الموجود في التكرارين نريد أن نجعله متغيرا يستقبل القيمة أثناء مناداة الدالة ..
طبعا ال
parameter الذي نريد وضعه للدالة أثناء إنشاءها سيكون نوعه
int لأنه سيستقبل رقم ....ونضع له أي اسم اختياري ....نعيد كتابة الدالة السابقة
وبالتالي لكي ننادي الدالة يجب أن نرسل لها قيمة ليتم وضعها بدلا من المتغير x :
ال
compiler بمجرد ما تواجهه جملة الاستدعاء السابقة فإنه يبحث عن الدالة التي تحمل الاسم
ThirdMethod ويمرر لها الرقم 4 ليحل في مثالنا هذا محل المتغير x ,و تجري الدالة العمليات التي بداخلها كما شرحناها مسبقا ثم في النهاية تعود بقيمة المتغير
output الذي سيتم تخزينه في المتغير
result في النهاية ....
و لك أن تجرب وتضع أي رقم بدل 4 ثم ترى الفرق بنفسك والبرنامج كاملا :
وبذلك نكون قد غطينا الأربعة أنواع لأي دالة في الـ #C أو أي لغة برمجة أخرى