|
الدوال --1--#Methods in c
كما هو معروف في أي لغة برمجة إذا واجهتنا أي مشكلة كبيرة فإن أفضل طريقة لحلها هي تقسيمها لمجموعة من الأجزاء الصغيرة أو ما يعرف بال module أو function "الدّوال " بحيث كل منها تؤدي وظيفة معينة ...ويعرف هذا التكنيك عادة بـما يسمى بـ divide and conquer ...
وهذه الـ module أو الـ function الدوال تعرف في ال #C بما يسمى بـ Method و Classes , والمبرمج يستطيع كتابة الـ Method لتعريف مهام معينة ومن ثم يستدعيها ( calling ) من أي نقطة من البرنامج بمجرد ذكر اسمها لكي يتم تنفيذها عند تلك النقطة ...
لذا فإن الدوال "Methods" في ال #C هي محور حديثنا في هذا الدرس :
فالمبرمج إما أن يقوم بكتابة الـmethod بنفسه عندها تسمى (user-defined method), أو أن يقوم باستخدام دوال معرفة في نفس اللغة( build in ) و كل ما عليه هو استدعاءها عندما يحتاج إليها ليستخدمها في برنامجه ...و سنتعرف في درس اليوم إنشاء الله كيف يمكننا إنشاء هذه ال user-defined method ومن ثم استدعائها في البرنامج..
و سأستكمل الحديث باعتبار أن القارئ الكريم لديه خبرة ولو قليلة للتعامل مع #C ...لنلق الآن نظرة على الصورة العامة لكتابة أي method في #C :
access_ Modifier return-value-type Method-Name( parameter-list )
{
declarations and statements
}
السطر الأول من تعريف الـ method يسمى بال method header ويحتوي على كل من :
access modifier :.
method-name : اسم الدالة التي نريد تعريفها , وقواعد كتابة الاسم هنا يتبع نفس شروط كتابة أسماء المتغيرات وطبعا سيكون الاسم اختياري .
return-value-type : نوع النتيجة التي ستعود بها الدالة والدالة إذا كانت تعود بقيمة فإنها لا تعود بأكثر من قيمة واحدة ,,, مثلا إذا كانت الدالة تعود بقيمة integer فإننا سنكتب في هذه الخانة int ,وهكذا. أما في حالة عندما لا تعود الدالة بقيمة فإننا نكتب هنا void .
parameter-list : هي القيم التي نقوم بإرسالها للدالة ,,,,,,,,,,وستتعرف عليها أكثر عندما نشرح أنواع الدوال .
أما بالنسبة للـ declarations and statements : فهي الأوامر التي تقوم هذه الدالة بتنفيذها .
والدوال في أي لغة لها أربع أنواع سأطرح كل نوع مع تطبيق مثال عليه :
1-الدالة التي لا تعود بقيمة ولا تستقبل أي "parameter": أي لا تستقبل أي قيمة......
و المعنى سيتضح من خلال المثال :

وهنا الـ access Modifier هي static ...
وبما أن الدالة لا تعود بقيمة فسنكتب void عند الـ return-value-type ...
وبما أن الدالة لا تستقبل أي قيمة فسنكتب القوسين فارغة ...!
وهنا الدالة تؤدي وظيفة سهلة للغاية مجرد أنها تطبع الرسالة " !! FirstMethod was called " فور مناداتها ..إذن لابد من مناداة الدالة " calling " حتى تطبع الرسالة .. لكن كيف يتم استدعاء أي دالة ؟؟
بمجرد ذكر اسم الدالة فقط فإنه سيتم تنفيذها ....كالتالي:

والبرنامج كاملا :

لاحظ في البرنامج أننا قمنا في السطر 6 بإنشاء الدالة FirstMethod واستدعائها في السطر 14 من داخل الـ Main حيث أن نقطة بداية البرنامج هي من بعد ال Main مباشرة ....
/* ضع في اعتبارك أنه لا معنى من إنشاء دالة دون استدعائها */...
2- الدالة التي تستقبل قيمة "parameter " ولكنها لا تعود بقيمة :
والمثال التالي يوضح الفكرة في البداية لننشئ الدالة كالتالي :

الدالة هنا تستقبل قيمة parameter إذن سنكتب بين القوسين اسم أي متغير يستقبل هذه القيمة التي ستدخل للدالة وطبعا سنكتب نوع لهذا المتغير ونوعه بلا شك سيكون من نفس نوع القيمة المراد تمريرها للدالة والتي سيحتفظ بها المتغير. وكما هو واضح فإن الدالة تستقبل القيمة المخزنة في x ثم تحسب نتيجة ضربها مع العدد 10 وتخزن النتيجة مرة أخرى في x ومن ثم تطبع النتيجة ..
فقط تبقّى مناداة الدالة حتى تنفذ عملها لكن يبدو أننا هنا لا بد و أن نرسل قيمة لهذه الدالة لكي تقوم بعملها وطبعا القيمة التي سنرسلها ستكون من النوع integer ....

بمجرد بدء البرنامج في التنفيذ "كما ذكرت نقطة البداية هي من عند الـ Main " فإنه بمجرد ما يواجه المترجم الـ"compiler " الجملة ;(5) SecondMethod فإنه يبحث عن الدالة التي تحمل هذا الاسم ويمرر لها القيمة الموجودة بين القوسين وهي 5 ,,,,يدخل العدد 5 إلى الدالة ليحل محل المتغير x ,ويتم إجراء العملية الحسابية ويتم طباعة النتيجة على الشاشة ..
و بما أن الدوال يمكن مناداتها أكثر من مرة داخل البرنامج ,,,إذن جرب أن تكتب جملة الاستدعاء التالية :

فهنا قمنا بمناداة نفس الدالة SecondMethod ولكن مع قيمة أخرى 6 ستتكرر نفس العملية السابقة ولكن مع تغير الparameter وبالتالي ستتغير النتيجة :
البرنامج كاملا :

وستكون المخرجات كالتالي :

بحيث أن السطر الأول في المخرجات هو نتيجة مناداة الدالة المرة الأولى في السطر 15, والسطر الثاني نتيجة مناداتها المرة الثانية في السطر 16.
أما النوعين الأخيرة من الدوال تابعوها بالدرس القادم والسلام عليكم
المزيد من المواضيع
Regular Expression --2
Regular Expression --1
مدخل إلى البرمجة غرضيّة التوجّه في السي شارب
ربط الفلاش بالــ #C
الدوال --2--#Methods in c
السيطرة على الأخطاء Exception Handling
المؤشرات في سي شارب
التحويل العلني- Explicit Conversion
تحويل الأنواع - التحويل الضمني
المتغيرات - Variables
أنواع البيانات – Data Types
::البرنامج الأول في C#::
مقدمة عن #C
::نقاط مهمة في C#::
فتح ملفات الملتيميديا في برنامجك !!
التعامل مع الملفات File Stream
|