طَبِّقْهاتعلّم المبدأ، وطبّقه بيدكمقرر 111 · أساسيات برمجة الحاسب
الدرس 13 · الوحدة 3: القرار والتكرار

أنواع الأخطاء ورسائلها

نتعرّف على أنواع الأخطاء وأشهر رسائلها. ⏱ نحو 15 دقيقة.

x = 10prnt(x)
بعد هذا الدرس ستستطيع أن:
  • تميّز أخطاء الصياغة ووقت التشغيل والأخطاء المنطقية.
  • تفهم أشهر رسائل الخطأ وحلولها.
  • تكتشف الخطأ المنطقي بتجربة قيم معروفة.

١ثلاثة أنواع من الأخطاء

كل المبرمجين يخطئون، والمهم أن نعرف كيف نجد الخطأ. الأخطاء ثلاثة أنواع:

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

٢أشهر رسائل الخطأ

الرسالةمعناهاالحل غالبًا
SyntaxErrorالكتابة غير صحيحةراجع الأقواس وعلامات التنصيص والنقطتين
IndentationErrorالمسافة البادئة خطأاضبط المسافات داخل if والحلقات
NameErrorاسم غير معروفصحّح كتابة الاسم، أو عرّف المتغيّر قبل استخدامه
TypeErrorنوعان لا يجتمعانحوّل النوع بـ int أو str
ValueErrorقيمة لا تصلح للتحويلتأكد من المدخلات
ZeroDivisionErrorقسمة على صفرافحص المقسوم عليه قبل القسمة
main.py
total = 100count = 0print(total / count)
Shell×
>>> %Run main.py
Traceback (most recent call last):
File "main.py", line 3, in <module>
print(total / count)
ZeroDivisionError: division by zero
>>>

٣الخطأ المنطقي: الأخطر

هنا لا تظهر رسالة، لكن الجواب خطأ. المطلوب متوسط 80 و 90، وهو 85:

main.py
a = 80b = 90print(a + b / 2)
Shell×
>>> %Run main.py
125.0
>>>

الناتج 125! لأن القسمة نُفّذت قبل الجمع. والتصحيح (a + b) / 2. لذلك جرّب برنامجك دائمًا بقيم تعرف جوابها مسبقًا.

📎 للاستزادة (اختياري): الخطأ قد يكون في السطر السابق

إذا نسيت إغلاق قوس، قد يشير بايثون إلى السطر التالي. فإذا لم تجد خطأً في السطر المذكور، فانظر في السطر الذي قبله.

توقّع وتحقّق

برنامج يعمل بلا رسالة خطأ لكن نتيجته خطأ. ما نوع الخطأ؟

لا رسالة، والنتيجة خطأ.

رسالة تنتهي بـ ZeroDivisionError. ما السبب؟

قسمة على صفر.

كتبت age + 5 قبل أن تعرّف age. ما الرسالة؟

اسم غير معروف بعد.

أي خطأ يظهر قبل أن يبدأ البرنامج في التنفيذ؟

بايثون يرفض الكود قبل تشغيله.

الخلاصة

تحدٍّ برمجي: أصلح البرنامج

متوسط

في هذا البرنامج ثلاثة أخطاء. أصلحها حتى يطبع متوسط الدرجتين 85.0.

المطلوب:
  • خطأ في كتابة اسم دالة.
  • خطأ في الأقواس (منطقي).
  • خطأ في المسافة البادئة.

ابدأ من هذا الكود، واضغط ▶ شغّل هنا لتكتب حلّك وتجرّبه مباشرة:

main.py
a = 80b = 90if a > 0:print("نحسب المتوسط")avg = a + b / 2prnt("المتوسط:", avg)
المطلوب×
نحسب المتوسط
المتوسط: 85.0
💡 تلميح 1
السطر داخل if يحتاج مسافة بادئة.
💡 تلميح 2
المتوسط: (a + b) / 2
💡 تلميح 3
prnt تُكتب print.

حاول بنفسك أولًا؛ للمسألة أكثر من حلّ صحيح.

main.py
a = 80b = 90if a > 0:    print("نحسب المتوسط")avg = (a + b) / 2print("المتوسط:", avg)
انتقل إلى تقييم الدرساختيار من متعدد، وصح وخطأ، وأكمل الفراغ، وتتبّع الناتج.ابدأ التقييم ←