دايـة:
لقد تقدمنا كثيراً في السي بلس بلس بعـد مواضيع المؤشرات والمصـفوفات
وربما لم يبقـى لنـا سـوى عــدة مواضـيع حتـى ننتقـل إلـى مرحلـة البرمجــة
الكائنيـة وأحد أهـم هذه المواضيع هـي التوابع.
تقوم البرمجـة الهيكلية علـى عــدة توابـع بـدلاً مـن تـابع واحـد هــو ( )main ؛
وبإمكـانك بعد هذا الموضوع تجـزئـة برنامجك إلـى عــدة توابـع كـل تـابع منهـا
يقوم بوظيفـة محددة ثم يسلمها للآخر بعـد أن يكون قد أتجز ما هـو مطلـوب ؛
ومن الممكن النظر إلى التوابع على أنها عبارة عـن إتحاد عـدة أوامـر برمجيــة
في كتلة واحدة ولهذا الإتحاد وظيفـة معـينة يقوم بأدائهـا وبالتـالي فسيصـبح
بإمكـانك الاستفادة من هذه التوابـع فـي جميـع برامجـك ، فكمـا رأيـت إحـدى
توابع المكتبة الرياضيــة math ومـا تقـوم بـه مـن أعــمال ، بإمكــانك أن تقـوم
بصنع توابع وضمها في مكتبـة واحـدة ، وأيضـاً فعــن طريـق التوابـع بإمكــانك
تجزئـة عـمل برنامجك إلى أجزاء كثيرة وصغيرة للغايـة بدلاً مـن أن تكـون فـي
تابع واحد هـو main ؛ وبصراحـة فإن أغلب البرامج تركت أسلوب التجزئة إلـى
توابع وأبدلتـه بتقسيم البرنامج إلى كائـنات والكائنــات نفسـها تشـتمل علـى
توابع كثيرة ، من الضروري للغايـة أن تـدرك أهــمية هـذه الوحـدة إذا مـا أردت
التقدم في البرمجـة فأولاً هـي مـدخل إلـى الكائنــات وثانيـاً هــي أحـد أهــم
مواضيع لغـة السي (ليس السي بلس بلس) والتي لـم تفقـد أهــميتها إلـى
الآن.
بعد هذه المقدمـة البسيطـة سندخل في إختصاص هذه الوحدة.
أساسيات التوابع:
لنلقي نظرة بسيطـة على التابع ( )main ؛ ستجد أنـه مكون من ثلاثـة أشياء
كما هـي موضحـة هـنا:
CODE
int main ( )
{
statment1;
statment2;
statment3;
return 0;
}
كما ترى فإن للتابع ( )main ثلاثـة أجزاء ؛ الأول هـو الرأس والثاني هـو جسم
التابع الذي بين القوسين والثالث هـو القيمـة المعادة للتابع وتكتب هكذا:
return 0
لفهـم أفضل لما نقول فسنمضـي قدماً في كتابة تابع يقوم بجمع عـددين
يدخلهـما المستخدم.
CODE
1. #include <iostream>
2. using namespace std;
3.
4. int max (int m,int g)
5. {
6. if (m>g)return m;
7. else if (m<g)return g;
8. else return g;
9. }
10.
11. int main()
12. {
13. int num1,num2;
14. cin>>num1;
15. cin>>num2;
16. int max1=max(num1,num2);
17. cout << max1 << endl;
18. return 0;
19. }
كما ترى من السطر 4 إلى 9 فلقد قمنا بكتابة تابع أطلقنا عليه إسم max
وكما ترى في السطر الرابع فإن التابع يعيد قيمـة من النـوع int ويستقبل
عـددين اثنين من النـوع int
لقد تقدمنا كثيراً في السي بلس بلس بعـد مواضيع المؤشرات والمصـفوفات
وربما لم يبقـى لنـا سـوى عــدة مواضـيع حتـى ننتقـل إلـى مرحلـة البرمجــة
الكائنيـة وأحد أهـم هذه المواضيع هـي التوابع.
تقوم البرمجـة الهيكلية علـى عــدة توابـع بـدلاً مـن تـابع واحـد هــو ( )main ؛
وبإمكـانك بعد هذا الموضوع تجـزئـة برنامجك إلـى عــدة توابـع كـل تـابع منهـا
يقوم بوظيفـة محددة ثم يسلمها للآخر بعـد أن يكون قد أتجز ما هـو مطلـوب ؛
ومن الممكن النظر إلى التوابع على أنها عبارة عـن إتحاد عـدة أوامـر برمجيــة
في كتلة واحدة ولهذا الإتحاد وظيفـة معـينة يقوم بأدائهـا وبالتـالي فسيصـبح
بإمكـانك الاستفادة من هذه التوابـع فـي جميـع برامجـك ، فكمـا رأيـت إحـدى
توابع المكتبة الرياضيــة math ومـا تقـوم بـه مـن أعــمال ، بإمكــانك أن تقـوم
بصنع توابع وضمها في مكتبـة واحـدة ، وأيضـاً فعــن طريـق التوابـع بإمكــانك
تجزئـة عـمل برنامجك إلى أجزاء كثيرة وصغيرة للغايـة بدلاً مـن أن تكـون فـي
تابع واحد هـو main ؛ وبصراحـة فإن أغلب البرامج تركت أسلوب التجزئة إلـى
توابع وأبدلتـه بتقسيم البرنامج إلى كائـنات والكائنــات نفسـها تشـتمل علـى
توابع كثيرة ، من الضروري للغايـة أن تـدرك أهــمية هـذه الوحـدة إذا مـا أردت
التقدم في البرمجـة فأولاً هـي مـدخل إلـى الكائنــات وثانيـاً هــي أحـد أهــم
مواضيع لغـة السي (ليس السي بلس بلس) والتي لـم تفقـد أهــميتها إلـى
الآن.
بعد هذه المقدمـة البسيطـة سندخل في إختصاص هذه الوحدة.
أساسيات التوابع:
لنلقي نظرة بسيطـة على التابع ( )main ؛ ستجد أنـه مكون من ثلاثـة أشياء
كما هـي موضحـة هـنا:
CODE
int main ( )
{
statment1;
statment2;
statment3;
return 0;
}
كما ترى فإن للتابع ( )main ثلاثـة أجزاء ؛ الأول هـو الرأس والثاني هـو جسم
التابع الذي بين القوسين والثالث هـو القيمـة المعادة للتابع وتكتب هكذا:
return 0
لفهـم أفضل لما نقول فسنمضـي قدماً في كتابة تابع يقوم بجمع عـددين
يدخلهـما المستخدم.
CODE
1. #include <iostream>
2. using namespace std;
3.
4. int max (int m,int g)
5. {
6. if (m>g)return m;
7. else if (m<g)return g;
8. else return g;
9. }
10.
11. int main()
12. {
13. int num1,num2;
14. cin>>num1;
15. cin>>num2;
16. int max1=max(num1,num2);
17. cout << max1 << endl;
18. return 0;
19. }
كما ترى من السطر 4 إلى 9 فلقد قمنا بكتابة تابع أطلقنا عليه إسم max
وكما ترى في السطر الرابع فإن التابع يعيد قيمـة من النـوع int ويستقبل
عـددين اثنين من النـوع int
بالنسبة للتابع ( )main ؛ فإنه يطلب من المستخدم إدخال عــددين اثنـين ثـم
في السطر 16 يقـوم بـالإعلان عــن متغيـر جديـد هــو max1 ويقـوم بتهيئتــه
بالقيمـة المعـادة للتـابع max ؛ وكمـا تـرى فلقـد قمنـا بتمريـر العــددين الـذين
أدخلهـما المستخدم وهـما num1 و num2 ، وبالطبع ينتقل التنفيذ إلى التـابع
max فـي السـطر 4 ، وإذا وصـل إلـى السـطر 9 فإنــه يأخـذ القيمــة المعـادة
ويهيـئ بهـا المتغيـر max1 ؛ لعلـك الآن تتسـاءل حــول إخـتلاف الأسـماء فـي
المتغيرات بين التابع max والتابع الرئيسي main ؛ في الحقيقـة فإنــه حينمـا
يصل التنفيذ إلى السطر 16 وبالتحـديد لدى هذه الجملـة :
max (num1 , num2);
فإن البرنامج يأخذ معـه المتغيران num1 و num2 ، وينتقل بهـما إلـى السـطر
4 ، وحينما يصل إلى السطر 4 ؛ فإن الترجمـة تكاد تكـون أشبه بما يلي:
m = num1;
g = num2;
بمساواة الوسائط الممررة بأول سطر للتابع.
في السطر 16 يقـوم بـالإعلان عــن متغيـر جديـد هــو max1 ويقـوم بتهيئتــه
بالقيمـة المعـادة للتـابع max ؛ وكمـا تـرى فلقـد قمنـا بتمريـر العــددين الـذين
أدخلهـما المستخدم وهـما num1 و num2 ، وبالطبع ينتقل التنفيذ إلى التـابع
max فـي السـطر 4 ، وإذا وصـل إلـى السـطر 9 فإنــه يأخـذ القيمــة المعـادة
ويهيـئ بهـا المتغيـر max1 ؛ لعلـك الآن تتسـاءل حــول إخـتلاف الأسـماء فـي
المتغيرات بين التابع max والتابع الرئيسي main ؛ في الحقيقـة فإنــه حينمـا
يصل التنفيذ إلى السطر 16 وبالتحـديد لدى هذه الجملـة :
max (num1 , num2);
فإن البرنامج يأخذ معـه المتغيران num1 و num2 ، وينتقل بهـما إلـى السـطر
4 ، وحينما يصل إلى السطر 4 ؛ فإن الترجمـة تكاد تكـون أشبه بما يلي:
m = num1;
g = num2;
بمساواة الوسائط الممررة بأول سطر للتابع.
ليست هناك تعليقات:
إرسال تعليق