هل تجد نفسك غالبًا تنسخ وتلصق الكود الخاص بك لإعادة استخدامه في أقسام مختلفة في برنامجك؟

إذا كان الأمر كذلك ، فقد ترغب في التفكير في استخدام الوظائف. الوظائف هي ميزة قوية للغاية في لغات البرمجة. يمكنهم جعل الكود أكثر كفاءة ، وأسهل في القراءة ، وأنيقة.

ما هي الوظيفة؟

الوظيفة هي كتلة من التعليمات البرمجية التي تؤدي مهمة. يمكن استدعاؤه و أعيد استخدامها عدة مرات. يمكنك تمرير المعلومات إلى وظيفة ويمكنها إعادة إرسال المعلومات. تحتوي العديد من لغات البرمجة على وظائف مضمنة يمكنك الوصول إليها في مكتبتها ، ولكن يمكنك أيضًا إنشاء وظائفك الخاصة.

ما هو العودية وكيف تستخدمه؟

تعلم أساسيات العودية ، الأداة الأساسية ولكن التي تجعل المبرمجين ينحرفون قليلاً عن عقولهم.

عند استدعاء وظيفة ، سيقوم البرنامج بإيقاف البرنامج الحالي مؤقتًا وتنفيذ الوظيفة. ستتم قراءة الوظيفة من أعلى إلى أسفل. بمجرد اكتمال الوظيفة ، يستمر البرنامج في العمل حيث توقف مؤقتًا. إذا أعادت الدالة قيمة ، فسيتم استخدام هذه القيمة حيث تم استدعاء الوظيفة.

كيف تكتب وظيفة؟

هناك العديد من الطرق المختلفة لكتابة الوظائف. سيعتمد بناء الجملة الدقيق على اللغة التي تبرمج بها. سنعرض أمثلة في Python و JavaScript و C ++ لتوضيح مجموعة من بناء جملة البرمجة.

instagram viewer

متعلق ب: لماذا لا يمكن أن توجد لغات البرمجة بدون وظائف

وظائف باطلة

النوع الأول من الدالة الذي سننظر إليه هو دالة باطلة. هذا يعني ببساطة أن الوظيفة لا تُرجع قيمة. يتم استخدام الوظائف الفارغة لإكمال مجموعة من التعليمات. في هذه الأمثلة ، تسمى الوظيفة التي كتبناها مرحبا. الغرض من الوظيفة هو إخراج "Hello World".

تلميح: أعط أسماء الوظائف التي تشرح ما تفعله. سيكون من الأسهل إدارة الوظائف وقراءة الكود حيث يصبح برنامجك أكثر تعقيدًا.

بايثون

وظيفة def hello ():
طباعة ("Hello World")
helloFunction ()

الكلمة def يستخدم في بايثون لتعريف وإنشاء وظيفة. بعد ذلك ، هو اسم الوظيفة. تتبع التعليمات الواردة في الوظيفة في السطر التالي بعد القولون. المسافة البيضاء مهمة في Python ، لذا تأكد من وضع مسافة بادئة لكل الكود الذي تريد تشغيل وظيفتك. في المثال أعلاه ، تعمل الوظيفة على سطر واحد من التعليمات البرمجية.

ربما لاحظت عيناك الثاقبة ذلك مطبعة() هي أيضًا دالة ، ولكنها تسمى بشكل مختلف عن وظيفتنا. تمسك بهذه الفكرة الآن ، وسوف نستكشف الدوال والمعلمات لاحقًا.

جافا سكريبت

الوظيفة helloFunction () {
تنبيه ("Hello World!") ؛
}
helloFunction () ،

في JavaScript ، الكلمة الأساسية وظيفة يستخدم لإنشاء وظائف. بعد ذلك ، لدينا اسم الوظيفة. يتم تشغيل أي كود يقع بين الأقواس المتعرجة عند استدعاء الوظيفة.

لا تعد المسافة البيضاء مهمة في JavaScript ، ولكن من المعتاد وضع مسافة بادئة للكود في الوظيفة. تسهل المسافة البادئة قراءة الكود ، وهو أمر مهم للغاية لأن برامجك تصبح أكثر تعقيدًا.

