سير التنفيذ

6.2 سير التنفيذ

أهداف التعلم

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

  • تحديد سير التنفيذ لبرنامج.
  • وصف كيفية انتقال سير التنفيذ بين التعليمات واستدعاءات الدوال.

سير التنفيذ والدوال

سير التنفيذ هو تسلسل تنفيذ البرنامج. يبدأ سير تنفيذ البرنامج من البرنامج الرئيسي ولكنه نادرًا ما يتبع تسلسلاً صارمًا. مثال: يتخطى سير التنفيذ الأسطر عندما لا تُنفَّذ تعليمة شرطية.

عندما يصل التنفيذ إلى استدعاء دالّة، ينتقل سير التنفيذ إلى المكان الذي عُرِّفت فيه الدالّة ويُنفِّذ تعليماتها. ثم يعود سير التنفيذ إلى المكان الذي استُدعيت فيه الدالّة ويستمر في التسلسل.

نقطة تحقق

استدعاء دالّة قائمة فطور وغداء

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

تتبع سير التنفيذ

1.
ما السطر الذي يُنفَّذ أولاً؟
1
def park_greet():
2
  """Output greeting."""
3
  print("Welcome. Open sunrise to sunset.")
4
5
car_count = 1
6
park_greet()
7
if car_count > 50:
8
  # التوجيه إلى موقف السيارات الإضافي
  1. 1
  2. 3
  3. 5
2.
ينتقل سير التنفيذ إلى السطر 9، وتُستدعى park_greet(). إلى أي سطر ينتقل سير التنفيذ بعد ذلك؟
1
def extra_lot():
2
  # تعريف الدالّة
3
4
def park_greet():
5
  """Output greeting."""
6
  print("Welcome. Open sunrise to sunset.")
7
8
car_count = 1
9
park_greet()
10
if car_count > 50:
11
  extra_lot()
  1. 1
  2. 4
  3. 10
3.
ينتقل سير التنفيذ إلى السطر 12، وتُستدعى extra_lot(). إلى أي سطر ينتقل سير التنفيذ بعد تنفيذ السطر 3؟
1
def extra_lot():
2
  """Output extra parking lot info."""
3
  print("Take the second right to park.")
4
5
def park_greet():
6
  """Output greeting."""
7
  print("Welcome. Open sunrise to sunset.")
8
9
car_count = 1
10
park_greet()
11
if car_count > 50:
12
  extra_lot()
  1. 5
  2. 8
  3. 12
4.
ما الناتج؟
def park_greet():
  """Output greeting."""
  print("Welcome to the park")
print("Open sunrise to sunset")

park_greet()
  1. Welcome to the park
  2. Welcome to the park
    Open sunrise to sunset
  3. Open sunrise to sunset
    Welcome to the park

الدوال التي تستدعي دوال أخرى

غالبًا ما تستدعي الدوال دوال أخرى بحيث تؤدي كل دالّة مهمة واحدة، وهو ما يُعرف بالنمطية (modularity). مثال: قد تستدعي دالّة تحسب إجمالي الطلب دالّة تحسب ضريبة المبيعات. عندما تنتهي دالّة تم استدعاؤها من دالّة أخرى من التنفيذ، يعود سير التنفيذ إلى الدالّة المستدعية.

نقطة تحقق

مثال: رسائل البريد الإلكتروني لنادي الكتاب

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

الدوال التي تستدعي دوال أخرى

تأمل مثال نادي الكتاب أعلاه.

5.
كم عدد استدعاءات الدوال التي تحدث أثناء تنفيذ البرنامج؟
  1. 2
  2. 3
  3. 6
6.
عند الوصول إلى السطر 3 وتنفيذه، إلى أي سطر يعود سير التنفيذ؟
  1. 1
  2. 11
  3. 16

جرّب بنفسك

مِحَث الشروط والأحكام المُحدَّثة

اكتب دالّة مُحدَّثة، terms()، تطلب من المستخدم قبول الشروط والأحكام، وتقرأ Y/N، وتُخرج استجابة باستدعاء accepted() أو rejected(). تطبع accepted() النص "Thank you for accepting the terms." وتطبع rejected() النص "You have rejected the terms. Thank you.".

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

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

بافتراض استدعاء دالّة لـ terms() والمدخل "N"، يكون الإخراج:

    Do you accept the terms and conditions?
    N
    You have rejected the terms. Thank you.

جرّب بنفسك

معلومات مغسلة الملابس

اكتب برنامجًا يستخدم ثلاث دوال لطباعة معلومات حول مغسلة ملابس، Liam's Laundry:

  • laundromat_info(): تطبع الاسم، Liam's Laundry، وساعات العمل، 7 صباحًا - 11 مساءً، وتستدعي washers_open() و dryers_open()
  • washers_open(): تقرأ عددًا صحيحًا، وتُسند washer_count بالقيمة، وتطبع washer_count
  • dryers_open(): تقرأ عددًا صحيحًا، وتُسند dryer_count بالقيمة، وتطبع dryer_count

يجب أن يستدعي البرنامج الرئيسي فقط laundromat_info().

بافتراض المدخلات 50 و 40، يكون الإخراج:

    Liam's Laundry
    7a - 11p
     Open washers: 50
     Open dryers: 40