الدرس التاسع 9: الفنكشن function تعريفه وانواعه

function

الفنكشنن  function   او الوظيفه :

 يستخدم لتجزئه اعمال البرنامج ,  فمثلا يمكن كتابه function يجد اكبر قيمه و اخر يجد اصغرها وواحد يعين للمتغيرات قيم وهاكذا
والفائده منه هي كتابه كل جزء من برنامجك على حده بشكل مستقل وبالنهايه الربط بهم داخل داله ال main

 ان داله ال main  هي اساساً عباره عن function فنكشن  الا انها تعتبر ال function الرئيسيه في البرنامج كلماتها محجوزه في لغة c++  , وانها هي الوحيده التي تنفذ في البرنامج لذلك نقوم بعمل استدعاء لل function الاخر داخلها ليقوم بعمله .



الفنكشن function  يكتب على شكلين :

  1. الاول اذا كان اسفل داله ال main 
  1. الثاني اذا كان اعلى داله ال main


لكتابه الفنكشن نحتاج الى ثلاث خطوات او نقاط رئيسيه  وهي :

  1. التعريف بالفنكشن قبل داله ال main  اذا اردنا ان نكتب الفنكشن تحت ال main
  2.  استدعاء الفنكشن Function Call داخل ال main  ليقوم بعمله في موقع استدعاءه
  3. كتابه الفنكشن function  سواء كان فوق او تحت داله ال main (اي الشكل العام )



1-  التعريف لافنكشن :

 وهنا نستخدمه فقط اذا كنا سنكتب الفنكشن اسفل ال main  كي لا يعطي خطا على استدعاء الفنكشن  غير ذلك لاحاجه له
الشكل العام له  :      ;   (القيم التي سوف يتلقاها الفنكشن مع نوعها  )   اسم الفنكشن    نوع القيمه الراجعه 

مثال على ذلك :

void fun(int  x);          أو    int fun (int   x);


  • حيث ان القيمه الراجعه تمثل ما اذا كان هاذا الفنكشن يعود بقيمه او لا , وهنا يجب ان ننوه انه من هاذه الناحيه لدينا نوعين من الفنكشن   وهو ما لايعود بقيمه ونوعه void   او ان يعود بقيمه من القيم المتعارف عليها   int, double ,string ,char     ...الخ 

  • ثم ياتي اسم الفنكشن ويتم تسميته كما هي قوانين تسمية المتغيرات في الدرس  الثاني 

  • ثم القوسين  ويوضع داخلهما القيمه او المتغير المبعوث من داله ال main   لهاذا الفنكشن مع نوع هادا المتغير او القيمه    وربما لانبعث شيئ فتبقى الاقواس فارغه    ويسمى هاذا بال بارميتر  Parameter 
ويمكن بعث قيمتين مختلفتين حيث نفصل بفاصله بينهم مثل : (int x ,char a)

لاننسى الفاصله المنقوطه لانها جمله تعريف تعتبر

2-  استدعاء الفنكشن :

كما ذكرنا سابقا ان البرنامج ينفذ فقط ال main   فلابد من شيء يربط الفنكشنات الاخرى بال main  لكي يتم تنفيذها , لذلك فإننا نستخدم مايسمى ب استدعاء الفنكشن Function Call 

ويكتب بالصوره التاليه ::    (المتغيرات المبعوثه للفنكشن )   اسم الفنكشن 

 مثال   ::    fun(x);         او       fun(x,y,z);

 كما نلاحط اسم الفنكشن ثم قوسين البراميترParameter   واذا كان اكثر من متغير نفصلهم بفاصله ,, من هنا يربط الاستدعاء ب براميترParameter  التعريف لدى الفنكسن 


2-  كتابه الفنكشن (الشكل العام ):

عادي جدا , كما تكتب داله ال main   

زد على تعريف الفنكشن (1)    الاقواس التي سوف تكتب عمل الفنكشن داخلها   مثلا 

void fun(int  x){

 هنا عمل الفنكشن بين القوسين 

}


لكن اذا كانت الفنكشن تعود بقيمه فيجب كتابه جمله return  في النهايه حيث ان هاذه هي التي سوف تعيد القيمه مثلا ::


int fun(int  x){

x=50;                                                                  هنا تخزين رقم 50  الى اكس ليتم اعادته 
return x;                                             هنا سيعيد قيمه اكس في موقع استدعاء الفنكشن داخل ال مين

}



ملاحظات  : 

  1. الافتراضي للفنكشن انها تاخذ نسخه عن قيمه المتغير المبعوث لها  , وللتعامل مع المتغر مباشره نستخدم الاشاره & قبل اسم المتغير في البراميتر
  2. اشاره & هي اشاره العنوان Address  هي اشاره للتعامل مع الموقع مباشره  ولس مع القيمه  اي انه سوف تحدث فرق للفنكشن  اذا استقبلت موقع المتغير ام قيمته
  3. ونستخدم اشاره ال Address  اذا اردنا تعبئه متغيرات ف بهاذه الحاله نحتاج التعامل مع موقع المتغير مباشره 
  4.  اما مثلا لو فنكشن  يطبع قيمه المتغير فنحن لسنا بحاجه الى استخدام Address  لان الفنكشن سوف ياخذ نسخه عن هاذا المتغير  ويطبعه ( اي لانحتاج التعديل عليه ) 


فنكشن يعود بقيمه :


 #include <iostream>
#include <string>
using namespace std ;
int  fun (int x,int y ){

int a=x*y;

return a;
}

void main (){
int x=5 ,y=2;
int p=fun(x,y);
cout<<p <<endl;
system("pause");  
}




فنكشن لايعود بقيمه :يعدل على نسخه من المتغيرين ويطبعهم 

 #include <iostream>
#include <string>
using namespace std ;
void   fun (int x,int y ){

x=0;y=0;
cout<<x<<endl<<y <<endl;

}

void main (){
int x=50 ,y=40;
fun(x,y);
cout<<x<<endl<<y <<endl;
system("pause");  
}



فنكشن لايعود بقيمه ::
 يعدل على قيمه الموقع مباشره باستخدام العنوان &


 #include <iostream>
#include <string>
using namespace std ;
void   fun (int &x,int &y ){

x=0;y=0;
cout<<x<<endl<<y <<endl;

}

void main (){
int x=50 ,y=40;
fun(x,y);
cout<<x<<endl<<y <<endl;
system("pause");  
}




فنكشن فوق ال main  

 #include <iostream>
#include <string>
using namespace std ;
void   fun (int a ){
cout<<a<<endl;

}

void main (){
int x=50 ;
fun(x);

system("pause");  
}





فنكشن من النوع تخت ال main 


 #include <iostream>
#include <string>
using namespace std ;
void   fun (int x );

void main (){
int x=50 ;
fun(x);

system("pause");  
}

void   fun (int x ){

cout<<x<<endl;
}


Comments

  1. Thanks for sharing. It is very useful article;please visit us at our website :
    http://www.univ-mosta.dz/flaa/

    ReplyDelete

Post a Comment

Popular posts from this blog

الدرس السابع 7: جمله الشرط Switch في لغه c++

الدرس الثالث عشر 13: القيمه العشوائيه rund في c++