شرح درس اتخاذ القرارات ثاني متوسط الفصل الأول
الجملة if-elif-else تسمح للبرنامج باختيار مسار واحد من عدة مسارات، فتُفحص الشروط من الأعلى إلى الأسفل وتُنفّذ أول حالة يتحقق شرطها فقط.

أهداف الدرس
- يستخدم if-elif-else للتعامل مع أكثر من حالتين.
- يرتّب الشروط ترتيبًا صحيحًا ويفسّر أثر الترتيب في النتيجة.
- يدمج الشروط بـand وor في قرار واحد.
- يتتبع البرنامج بإدخالات مختلفة ويتوقع الناتج.
المفهوم الأساسي
الجملة if-elif-else تسمح للبرنامج باختيار مسار واحد من عدة مسارات، فتُفحص الشروط من الأعلى إلى الأسفل وتُنفّذ أول حالة يتحقق شرطها فقط.
شرح الدرس
عند توزيع الشهادات في المدرسة لا ينقسم الطلاب إلى ناجح وراسب فقط، بل توجد تقديرات متعددة. ولكي يتخذ البرنامج قرارًا بين أكثر من حالتين نستخدم elif، وهي اختصار «else if» أي «وإلا إذا».
بنية if-elif-else
- if: تفحص الشرط الأول.
- elif: تفحص شرطًا إضافيًا إذا لم يتحقق ما قبله، ويمكن تكرارها عدة مرات.
- else: تُنفّذ إذا لم يتحقق أي شرط قبلها.
«يُنفّذ البرنامج مسارًا واحدًا فقط، ثم يتجاوز بقية الشروط»
برنامج تقدير الطالب
التقدير: ممتاز لمن حصل على ٩٠ فأعلى، وجيد جدًا لمن حصل على ٨٠ فأعلى، وجيد لمن حصل على ٧٠ فأعلى، ومقبول لمن حصل على ٦٠ فأعلى، وما دون ذلك راسب.
mark = int(input("أدخل الدرجة: "))
if mark >= 90:
print("ممتاز")
elif mark >= 80:
print("جيد جدًا")
elif mark >= 70:
print("جيد")
elif mark >= 60:
print("مقبول")
else:
print("راسب")نتتبع البرنامج بإدخالات مختلفة:
- الإدخال ٩٥: الشرط الأول صحيح فيطبع ممتاز.
- الإدخال ٨٥: الأول خاطئ والثاني صحيح فيطبع جيد جدًا.
- الإدخال ٧٢: يصل إلى الشرط الثالث فيطبع جيد.
- الإدخال ٦٠: يصل إلى الشرط الرابع فيطبع مقبول.
- الإدخال ٤٥: لا يتحقق أي شرط فيطبع راسب.
أثر ترتيب الشروط
الترتيب مهم جدًا. افترض أننا بدأنا بالشرط الأخف:
mark = 75
if mark >= 60:
print("مقبول")
elif mark >= 70:
print("جيد")هذا البرنامج يطبع: مقبول، مع أن الدرجة ٧٥ تستحق جيد. السبب أن الشرط الأول تحقق فتوقف البرنامج عن فحص بقية الشروط.
نرتّب الشروط من الأكثر تحديدًا إلى الأقل، فنبدأ بالدرجات العليا في مسألة التقدير.
دمج الشروط
في متحف تراثي رسوم الدخول مجانية لمن عمره أقل من ٦ سنوات أو ٦٠ سنة فأكثر، وعشرة ريالات لمن عمره من ٦ إلى ١٧ سنة، وعشرون ريالا لمن عداهم. نحتاج or في الحالة المجانية وand في الحالة الثانية:
age = int(input("أدخل العمر: "))
if age < 6 or age >= 60:
print("الدخول مجاني")
elif age >= 6 and age <= 17:
print("الرسوم 10 ريالات")
else:
print("الرسوم 20 ريالا")نتتبع البرنامج:
- العمر ٤: الدخول مجاني.
- العمر ١٠: يطبع الرسوم 10 ريالات.
- العمر ٣٠: يطبع الرسوم 20 ريالا.
- العمر ٦٠: الدخول مجاني.
يمكن كتابة الشرط الثاني بصورة أقصر هي 6 <= age <= 17، وهي صحيحة في بايثون.
نشاط تعليمي
التطبيق الأول
ما الذي يطبعه برنامج التقدير عند إدخال الدرجة ٨٠؟
يطبع «جيد جدًا» لأن الشرط mark >= 80 صحيح.
أن يتتبع الطالب البرنامج عند حد التقدير.
المثال الثاني
اكتب برنامجًا يطبع «بارد» إذا كانت الحرارة temp أقل من ١٥ و«معتدل» إذا كانت أقل من ٣٠ و«حار» في غير ذلك.
if temp < 15: ثم elif temp < 30: ثم else:.
أن يكتب الطالب if-elif-else من وصف مكتوب.
المسألة الثالثة
ما الخطأ في برنامج يبدأ بالشرط mark >= 60 ثم mark >= 90؟
الشرط الأول يتحقق لكل درجة تبلغ ٦٠ فأكثر فلا يصل البرنامج إلى شرط التسعين.
أن يفسّر الطالب أثر ترتيب الشروط.
ملاحظات مهمة
- 1يُنفّذ مسار واحد فقط من if-elif-else.
- 2يمكن استخدام أكثر من elif، أما else فتأتي مرة واحدة في الآخر.
- 3رتّب الشروط من الأكثر تحديدًا إلى الأقل.
- 4استخدم and وor لدمج شرطين في قرار واحد.
أخطاء شائعة
- ✗ خطأكتابة else if بدل elif.✓ الصواب: نكتب elif في بايثون.
- ✗ خطأوضع شرط بعد else.✓ الصواب: else تُكتب بلا شرط.
+عرض جميع الأخطاء (3) ←إخفاء الأخطاء الإضافية
- ✗ خطأترتيب الشروط من الأخف إلى الأشد.✓ الصواب: نبدأ بالشرط الأكثر تحديدًا.
ملخص الدرس
- elif تفحص شرطًا آخر إذا لم يتحقق ما قبله.
- ينفّذ البرنامج أول شرط صحيح ثم يتوقف عن الفحص.
- الترتيب يؤثر في الناتج.
- and وor تدمجان شرطين في عبارة واحدة.
هل أتقنت الدرس؟اختبر نفسك من خلال اختبار قصير من عدة أسئلة.