Skip to main content

Welcome to a Grasp lesson

Create a free account to keep studying and create your own study path.

Lesson 4

جمل If/Elif/Else: التحكم في تدفق البرنامج

Recommended resources

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

في الدرس السابق، تعلمنا كيف "نسأل" البرنامج أسئلة باستخدام عوامل المقارنة (==, >, <) والعوامل المنطقية (and, or). كانت إجابة هذه الأسئلة دائماً إما True (صحيح) أو False (خطأ). الآن، حان الوقت لنستفيد من هذه الإجابات.

اليوم، سنقوم بتمكين برامجنا من اتخاذ قرارات حقيقية. سنتعلم كيف نجعل البرنامج يسلك مسارات مختلفة بناءً على شروط معينة. هذه هي اللبنة الأساسية في "ذكاء" أي برنامج، وهي خطوة حاسمة في طريقنا نحو بناء وكلاء ذكاء اصطناعي يمكنهم التفكير والتصرف بناءً على المعلومات المتاحة لهم.

هدفنا لهذا اليوم هو كتابة جمل شرطية (if/elif/else) للتحكم في تدفق البرنامج.

لماذا نحتاج إلى الجمل الشرطية؟

قبل أن نتعمق في الكود، من المفيد أن نفهم لماذا تعتبر الجمل الشرطية ضرورية. في الحياة الواقعية، نحن نتخذ قرارات مشروطة طوال الوقت: "إذا كان الجو ممطراً، سآخذ مظلة. وإلا، لن أفعل". البرمجة تحاكي هذا المنطق تماماً.

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

الجمل الشرطية في البرمجة: شرح البرمجة للمبتدئين من الصفر 9

يقدم هذا المقطع القصير شرحاً لمشكلة تحتاج إلى حل شرطي، موضحاً لماذا لا تكفي التعليمات المتسلسلة وحدها.

شاهد من بداية المقطع حتى الدقيقة 2:12. ركز على المشكلة الموضحة وكيف أن الحل يتطلب التحقق من شرط (هل الكيكة استوت؟) قبل اتخاذ قرار.

كما رأيت، نحتاج إلى طريقة لجعل البرنامج يتحقق من حالة معينة وينفذ أوامر مختلفة بناءً على نتيجة هذا التحقق. هذا هو بالضبط ما تفعله جملة if.


1. القرار الأساسي: if و else

أبسط أشكال اتخاذ القرار هو الاختيار بين مسارين: إذا تحقق شرط معين، افعل شيئًا. وإذا لم يتحقق، افعل شيئًا آخر.

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

تعلم بايثون من الصفر للاحتراف للمبتدئين : الجمل الشرطية if elif else

يشرح هذا الفيديو بالتفصيل كيفية كتابة جملة if..else في بايثون، مع التركيز على بناء الجملة الصحيح وأهمية المسافات البادئة.

شاهد من بداية الفيديو حتى الدقيقة 7:25. ركز على النقاط التالية: كيفية كتابة الشرط بعد كلمة if. أهمية النقطتين الرأسيتين (:) في نهاية سطر الشرط. مفهوم المسافة البادئة (Indentation)، وكيف أن الأوامر التابعة للشرط يجب أن تكون مُزاحة للداخل.

ملاحظة هامة: المسافة البادئة (Indentation)

كما أكد الفيديو، المسافة البادئة ليست خياراً جمالياً في بايثون، بل هي جزء أساسي من بناء الجملة. هي الطريقة التي تحدد بها بايثون "كتل" الكود التابعة لبعضها. أي أمر تريد تنفيذه فقط إذا تحقق الشرط يجب أن يبدأ بمسافة بادئة (عادة 4 مسافات) تحت جملة if.

Indentation in Python 'if' Statements
هذه الصورة توضح ما يحدث عند نسيان المسافة البادئة بعد جملة `if`. السطر غير المزاح يُعتبر خارج كتلة الشرط، مما يسبب خطأ `IndentationError` إذا كانت كتلة `if` فارغة، أو يتم تنفيذه دائماً بغض النظر عن الشرط.

2. الاختيارات المتعددة: if, elif, و else

ماذا لو كان لدينا أكثر من خيارين؟ على سبيل المثال، نريد تحديد ما إذا كان الرقم موجباً، أو سالباً، أو صفراً. هنا يأتي دور elif، وهي اختصار لـ "else if".

