مقدمة عن الدوال

مقدمة عن الدوال

مقدمة عن الدوال

تابع بناء جملة بايثون:

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

مقدمة عن الدوال functions

في الدروس والاختبارات السابقة استخدمنا الدوال ولكن لم نتكلم عنها بسبب كونها من دروس الاقسام القادمة ، ولكن نظامنا يعتمد عليها بشكل كبير في الاختبارات.

بدون هذا الدرس قد لا تتمكن من اجتياز الاختبارات الموجودة في الدروس لذلك اعددنا هذا الدرس التعريفي عن الدوال.

الدالة function

المقدمة تقول إن الدالة جزء من التعليمات البرمجية (مجموعة من الأسطر أو الكتل) يمكن تنفيذها مراراً وتكراراً.

مثال

x = 2
y = 5
z = 9
xyz = x+y+z
print(xyz)

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

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

التصريح عن دالة جديدة

للتصريح عن دالة في بايثون يكون بواسطة الكلمة def وهي اختصار (define) بمعني تصريح أو تعريف وهي تستخدم فقط مع الدوال.

بعد كتابة كلمة def نكتب اسم الدالة الجديدة، ويمكن اختيار اي اسم وفق شروط التسمية متبوعاً بالاقواس والنقطتين ( : ).

بعد التصريح عن الدالة يمكن تنفيذ الدالة من خلال الاتصال بها بواسطة اسمها متبوعاً بالأقواس.

مثال

def myfunc():
    x = 2
    y = 5
    z = 9
    xyz = x+y+z
    print(xyz)

myfunc()
myfunc()
myfunc()

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

لاحظ ان المسافة البادئة لجميع اسطر كتلة الدالة هي 4 مسافات كما تعلمنا في درس بناء جملة بايثون.

عوامل الدالة parameter

العامل هو المتغير المدرج بين اقواس الدالة عند التصريح عنها ، وهو عنصر نائب عن القيمة الفعلية التي تحتاجها الدالة.

ان كنت تتذكر في درس الطباعة استخدمنا عوامل دالة الطباعة ( objects, sep, end, file, flush ) ، ويجب الملاحظة انه عند الاتصال بالدالة يكون اسمه وسيط ( argument ) وليس عامل ( parameter ).

مثال

# define the function with ( parameters - x, y, z ).
def myfunc(x, y, z):
    xyz = x+y+z
    print(xyz)

# call the function with ( arguments ).
myfunc(1, 2, 3)
myfunc(5, 5, 5)
myfunc(3, 6, 9)

المثال السابق هو نفس المثال الذي يسبقة ولكن مع بعض الاختلافات البسيطة مثل حذف المتغيرات x, y, z والتي كانت تحتوي علي قيم رقمية، والتعويض عنها بعوامل بين اقواس الدالة، ولكن ماذا عن القيم الرقمية؟!. هنا تاتي مهمة الوسيطات ( arguments ).

عند الاتصال بالدالة نرسل القيم للعوامل من خلال الوسيطات بنفس ترتيب العوامل في الدالة، ويمكن ايضاً ارسال قيم مختلفة مع كل اتصال بالدالة.

وبذلك لم نختصر الكود فقط، ولكن اصبح يمكن تنفيذة مراراً وتكراراً، وادخال قيم مختلفة في كل مرة.

ارجاع البيانات return

ذكرنا سابقاً ان الدوال تتيح للمبرمجين تقسيم المشكلة ، وعلي هذا الاساس فسوف يكون هناك عدة دوال تنفذ كل منها بعض العمليات علي البيانات ثم تسلمها للاخري، وهنا ياتي دور الكلمة المحجوزة return وهي تعني ارجاع البيانات.

مثال

# define the function with ( parameters - x, y, z ).
def myfunc(x, y, z):
    xyz = x+y+z
    return xyz

# call the function with ( arguments ).
dataA = myfunc(11, 12, 41)
dataB  = myfunc(15, 20, 10)
print(dataA + dataB)

