09-14-2007, 10:39 PM
الدوال --1--#Methods in c - دروس سى شارب C# - دروس السى شارب C#
الدوال --1--#Methods in c
<!-------------------><!--مقطع البدايه----->
<!--------------------><!--الخبر الرئيسي----->
وهذه الـ
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
M
ethod-
N
ame( 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.
أما النوعين الأخيرة من الدوال تابعوها بالدرس القادم والسلام عليكم
الدوال --1--#Methods in c - دروس سى شارب C# - دروس السى شارب C#
الدوال --1--#Methods in c
<!-------------------><!--مقطع البدايه----->
<!--------------------><!--الخبر الرئيسي----->
كما هو معروف في أي لغة برمجة إذا واجهتنا أي مشكلة كبيرة فإن أفضل طريقة لحلها هي تقسيمها لمجموعة من الأجزاء الصغيرة أو ما يعرف بال module
أو
function
"الدّوال "
بحيث كل منها تؤدي وظيفة معينة ...ويعرف هذا التكنيك عادة بـما يسمى بـ divide and conquer ...
أو
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
M
ethod-
N
ame( 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.
أما النوعين الأخيرة من الدوال تابعوها بالدرس القادم والسلام عليكم
الدوال --1--#Methods in c - دروس سى شارب C# - دروس السى شارب C#