تعريف الدوال

6.1 تعريف الدوال

أهداف التعلم

في نهاية هذا القسم، ينبغي أن تكون قادرًا على:

  • تحديد استدعاءات الدالة في برنامج.
  • تعريف دالّة بدون مُعامِلات تُخرج سلاسل نصية.
  • وصف فوائد استخدام الدوال.

استدعاء دالّة

طوال الكتاب، استُدعيت الدوال لأداء مهام مختلفة. مثال: print() تطبع القيم، و sqrt() تحسب الجذر التربيعي. الدالّة هي كتلة شِفرة مُسمّاة وقابلة لإعادة الاستخدام، تؤدي مهمة عند استدعائها.

نقطة تحقق

مثال: برنامج رياضي بسيط

مفاهيم تطبيقية

تحديد استدعاءات الدوال

1.
أي سطر يحتوي على استدعاء دالّة؟
1
input_num = 14
2
offset_num = input_num - 10
3
print(offset_num)
  1. السطر 1
  2. السطر 2
  3. السطر 3
2.
كم مرة تُستدعى print()؟
print("Please log in")
username = input("Username:")
password = input("Password:")
print("Login successful")
print("Welcome,", username)
  1. 1
  2. 3
  3. 5
3.
كم عدد استدعاءات الدوال الموجودة؟
# استخدام float() لتحويل الإدخال لحساب المساحة
width = float(input("Enter width:"))
height = float(input("Enter height:"))
print("Area is", width*height)
  1. 3
  2. 5
  3. 6

تعريف دالّة

تُعرّف الدالّة باستخدام الكلمة المحجوزة def. يحتوي السطر الأول على def متبوعًا باسم الدالّة (بأسلوب snake_case)، والأقواس (مع أي مُعامِلات – ستُناقش لاحقًا)، ونقطتين رأسيتين. يبدأ جسم الدالّة المُزاح عادةً بسلسلة التوثيق (docstring) التي تصف مهمة الدالّة، ويتبعها تعليمات الدالّة. يجب تعريف الدالّة قبل استدعائها.

نقطة تحقق

مثال: دالّة رسالة الترحيب

مفاهيم تطبيقية

تعريف الدوال

4.
ما الخطأ في السطر الأول من تعريف الدالّة؟
def water_plant:
  1. يجب أن تأتي سلسلة التوثيق بعد النقطتين الرأسيتين.
  2. يجب أن تأتي الأقواس بعد water_plant.
  3. يجب أن تكون def هي define قبل water_plant.
5.
ما الناتج؟
def print_phone_num():
  print("Phone: (", 864, ")", 555, "-", 0199)

print("User info:")
print_phone_num()
  1. Phone: ( 864 ) 555 - 1000
    User info:
    Phone: ( 864 ) 555 - 1000
  2. User info:
  3. User info:
    Phone: ( 864 ) 555 - 1000
6.
أي تعليمة تستدعي دالّة باسم print_pc_specs()؟
  1. print_pc_specs
  2. print_pc_specs()
  3. print_pc_specs():
7.
ما الاسم المناسب لدالّة تحسب ضرائب المستخدم؟
  1. calc_tax
  2. calculate user tax
  3. c_t

فوائد الدوال

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

نقطة تحقق

تحسين برنامج باستخدام دالّة

مفاهيم تطبيقية

تحسين البرامج باستخدام الدوال

تأمل الشِفرة أعلاه.

8.
إذا تم تغيير النقاط من أعداد عشرية إلى أعداد صحيحة، فكم عدد التعليمات التي ستحتاج إلى التغيير في البرامج الأصلية والمعدلة على التوالي؟
  1. 3, 1
  2. 4, 4
  3. 12, 4
9.
كم مرة يمكن استدعاء calc_distance()؟
  1. 1
  2. 3
  3. مرات عديدة

جرّب بنفسك

كشك بيع الوجبات الخفيفة في السينما

اكتب دالّة، concessions()، تطبع خيارات الطعام والشراب في السينما.

المعطى:

    concessions()

الإخراج هو:

    Food/Drink Options:
    Popcorn: $8-10
    Candy: $3-5
    Soft drink: $5-7

جرّب بنفسك

مِحَث الشروط والأحكام

اكتب دالّة، terms()، تطلب من المستخدم قبول الشروط والأحكام، وتقرأ Y/N، وتُخرج استجابة. في البرنامج الرئيسي، اقرأ عدد المستخدمين واستدعِ terms() لكل مستخدم.

بإعطاء المدخلات 1 و "Y"، يكون الإخراج:

    Do you accept the terms and conditions?
    Y
    Thank you for accepting.

بإعطاء المدخلات 2، "N"، و "Y"، يكون الإخراج:

    Do you accept the terms and conditions?
    N
    Have a good day.
    Do you accept the terms and conditions?
    Y
    Thank you for accepting.