الفكرة ببساطة
الشرح الذاتي (Self-Explanation) يعني توقف عند خطوة في الحل وتشرح لنفسك ليه هي صحيحة، وش المعلومة اللي سمحت فيها، وش يصير لو تغيّر الشرط.
استخدمه وقت قراءة حل أو تتبع كود. إذا ما قدرت تبرر خطوة، حدد القاعدة الناقصة وارجع لها، وبعدها أعد تفسير الخطوة بكلامك.
كيف تطبقها خطوة بخطوة؟
- اختر خطوة واحدة في الحل يكون سببها غير واضح لك.
- اكتب جملة تبدأ بـ «هذه الخطوة صحيحة لأن…» واربطها بشرط أو قاعدة.
- غيّر الشرط في بالك واسأل وش يصير للخطوة.
- قارن تفسيرك بالمصدر، ثم جرّبه على مسألة ثانية.
مثال محلول
تبحث عن 15 في مصفوفة مرتبة تصاعديا. قيمة العنصر الأوسط 10. ليه تقدر تستبعد العنصر الأوسط والجزء اللي على يساره؟
بسبب الترتيب التصاعدي، كل القيم على يسار 10 أصغر منه أو تساويه. وبما أن 15 أكبر من 10، فلو كان موجودا، مكانه يمين المنتصف. عندها نحدث بداية نطاق البحث إلى mid + 1.
انتبه لهالنقطة
عبارة «لأن الكود كتب mid + 1» تصف الأمر فقط. اربط تحديث النطاق بسبب استحالة وجود القيمة في الجزء المستبعد.
جرّب بنفسك
إذا قيمة المنتصف 10 والهدف 7، ليه يصير آخر مؤشر في النطاق mid − 1؟
اعرض الإجابة
كل القيم من المنتصف إلى نهاية النطاق تساوي 10 أو أكبر. الهدف 7، فالمكان الممكن على اليسار، وآخر مؤشر هناك هو mid − 1.