تسمح لنا elif باختبار شروط متعددة بالتسلسل:

  1. يتحقق البرنامج من شرط if الأول. إذا كان صحيحاً، ينفذ الأوامر التابعة له ويتجاهل بقية الجملة الشرطية.
  2. إذا كان شرط if الأول خاطئاً، ينتقل ليتحقق من شرط elif التالي.
  3. يستمر هذا حتى يجد شرطاً صحيحاً وينفذ أوامره.
  4. إذا لم يتحقق أي شرط من شروط if أو elif، يتم تنفيذ كتلة else في النهاية (إذا كانت موجودة).

لنعد إلى الفيديو ونشاهد كيف يتم استخدام elif لحل مشكلة تحديد نوع الرقم.

تعلم بايثون من الصفر للاحتراف للمبتدئين : الجمل الشرطية if elif else

يكمل هذا الجزء من الفيديو شرح الجمل الشرطية، موضحاً كيفية استخدام elif للتعامل مع أكثر من شرطين.

شاهد من الدقيقة 7:25 حتى الدقيقة 10:57. لاحظ كيف تم ترتيب الشروط للتحقق من الرقم.


ملخص بناء الجمل الشرطية

للتلخيص، إليك الهياكل الثلاثة الرئيسية للجمل الشرطية في بايثون:

Examples of Conditional Statements in Python
مقارنة بين هياكل `if`، و `if-else`، و `if-elif-else` مع أمثلة لكل منها.
  1. if فقط: لتنفيذ كود فقط إذا تحقق شرط واحد.

    grade = 95
    if grade >= 90:
        print("ممتاز")
    
  2. if-else: للاختيار بين مسارين.

    grade = 80
    if grade >= 50:
        print("ناجح")
    else:
        print("راسب")
    
  3. if-elif-else: للاختيار بين عدة مسارات.

    grade = 75
    if grade >= 90:
        print("ممتاز")
    elif grade >= 80:
        print("جيد جداً")
    elif grade >= 70:
        print("جيد")
    else:
        print("مقبول أو أقل")
    
اختبر فهمك!

تخيل أنك تكتب برنامجاً بسيطاً لمطعم. سعر الوجبة هو 50. إذا كان يوم الثلاثاء (is_tuesday = True)، يوجد خصم 50%. إذا كان المستخدم طالباً (is_student = True)، يوجد خصم 10% (وهذا الخصم لا يطبق في يوم الثلاثاء). إذا لم يكن أي من الشرطين صحيحاً، لا يوجد خصم.

اكتب الكود الذي يحسب السعر النهائي (final_price) بناءً على المتغيرين is_tuesday و is_student.

جرب تغيير قيم المتغيرين لترى كيف يتغير السعر:
is_tuesday = True, is_student = False
is_tuesday = False, is_student = True
is_tuesday = False, is_student = False

أظهر الحل
price = 50
is_tuesday = True
is_student = False

if is_tuesday == True:
    final_price = price * 0.5  # خصم 50%
    print("اليوم الثلاثاء! السعر بعد الخصم:", final_price)
elif is_student == True:
    final_price = price * 0.9  # خصم 10%
    print("أهلاً بالطالب! السعر بعد الخصم:", final_price)
else:
    final_price = price
    print("لا يوجد خصم اليوم. السعر الكامل:", final_price)

# الناتج عندما is_tuesday = True سيكون:
# اليوم الثلاثاء! السعر بعد الخصم: 25.0

ملخص الدرس

أحسنت! لقد أضفت اليوم أداة قوية جداً إلى صندوق أدواتك البرمجية. لنلخص ما تعلمناه:

  • الجمل الشرطية (if, elif, else) تسمح لبرنامجك باتخاذ قرارات وتنفيذ مسارات مختلفة من الكود.
  • تستخدم جملة if للتحقق من شرط، وelif للتحقق من شروط إضافية، وelse كخيار افتراضي إذا لم يتحقق أي شرط.
  • النقطتان الرأسيتان (:) والمسافة البادئة (Indentation) هما جزءان أساسيان وحاسمان في كتابة الجمل الشرطية في بايثون.

لقد أصبح برنامجك الآن قادراً على الاستجابة للمدخلات والظروف المتغيرة.


ما التالي؟

لقد تعلمنا كيف نجعل البرنامج يتخذ قراراً مرة واحدة. ولكن، ماذا لو أردنا أن يكرر البرنامج عملاً معيناً عدة مرات؟ على سبيل المثال، التحقق من قائمة من الطلاب بدلاً من طالب واحد فقط. في الدرس القادم، سنتعلم عن الحلقات التكرارية (Loops)، والتي ستمكننا من أتمتة المهام المتكررة بكفاءة عالية.