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

تتبّع الأخطاء والوقاية منها

نتعلم كيف نجد الخطأ بسرعة، وكيف نتجنبه من البداية. ⏱ نحو 15 دقيقة.

total = 0for n in [4, 7]: total += nprint(total)
بعد هذا الدرس ستستطيع أن:
  • تقرأ رسالة الخطأ وتحدد نوعه ومكانه.
  • تتتبّع البرنامج بطباعة القيم.
  • تستخدم المصحّح ونقطة التوقف في Thonny.
  • تتبع عادات تقلل الأخطاء.

١اقرأ رسالة الخطأ من الأسفل

رسالة الخطأ ليست عدوًّا، بل دليل. اقرأها من آخرها: السطر الأخير يقول ما الخطأ، والسطر الذي فيه line يقول أين هو:

main.py
price = 20count = "3"print(price * count + 1)
Shell×
>>> %Run main.py
Traceback (most recent call last):
File "main.py", line 3, in <module>
print(price * count + 1)
TypeError: can only concatenate str (not "int") to str
>>>

آخر سطر: TypeError، أي نوعان لا يجتمعان (نص مع عدد). ورقم السطر يدلّك على مكانه. الحل: int(count).

٢التتبّع بالطباعة

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

main.py
total = 0for n in range(1, 4):    total = n    print("n =", n, "total =", total)print("المجموع:", total)
Shell×
>>> %Run main.py
n = 1 total = 1
n = 2 total = 2
n = 3 total = 3
المجموع: 3
>>>

الطباعة كشفت المشكلة: total لا يتجمّع، لأننا كتبنا total = n بدل total += n. بعد الإصلاح احذف سطر الطباعة الإضافي.

٣المصحّح ونقطة التوقف

في Thonny أداة تشغّل البرنامج خطوة بخطوة، مثل أداة «التتبّع» في هذا الموقع:

  1. اضغط على رقم السطر الذي تريد التوقف عنده، فتظهر نقطة توقف 🔴.
  2. اضغط زر التصحيح 🐞 بدل زر التشغيل، فيتوقف البرنامج عند تلك النقطة.
  3. اضغط «Step over» (أو F6) لتنفيذ سطر واحد في كل مرة.
  4. افتح View ← Variables لترى قيمة كل متغيّر وهي تتغيّر.

٤الوقاية خير من العلاج

العادةلماذا؟
شغّل البرنامج بعد كل جزء صغيرإذا ظهر خطأ تعرف أنه في الجزء الجديد
أسماء واضحة: price لا xتفهم الكود وتكتشف الخطأ أسرع
جرّب بقيم تعرف جوابهاتكتشف الخطأ المنطقي
أصلح خطأً واحدًا ثم شغّللا تضيف أخطاء جديدة وأنت تصلح

توقّع وتحقّق

أين تجد نوع الخطأ في رسالة بايثون؟

السطر الأخير يذكر نوع الخطأ.

ما فائدة نقطة التوقف 🔴؟

نتوقف ونفحص.

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

نرى أين يبدأ الخطأ.

أي عادة تقلل الأخطاء؟

كل جزء يُختبر وحده.

الخلاصة

تحدٍّ برمجي: اعثر على الخطأ

متوسط

هذا البرنامج يجب أن يطبع مجموع الدرجات 240، لكنه يطبع 90. استخدم الطباعة لتعرف السبب، ثم أصلحه.

المطلوب:
  • أضف print داخل الحلقة لترى القيم.
  • أصلح الخطأ.
  • احذف سطر الطباعة الإضافي في النهاية.

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

main.py
marks = [70, 80, 90]total = 0for m in marks:    total = mprint("المجموع:", total)
المطلوب×
المجموع: 240
💡 تلميح 1
اطبع total داخل الحلقة: ألا يتجمّع؟
💡 تلميح 2
total += m بدل total = m

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

main.py
marks = [70, 80, 90]total = 0for m in marks:    total += mprint("المجموع:", total)
انتقل إلى تقييم الدرساختيار من متعدد، وصح وخطأ، وأكمل الفراغ، وتتبّع الناتج.ابدأ التقييم ←