عادةً لا يعود فقدان الدرجات في أسئلة تتبع الخوارزميات إلى عدم فهم الخوارزمية نفسها، بل إلى إعداد جدول غير متسق؛ كأن يتضمن صف واحد -دون توضيح كافٍ- خطوتين معاً، أو أن يُترك حقل متغير ما فارغاً لمجرد أن قيمته لم تتغير.
عند التعامل مع القائمة الصغيرة A = [4, 1, 3]، اعتبر كل صف يمثل حالة البرنامج الكاملة بعد خطوة واحدة بالضبط. وتُعرَّف “الخطوة” هنا بأنها دورة واحدة في حلقة تكرارية (loop iteration)، أو عملية إسناد (assignment)، أو عملية تبديل (swap)، وذلك حسب طبيعة الإجراء الذي ينفذه سطر الكود الزائف (pseudocode).
قبل الاطلاع على الجدول، أجب عن السؤال التالي: إذا كانت الحلقة التكرارية تقرأ القيمة A[i] في كل دورة، فما هي القيمة التي يجب أن تظهر في عمود current_value (القيمة الحالية) عند الصف الذي تكون فيه i = 1 بالنسبة للقائمة A = [4, 1, 3]؟
طالع كيفية تعبئة جدول الحالة (خطوة بخطوة) للقائمة A = [4, 1, 3].
يعمل الجدول بهذه الطريقة لأن كل صف يكرر جميع المتغيرات التي يتم تتبعها، حتى تلك التي لا تتغير. فإذا زادت قيمة i بينما ظلت current_value ثابتة، يجب عليك كتابة current_value مرة أخرى؛ لأن معايير التصحيح تتطلب دليلاً على أنك أبقيتها دون تغيير، وليس أنك أغفلت تدوينها.
بمجرد إتقان الحفاظ على اتساق المتغيرات عبر الصفوف، تظهر الأخطاء عادةً عند التعامل مع المصفوفات. يتمثل الخطأ الرئيسي في إجراء عمليتي القراءة والكتابة وكأنهما تحدثان في آن واحد، مما يؤدي إلى إظهار قيمة في الصف لا تظهر فعلياً إلا في خطوة لاحقة.
يُقصد بالمؤشر (Index) الموقع المستخدم للوصول إلى عنصر في المصفوفة، مثل A[0] أو A[1]، ويجب عليك الالتزام بالاصطلاح المعتمد في الاختبار. فإذا نص السؤال على أن الترقيم يبدأ من 1، فإن A[1] يمثل العنصر الأول، ويجب أن تتبع جميع عمليات الوصول في جدول التتبع الخاص بك هذه القاعدة نفسها.
قبل الانتقال إلى لقطات حالة المصفوفة، أجب عن هذا السؤال: إذا قمت بتبديل العنصرين الموجودين عند المؤشرين 0 و 1 في المصفوفة A = [4, 1, 3]، فما الذي يجب أن يظهره الصف التالي الخاص بلقطة حالة المصفوفة؟
تعرّف على كيفية تسجيل عمليات القراءة والكتابة في المصفوفة باعتبارها تغييرات منفصلة في الحالة، بحيث تظهر كل منها في صف مستقل.