في المثال السابق قمنا باستبدال دالة الطباعة ( print ) بالكلمة المحجوزة return ، وذلك لارجاع ناتج جمع الثلاثة متغيرات ( x, y, z ) بدلاً من طباعتها.

بعد ذلك قمنا بالتصريح عن متغيرين باسم dataA و dataB لتخزين البيانات العائدة من الاتصال بالدالة myfunc مع قيم وسيطات مختلفة لكل اتصال بالدالة. ثم بعد ذلك قمنا بطباعة ناتج جمع المتغيرين dataA و dataB.

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

مثال

# define the function with ( parameters - x, y, z ).
def funcA(x, y, z):
    xyz = x+y+z
    return xyz

def funcB(total):
    return total * 2

# call the function with ( arguments ).
DATA = funcA( 10, 10, 10 )
DATA2  = funcB( DATA )
print(DATA2)

هنا استخدمنا الدالة السابقة ولكن مع تعديل اسمها الي funcA واضفنا دالة جديدة بعامل واحد فقط وهو total ومن داخل الدالة ارجعنا ناتج ضرب total في 2.

داخل متغير DATA قمنا بعمل اتصال مع دالة funcA وجعلنا قيمة كل الوسيطات 10 وقامت بارجاع القيمة 30 والان اصبح متغير DATA يساوي 30.

داخل متغير DATA2 قمنا بالاتصال مع دالة funcB وجعلنا قيمة الوسيط هي قيمة متغير DATA وهي 30 وقامت الدالة بارجاع قيمة ضرب 30 في 2 لتصبح قيمة المتغير DATA2 الان هي 60. ثم قمنا بطباعة قيمة المتغير DATA2.

ربما قد تتسائل لماذا افعل كل هذا لمجرد جمع وضرب عدة ارقام ، ان كنت تتسائل فعلاً فهذا مجرد تدريب ليس الا يمكن للدوال ان تتكون من الاف الاسطر وسوف نفعل بها الكثير في الاقسام القادمة فهي رفيقتنا من الان.

اذا كنت تحب البرمجة وتسعي في تعلمها فلا تقم بالتجربة بل قم بالالاف من التجارب ، لم ينطق ابن ادم الحروف كلها من البداية ، وان كان الكاتب تنفذ اوراقة فان المبرمج لا تنفذ اوراقة يمكنه عمل new file بكل سهوله. لا يخسر المبرمج سوي الوقت فاستغله حق استغلال.

الاختبار

عالم البرمجة يمكن اعتبارة مطبخ كبير يحتوي علي كل المكونات وكلما كان الطباخ ماهراً كلما كان انتاج مطبخة رائعاً وشهياً، ولتعلم الطبخ يجب دخول المطبخ ومزج بعد المكونات وانتظار النتيجة. ولذلك قمنا بجلب بعض المكونات لك لتطبخ لنا كود بسيط.

المقادير

  • تنسيق الاخراج
  • الدالة

داخل المطبخ التالي اسف المحرر التالي قم بانشاء دالة جديدة باسم data مع ثلاث عوامل ( x, y, z ) ، ومن داخل الدالة قم باستخدام ما تعلمتة في درس تنسيق الاخراج لارجاع البيانات علي الشكل التالي.

"view: x - like: y - comment: z"

كل ما عليك فعلة هو التصريح (define) عن الدالة، وارجاع النص مع تنسيق قيم العوامل بداخلة بنفس الترتيب الموضح في النص.

ليس عليك ادخال اي قيم نظامنا سوف يتولي عملية الاتصال بالدالة data() وادخال قيم الوسيطات الثلاث x, y, z.

اذا وجدت اي صعوبه قم بمراجعة اخر مثال في درس تنسيق الاخراج وفي هذا الدرس راجع التصريح عن الدالة وارجاع البيانات return ، او قم بمراسلتنا .

حلول الاعضاء
فتح الحلول مقابل 5
مقفل
output
terminal

Next

التعليقات

no comments found.
  • من خلال الضغط علي زر {;} في شريط الادوات يمكنك اضافة اكواد بايثون الي التعليق للتجربة اون لاين.
  • برجاء مراعاة قواعد الكتابة، والادب.