ٹریسنگ کے سوالات میں نمبروں کا ضیاع عام طور پر الگورتھم کو نہ سمجھنے کی وجہ سے نہیں ہوتا۔ اس کی وجہ اکثر ایک ایسا غیر مستقل (inconsistent) ٹیبل بنانا ہوتا ہے جس میں کسی ایک قطار (row) میں خفیہ طور پر دو مراحل شامل ہوں، یا جہاں کوئی ویری ایبل (variable) اس لیے خالی چھوڑ دیا جائے کہ اس کی قدر میں کوئی تبدیلی نہیں آئی۔
مختصر فہرست A = [4, 1, 3] کے ساتھ، ہر قطار کو بالکل ایک مرحلے (step) کے بعد پروگرام کی مکمل اسٹیٹ (حالت) سمجھیں۔ یہاں مرحلے سے مراد لوپ کا ایک چکر (iteration)، ایک اسائنمنٹ (assignment)، یا ایک تبادلہ (swap) ہو سکتا ہے، جس کا انحصار اس بات پر ہے کہ سیوڈو کوڈ (pseudocode) کی لائن کیا کام کر رہی ہے۔
ٹیبل دیکھنے سے پہلے، اس سوال کا جواب دیں۔ اگر کوئی لوپ ہر چکر میں A[i] کو پڑھتا ہے، تو A = [4, 1, 3] کے لیے اس قطار میں جہاں i = 1 ہے، current_value والے کالم میں کون سی قدر (value) آنی چاہیے؟
ملاحظہ کریں کہ A = [4, 1, 3] کے لیے سنگل اسٹیپ اسٹیٹ ٹیبل کو کس طرح پُر کیا جاتا ہے۔
یہ جدول (table) اس لیے کارآمد ہے کیونکہ ہر قطار (row) میں ان تمام متغیرات (variables) کو دہرایا جاتا ہے جنہیں ٹریک کیا جا رہا ہو، چاہے ان میں کوئی تبدیلی نہ بھی آئی ہو۔ اگر i کی قدر بڑھتی ہے لیکن current_value وہی رہتی ہے، تب بھی آپ current_value کو دوبارہ لکھتے ہیں؛ کیونکہ مارکنگ کا طریقہ کار (mark scheme) اس بات کا ثبوت چاہتا ہے کہ آپ نے اسے تبدیل کیے بغیر برقرار رکھا ہے، نہ یہ کہ آپ اسے لکھنا بھول گئے ہیں۔
جب آپ قطار در قطار متغیرات کو مستقل رکھنے میں کامیاب ہو جاتے ہیں، تو غلطیاں ظاہر ہونے کا اگلا مقام ‘ایریز’ (arrays) ہوتے ہیں۔ بنیادی غلطی ‘ریڈ’ (read) اور ‘رائٹ’ (write) کے عمل کو اس طرح لاگو کرنا ہے جیسے وہ بیک وقت ہو رہے ہوں، جس کے نتیجے میں قطار میں ایسی قدر (value) دکھائی دیتی ہے جو درحقیقت کسی بعد کے مرحلے پر وجود میں آتی ہے۔
انڈیکس (index) وہ مقام ہے جو ایرے کے کسی عنصر (element) تک رسائی کے لیے استعمال ہوتا ہے، جیسے کہ A[0] یا A[1]، اور آپ کو امتحان میں رائج طریقہ کار (convention) کی پابندی کرنی چاہیے۔ اگر سوال میں ‘1-based indexing’ کا ذکر ہو، تو A[1] پہلا عنصر ہوگا، اور آپ کے ٹریس ٹیبل (trace table) میں ہر رسائی کو اسی اصول کی پیروی کرنی چاہیے۔
ایرے کے اسنیپ شاٹس پر جانے سے پہلے، اس سوال کا جواب دیں۔ اگر آپ A = [4, 1, 3] میں انڈیکس 0 اور 1 پر موجود عناصر کا آپس میں تبادلہ (swap) کرتے ہیں، تو ایرے اسنیپ شاٹ کی اگلی قطار میں کیا ظاہر ہونا چاہیے؟
آئیے یہ سیکھیں کہ ایرے میں ‘ریڈ’ اور ‘رائٹ’ کے عمل کو کس طرح الگ الگ، ایک ہی قطار میں ہونے والی ‘حالت کی تبدیلیوں’ (state changes) کے طور پر ریکارڈ کیا جائے۔