ملاحظة: يشبه إلى حد كبير مطبعة() في المثال السابق ، إنذار() هي أيضا وظيفة.

C ++

#يشمل 
استخدام اسم للمحطة؛
helloFunction () باطلة {
cout << "Hello World!"؛
}
انت مين(){
helloFunction () ،
العودة 0 ؛
}

يتم إنشاء الوظائف بشكل مختلف في C ++. بدلاً من الكلمة الأساسية لتحديد وظيفة ، تصف الكلمة الأولى نوع البيانات التي سترجعها الوظيفة. في هذه الحالة ، لا تقوم وظيفتنا بإرجاع أي بيانات ، وبالتالي فإن البيانات باطلة. بعد ذلك ، لدينا اسم الوظيفة. على غرار JavaScript ، يتم تشغيل جميع التعليمات البرمجية بين الأقواس المتعرجة عند استدعاء الوظيفة. على غرار JavaScript أيضًا ، لا تؤثر المسافة البيضاء على الوظيفة ولكنها ممارسة جيدة.

هل لاحظت وظيفة أخرى في كود C ++؟ نعم، رئيسي() هي وظيفة. عند تنفيذ برنامج C ++ ، تقوم تلقائيًا باستدعاء الوظيفة الرئيسية. عندما تكتمل الوظيفة الرئيسية بنجاح ، فإنها ترجع 0 لأنها تخرج من البرنامج للإشارة إلى عدم وجود أخطاء في تشغيل البرنامج.

الوظائف التي تتطلب قيمًا

تعتبر الوظائف الفارغة رائعة إذا وجدت أنك تكتب نفس الجزء من الكود مرارًا وتكرارًا. لكن يمكن أن تكون محدودة. إنها ثابتة ولا تتغير. هم دائما يكملون نفس التعليمات. إحدى الطرق التي يمكننا بها زيادة فائدتها هي تمرير قيم مختلفة إلى الوظيفة.

ستلاحظ أن الأقواس تتبع أسماء جميع وظائفنا. بين قوسين ، يمكننا أن نعلن أن البيانات مطلوبة لتشغيل وظيفتنا. ثم يمكننا استخدام البيانات التي تم تمريرها إلى وظيفتنا في الوظيفة. دعنا نلقي نظرة على الأمثلة السابقة مرة أخرى ، ولكن هذه المرة نمرر العبارة التي نريد إخراجها.

بايثون

def helloFunction (newPhrase):
طباعة (عبارة جديدة)
helloFunction ("عبارتنا الجديدة")

الآن ، بين القوسين ، تعلن الدالة أنها تحتاج إلى متغير لتشغيله. لقد قمنا بتسمية المتغير عبارة جديدة ويمكن الآن استخدامه في وظيفتنا. عندما نستدعي الوظيفة ، نحتاج إلى تمرير المعلومات المطلوبة بوضعها بين قوسين. تم إجراء نفس التغييرات في JavaScript.

جافا سكريبت

function helloFunction (newPhrase) {
تنبيه (عبارة جديدة) ؛
}
helloFunction ("عبارتنا الجديدة") ؛

C ++

#يشمل 
استخدام اسم للمحطة؛
void helloFunction (string newPhrase) {
cout << newPhrase؛
}
انت مين(){
helloFunction ("عبارتنا الجديدة") ؛
العودة 0 ؛
}

تتطلب وظيفة C ++ الخاصة بنا مزيدًا من المعلومات. نعلم أن وظيفتك تريد بيانات سلسلة ، لكن هذا ليس جيدًا بما يكفي لـ C ++. عند إنشاء وظيفتك ، يجب عليك تحديد نوع البيانات التي تتطلبها وظيفتك. إذا لم ترسل النوع الصحيح من البيانات ، ستنشئ الوظيفة خطأ.

قد يبدو هذا مزعجًا بعض الشيء ، لكن اللغات الصارمة غالبًا ما توفر لك الصداع. إذا قمت بكتابة دالة في JavaScript تتطلب عددًا صحيحًا ، ولكن تم إرسال الرقم كسلسلة ، فقد يؤدي ذلك إلى إنشاء خطأ يصعب تعقبه.

متعلق ب: 5 لغات برمجة وظيفية يجب أن تعرفها

الوظائف التي تُرجع قيمة

