فتى الشوتوكان

درووووووس في الFunction

17 ردود في هذا الموضوع

السلام عليكم ورحمة الله وبركاته .

بما انه الكثير من الشباب السنة الأولى الآخذين للبرمجة 1 بلشو بالFunction شو رأي أخواننا العباقرة ادراج دروس على هذا الموقع ...

وذلك لمساعدتنا في فهم اوامر هذا function

لإنه لاحظت غستصعاب الكثير الكثير له .؟

وشكرا

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

السلام عليكم,

يمكن أن نتصور function كما يلي.

تصور نفسك تصنع أو تنجز شيئا ومعك مجموعة من العمال رهن اشارتك وهؤلاء العمال سيكونوا هم FUNCTION .ستقوم بانجاز عملك وقد تحتاج إلى شيء بالخصوص أو شيء بعيد لدا ستعطي أوامرك Parameters للعامل المكلف بهدا وهدا الأخير سيدهب أين يجد ما يلزم وأنت ستنتضر رجوعه. وحين يقوم العامل بمهامه سيرجع إليك ومعه الأدوات التي طلبت منه Return وأنت بدورك ستتسلم الرد وتستمر في عملك .

ف function هي عبارة عن مجموعة من الكود نرسل إليه مجموعة من العطيات parameters وترجع لنا نتيجة ما.هدا بشكل عام والدالة بعض المرات قد لا تتطلب أي معطيات كما يمكنها أن لا ترجع أي نتيجة.

وهي نكتبها كما يلي :

int NameOfFunction(int param1,char c,...)

{

هنا نكتب كود الدالة وفي الأخير نكتب الرد

return something

}

int في البداية هو القيمة التي سترجعها الدالة إدا كانت سترجع شيئا وبالطبع أغطيت هنا مثال int لكن يمكن للدالة أن ترجع أي نوع آخر وإدا كانت لا ترجع شيئا نغير int بكلمة void ولا نستعمل كلمة return .

هدا بخلاصة لكن تطبيقها يمكن أن يعلمنا أكثر.

أتمنى لك التوفيق وإلى اللقاء.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

مشكوووور اخي العزيز

فعلا مجهود طيب ..

ولكن اخي هل بإمكانك اعطائنا الدروس على الشكل الذي كتب بموضوع دروس بالfor Loop ..

فعلا أخي مجهود طيب وبارك الله فيك

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

السلام عليكم,

اسمح لي أخي فأنا لا أجيد إعطاء الدروس مثل تلك الطريقة وأضن أن الأخ HGB هو أكثر تأهيل في هدا الميدان بأسلوبه الممتاز وفي عالب الأحيان يقال عني أني لست مفهزما زأنا فةرتي ةالتاليظ

أضن أن كل واحد يملك كتابا ما فأنا أنصح كل واحد أن يقرأ هدا الموضوع ويطرح هنا كل غموض أو سؤال ويناقش من طرف الجميع واعطاء الأمثلة. وأنا شخصيا أفضل طريقة سؤال-جواب .

أنتضر رأيك واقتراحك وإن دعت الضرورة سأحاول.

إلى اللقاء.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

طبعا مع الشكر الجزيل للأخ chik .. كما ذكرت سابقا .. ممكن توفرلولنا دروس بالfunction لإني حقولها بصراحة . انه الأخ HGB عمللنا دروس بالFOR LOOP كانو هايلين .. واللهي إنه استفدنا منهم تماما حيث فهمنا الFOR LOOP بكل معنى الكلمة... حيث شرحه بطريقة سلسة وممتازة ..

بتمنى انه تعطونا دروس بالFUNCTION لإنه كما لاحظت انه أصعب اشي بالC1 هو الFUNCTION

الأخوة هون ما بقصرو ..

ممكن تعجلو معنا . لغنه الإمتحاات النهائية قربت ..

يعني انا امتحاني النهائي بال24 من هذا الشهر ...

مع الشكر الجزيل ..

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

يا جماعة ..

ممكن تعجلو بالرد .

لإنه ما بقى من امتحانات الfinal إلا القليل ...

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

طالما إنك مستعجل راح أحاول أساعدك

*****************************

الـfunction مثل ما قال الأخ chik الفائدة منها تقسيم الأعمال التي تقوم بها الدالة الرئيسية main وكتابة البرامج بالـ function تسمى هيكلة أو البرمجة الهيكلية.

وكمثال بسيط للآلة الحاسبة العادية يمكن نستخدم function للجمع وأخرى للطرح وهكذا.

بحيث تقوم كل function بالعمل المطلوب منها فقط.

كيفية عمل function:

1- الإعلان :يتم في الـmain قبل إستدعاء الدالة

int result(int);

2- التعريف: كتابة الـfunction وسأشرحها لاحقاً في هذا الموضوع.

3- الإستدعاء: كيف تستدعي الـmain هذه الـfunction؟؟؟؟

int a;
result(a);

نلاحظ في الإعلان عدم كتابة المتغيرات.

كما نلاحظ في الإستدعاء عدم كتابة الأنواع البيانية.

