اتخاذ القرارات (If, Elif, Else Statements)
| العبارة أو المفهوم الشرطي | آلية التنفيذ والتحكم في التدفق | شروط الصياغة البرمجية والملاحظات |
|---|---|---|
| العبارة الأساسية if | تفحص الشرط الأول فإذا كان True يتم تنفيذ الكتلة البرمجية التابعة لها ويتجاهل باقي الشروط تماماً | أول سطر إلزامي في أي بنية شرطية |
| العبارة البديلة elif | اختصار للجملة else if وتفحص شرطاً جديداً في حال فشل الشرط الذي يسبقها مباشرة | خيار تكراره مفتوح بعدد غير محدود |
| العبارة النهائية else | كتلة الأمان الأخير التي تُنفذ تلقائياً في حال فشل وسقوط جميع الشروط السابقة كلياً | خيار اختياري ولا يظهر إلا مرة واحدة في النهاية |
| النقطتان الرأسيتان كولون | رمز إلزامي يوضع مباشرة بعد نهاية أي جملة شرطية للإعلان عن بدء كتلة برمجية فرعية | نسيانها يسبب خطأ SyntaxError فوراً |
| المسافة البادئة Indentation | إزاحة كود التكتل بمقدار أربع مسافات أو زر Tab لإعلام بايثون بتبعية هذا الكود للشرط | معيار إجباري يترتب على مخالفته خطأ تكتلي |
| المعامل الثلاثي Ternary Operator | صياغة سريعة ومختصرة لكتابة شرط بسيط في سطر واحد وإسناد النتيجة فوراً لمتغير | ترفع كفاءة واختصار الأكواد غير المعقدة |
1. مفهوم اتخاذ القرارات والتحكم في التدفق (Control Flow)
بشكل افتراضي، يقرأ محرك بايثون الأكواد وينفذها بشكل متتالي من الأعلى إلى الأسفل. تتيح جمل اتخاذ القرار (Conditional Statements) كسر هذا التدفق الخطي، مما يمكّن البرنامج من فحص شروط معينة في الذاكرة، وبناءً على النتيجة المنطقية (True أو False)، يقرر تخطي كتل برمجية كاملة أو تنفيذ مسارات مخصصة.
تتكون البنية الشرطية الكاملة في بايثون من ثلاثة أركان أساسية ترتب منطقياً وتخضع لقواعد صياغة صارمة:
| 1 | score = 85 |
| 2 | |
| 3 | if score >= 90: |
| 4 | print("التقدير: ممتاز") |
| 5 | elif score >= 80: |
| 6 | print("التقدير: جيد جداً") |
| 7 | elif score >= 70: |
| 8 | print("التقدير: جيد") |
| 9 | else: |
| 10 | print("التقدير: بحاجة لتحسين") |
عند تشغيل الكتل الشرطية، تسير بايثون عبر خطة الفحص المتتالي:
توفر بايثون أسلوباً مختصراً يُعرف بـ (Conditional Expression) أو المعامل الثلاثي، يتيح كتابة جملة if ... else البسيطة بالكامل في سطر واحد. يُستخدم هذا النمط خصيصاً لاختصار الأكواد وتسهيل قراءتها عند الرغبة في إسناد قيمة لمتغير بناءً على شرط سريع ومباشر.
ℹ️ معلومة
Variable = Value if True if Condition else Value if False
| 1 | age = 20 |
| 2 | |
| 3 | # الصياغة المختصرة في سطر واحد |
| 4 | status = "بالغ" if age >= 18 else "قاصر" |
| 5 | print(status) # المخرج: بالغ |
| 1 | # صيغة if-elif-else |
| 2 | score = 75 |
| 3 | |
| 4 | if score >= 90: |
| 5 | grade = "ممتاز" |
| 6 | elif score >= 80: |
| 7 | grade = "جيد جداً" |
| 8 | elif score >= 70: |
| 9 | grade = "جيد" |
| 10 | elif score >= 60: |
| 11 | grade = "مقبول" |
| 12 | else: |
| 13 | grade = "راسب" |
| 14 | |
| 15 | print(f"درجتك: {grade}") |
مثال 1: تحديد التقدير
| 1 | grade = int(input("أدخل درجتك (0-100): ")) |
| 2 | |
| 3 | if grade >= 90: |
| 4 | print("ممتاز - A") |
| 5 | elif grade >= 80: |
| 6 | print("جيد جداً - B") |
| 7 | elif grade >= 70: |
| 8 | print("جيد - C") |
| 9 | elif grade >= 60: |
| 10 | print("مقبول - D") |
| 11 | else: |
| 12 | print("راسب - F") |
مثال 2: Ternary Operator
| 1 | age = 20 |
| 2 | |
| 3 | # طريقة مختصرة لـ if-else |
| 4 | status = "بالغ" if age >= 18 else "قاصر" |
| 5 | print(status) |
| 6 | |
| 7 | # مثال آخر |
| 8 | number = 7 |
| 9 | parity = "فردي" if number % 2 != 0 else "زوجي" |
| 10 | print(f"{number} هو رقم {parity}") |