قدرة الوظيفة النهائية التي سنغطيها هي إرجاع البيانات. هذا مهم بشكل خاص عندما تريد تغيير البيانات قبل استخدامها. على الرغم من أنه يمكنك كتابة ذلك سطريًا ، إذا كنت ستستخدم نفس الحسابات عدة مرات ، مثل تحويل الإمبراطوري إلى متري ، فقد يكون من المنطقي كتابتها كوظيفة. سيكون مثالنا أبسط. ستتطلب الدالة عددين صحيحين وستعيد المجموع.

بايثون

وظيفة def إضافة الوظيفة (أ ، ب):
العودة أ + ب
طباعة (وظيفة الإضافة (2 ، 4))

في هذا المثال ، تتطلب وظيفتنا متغيرين بدلاً من واحد. نشير إلى ذلك بفصل أسماء المتغيرات بفاصلة. الكلمة إرجاع يخبر الوظيفة بإرجاع البيانات التالية ، في هذه الحالة ، 2 + 4 ، أو 6. نسمي الدالة داخل مطبعة() وظيفة.

بمجرد وصول برنامجنا إلى هذا الخط ، سيتوقف مؤقتًا ، ويدير وظيفتنا ، ثم يستمر كما لو وظيفة الإضافة (2 ، 4) كانت في الواقع مجرد القيمة التي تم إرجاعها 6.

جافا سكريبت

كود JavaScript يشبه إلى حد بعيد كود Python. الاختلاف الأساسي هو أن الوظيفة تسمى في تنبيه.

وظيفة إضافة الوظيفة (أ ، ب) {
إرجاع أ + ب ؛
}
تنبيه (إضافة الوظيفة (2 ، 4)) ؛

C ++

#يشمل 
استخدام اسم للمحطة؛
int addFunction (int a، int b) {
إرجاع أ + ب ؛
}
انت مين(){
cout << addFunction (2، 4)؛
العودة 0 ؛
}

يعمل كود C ++ بشكل مشابه ، ولكن كالعادة ، يتطلب القليل من المعلومات. أولاً ، علينا تحديد نوع البيانات التي ستعيدها وظيفتنا. سترى أن فارغ تم تغييره إلى int. هذا يعني أنه بدلاً من إرجاع أي بيانات ، ستُرجع وظيفتنا عددًا صحيحًا. علاوة على ذلك ، فإن الكود مشابه للكود الذي اكتشفناه بالفعل.

إدارة وظائفك

الشيء الممتع حول الوظائف هو أن الوظائف يمكنها استدعاء وظائف أخرى. يمكنهم حتى تسمية أنفسهم! ولكن مع القوة الكبيرة تأتي مسؤولية كبيرة. لا تكن مجنونًا بإنشاء كود مع وظائف تستدعي وظائف أخرى تستدعي المزيد من الوظائف.

كما ذكرنا ، في كل مرة يتم استدعاء وظيفة ، يتوقف البرنامج مؤقتًا أثناء تشغيل الوظيفة. هذا يعني أن البرنامج محتجز في ذاكرة نشطة. إذا اتصلت بالعديد من الوظائف دون استكمالها ، فأنت تستخدم ذاكرة أكثر نشاطًا. إذا لم تكن حريصًا ، فقد يخرج برنامجك عن السيطرة.

بريد الالكتروني
كيف تحافظ على نظافة الكود الخاص بك باستخدام تغليف الكائن

قد تبدو المتغيرات العامة بسيطة ، لكنها غالبًا ما تسبب الكثير من الأخطاء. فيما يلي كيفية تبسيط التعليمات البرمجية الخاصة بك بالتغليف.

مواضيع ذات صلة
  • برمجة
  • برمجة
  • البرمجة الوظيفية
عن المؤلف
جينيفر سيتون (20 مقالة منشورة)

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

المزيد من Jennifer Seaton

اشترك في نشرتنا الإخبارية

انضم إلى النشرة الإخبارية لدينا للحصول على نصائح تقنية ومراجعات وكتب إلكترونية مجانية وصفقات حصرية!

خطوة أخرى أيضا…!

يرجى تأكيد عنوان بريدك الإلكتروني في البريد الإلكتروني الذي أرسلناه لك للتو.

.