بقي علينا تعريف الـfunction أي كتابتها وهي كالتالي:

هناك ثلاث أنواع للـfunction :

الأولى: لا نقوم بتمرير قيم لها ولا نريد منها إرجاع قيمة وأشهر استخدام لها الطباعة

بحيث نضع دالة لطباعة الناتج فقط ولا نطلب منها إرجاع أي قيمة.

void result(void)
{
cout<< a+b;
}

الثانية: نقوم بتمرير قيم لها و نطلب منها إرجاع قيمة مثل دالة الجمع

int add(int a, int b)
{
int c;
c=a+b;
return c;
// or you can just use: return a+b;
}

الثالثة: لا نقوم بتمرير قيم لها ولكن نطلب منها إرجاع قيمة

مثل دالة القائمة menu حيث تطلب من المستخدم الإختيار من قائمة و ترجع الإختيار

int menu(void)
{
int choise;
cout<<"Choose any op from the following:\n"
 <<"\t1- addition.\n"
 <<"\t2- subtraction.\n"
 <<"\t3- multiplication.\n"
 <<"\t4- division.\n"
 <<"Enter your choise:";
cin>>choise;
return choise;
}

هذه باختصار أساسيات الـfunction وإذا فيه أي سؤال أنا جاهز. تحياتي

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

اخي العزيز شكرا جزيلا ..

انتا عنجد شخص رائع . خاصة انك متابع لطبات اخوك بهالنتدى .

ولكن اخي ألا ترى ان الfunction هي أعمق من هذا ..

اي انها تحتاج لعدة جلسات لإعطائها حقها للتمكن من فهمها ..

اخوك فتى الشوتوكان قرأ إلي كبتبه .. وفهمته .. ولكن بضل أحس حالي لساتني مش بالfunction .. يعني اذا في عندك كمان جلسات توضيحية أكثر يا ريت ؟؟؟

لإنه إمتحان الfinanal بعد 3 أيام .. وخايف انه اتضيعني اوامر الfunction

أخي الله يعطيك العافية على هالمجهود وبارك الله فيك .. فعلا انك أصيل ....

واللهي هاد مش طلبي انا وحدي . هاد طلب عشرات الطلاب في جامعتي يطلبون هالإشي لإنه انا دائما بصور هذه الجلسات وبوزعها عليهم عشان يدرسوها . لإنها مهمة ...

حغلبك معي اخي ..

شكرا

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

السلام عليكم ,,

بما أنكم فعلا تحتاجون لهذه الدروس ,, سأقوم غدا بوضعها وٍانتهي في يومين على الاكثر ,, لأنه لدينا الكثير من الدروس الاخرى ,,

والى الغد ,,

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

يا يعيني عليك

الكل هنا بالإنتظار ..

شكرا اخي HGB

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

السلام عليكم ,,

لن أطرح الكثير هنا لأن الدوال أمرها يسير ,, ولاتحتاج للكثير من التفصيل ,, وأعتقد أن شرح الاخوان أعلاه قد يكفي ,, لكن سأضيف بعض الامور ,,

,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

أولا الشكل العام لأي دالة في السي++ على النحو التالي :

"Type" "Function Name" "Paramters"

بمثال على الشكل :

void Add(int a,int b);

النوع Type يمكن أن تكتب فيه أي نوع من الانواع الاساسية في c/C++ أو أي نوع اخر قام المستخدم بتعريفه ,,

مالفائدة النوع Type ? ,,

يجب أن نعرف أن الدوال يمكن أن تعامل تماما كالمتغيرات ,, يمكن أن تكون للدالة قيمة مثلها مثل أي متغير !! اذا عرفنا أن القيمة التي تعين لأي متغير ستكون قيمته ,, فما هي قيمة الدالة ؟ الجواب أن قيمة الدالة هي قيمة ال return الموجودة في الدالة ,,

ولايكون للدالة قيمة اذا كان النوع Type هو void ,, أما كل الانواع الاخرى فلها قيمة اعادة return ,,

الان فهمنا أن قيمة ال return في الدالة هي قيمة الدالة ؟ لكن هل يمكن طباعة قيمة للدالة ؟ نعم كالتالي خذ مثال لتعريف دالة وطباعة قيمتها في ال main لاحقا ,,

int add(int a, int b)
{
int c;
c=a+b;
return c;
// or you can just use: return a+b;
}

هذه الدالة عادية تماما ,, تستقبل بارمترين من النوع int ويمكن أن تخلط بأي طريقة أخرى ,, نوع الدالة Type هو int أيضا ,, والذي كتب هذه الدالة كتبها بصورة ملائمة لتقوم بعملها ,, الا وهو جمع العددين الممررين لها وجعل الدالة تملك قيمة المجموع ,,

حسنا كل شيء واضح لكن مالذي جعل قيمة الدالة تكون هي قيمة المجموع ؟ بالطبع الامر return الموجود في الدالة ,, ومعناه هذه الدالة يكون قيمتها هي قيمة ال return ,, قيمة ال return هي c وقيمة c هي مجموعه a+b ,,الامر واضح الان ,,

لكن كيف يمكن يمكن أن نستفيد من قيمة الدالة ؟ سنستفيد منها تماما كما نستفيد من قسم المتغيرات العادية !! يمكن أن نطبع قيمتها بال cout أو نمررها كبارمتر لدالة أخرى !! تخيل أن تمرر دالة كبارمتر لدالة أخرى ,, "لاتهتم بهذه الامور " ,,

الان لتفهم هذا الكلام أكثر ,, خذ ال main ,,

void main()
{

cout <<add(15,77); // Well Present 92

}

لاحظ لل cout ,, تريد أن تطبع قيمة الدالة !! الناتج سيكون 92 ,, أعتقد أن الامر أصبح واضحا تماما ,,

الان مالقوانين التي تحكم ذلك ,, مثلا عدد البارامترات الخاصة بالدالة ,, نوع الاعادة return ,,وهذه الامور ؟

نعطي الدالة بارمترات اذا مانت ستسقبل قيم لتعالجها ,, مثلا الجمع,, ماذا ستجمع الدالة ,, بالطبع الرقمين الذين تم ادخالهما ,, ويمكن أن تزيد عدد البارمترات الى 3 مثلا ,, لتعالج عملية الجمع لثلاث أعداد ,, وهكذا ,, اذا كنا نريد أن نجمع أعداد بفاصلة عائمة float سنجعل البرامترات flaot وهكذا ,,

قيمة الاعادة يمكن أن تضعها لتسهل العمل حيث اذا جمعنا متغيرين نضع النتيجة لقيمة الدالة ,, ليسهل التعامل معها بالطباعة مثلا ,,

قيمة ال return ونوع type الدالة هما من سيحكم قيمة الدالة ,,

مثلا اذا كانت قيمة ال return قيمة int ,, ونوع الدالة float ,, ستكون قيمة الدالة int ,, لأنه سيتم تمرير قيمة ال return الى الدالة التي في الاصل نوعها float ,, لكن ماذا ينفع أن استلمت الدالة قيمة int ,, ستكون int في النهاية ,,

المهم هذه الامور تعود للميرمج كليا ,, يمكن أن تكتب دالة تستقبل 10 بارمترات لتطبع كلمة hello فقط مثلا !! لكنه أمر أحمق ولن يعترض عليك المصرف ,,فقط افعل مايحلو لك ,,

وكذلك الامر بالنسبة لل return ,, يمكن أن تكتبها وتجعل للدالة قيمة ولاتستفيد ممنها مطلقا ,, بحيث يكون كل عمل الدالو مثلا أيضا طباعة كلمة Hello !! وهذا أمر أحمق أيضا ,,

القاعدة العامة ,, اجعل للدالة return اذا كنت تريد الاستفادة من ناتج البارممترات الممرة لاحقا ,, اما اذا أردت من الدالة الطباعة على الشاشة فقط مثلا ,, فلا تحتاج ل return ,,

ثانيا : مرر بارمترات اذا كنت تريد من الدالة أن تتصرف حسب البرامترات الممرة لها ,, كما في الجمع مثلا ,,

ثاثا :مرر بعدد ونوع بارمترات حسب ماتحتاج الدالة أيضا ,, قلا أعتقد أنك ستمرر قيمة char لدالة تجمع عددين !!

أخيرا الامر عائد لك لتفعل ماتشاء بالصورة التي تجدها صالحة ,,

اذا كانت هناك أمور أخرى تحتاج لتوضيح ,, فقط اسئلو ,, وسنساعد باذن الله ,, وأرجو أن تكون الاسئلة في أيب نقطة لأن امتحانكم حسب ماذكرتم بعد 3 أيام ,,

يالتوفيق ,,

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

أنا طالبه أول ترم ادرس c++ عندي سؤال بالنسبه للfunctions إذا كتبنا البارميتر في البروتوتايب حنا نقصد الباراميتر اللي بنرسلها للفانكشن؟

السؤال الثاني لما اسوي return لمتغير مثلا سويت عمليه جمع وخزنت الناتج في متغير sum يصلح اكتب return sum ; وانا لما سويت استدعاء للفانكشن حطيت المتغيرين x1, x2

ارجو ترد علي يا اخوي بسرعه لان عندي اختبار الfinal بعد 5 ايام ومشكور على الشرح

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

لم أفهـم شيئاً ... أرجـو إعادة توضيح السؤال

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

الاجابة على السؤالين هى نعم

وياريت تطرحي سؤالك فى موضوع منفصل المرة القادمة لان هذا الموضوع مر عليه اكثر من سنتين..

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

بسم الله الرحمن الرحيم

السلام عليكم

صراحة السؤال مش واصح خالص

ع العموم دى لينكة لدرس ف الfunctions

Functions in c++

:)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

مشكورين لكل اللي مروا واهتموا بسؤالي...

على فكره يا اخوي سلطان بصراحه عجبني موضوعك خارطة طريق تعلم السي بلس بلس رفعت معنوياتي بصراحه

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
زوار
This topic is now closed to further replies.

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .