Skip to content
سبق 8

Decisions And Branching

اب تک ہم نے جو الگورتھم دیکھے، وہ اوپر سے نیچے سیدھی لائن میں چلتے ہیں، شاید بیچ میں ایک لوپ تہہ شدہ۔ لیکن زندگی شاذ و نادر ہی ایک سیدھی لائن میں چلنے دیتی ہے۔ ہر موڑ پر دنیا ایک سوال کرتی ہے اور اگلی گلی دکھانے سے پہلے…

اس کو سمجھنے کا ایک سے زیادہ طریقہ ہے۔ اگر آپ کو صرف ایک طریقہ سکھایا گیا ہے تو آپ کو حق سے کم سکھایا گیا ہے۔

اس کو سمجھنے کا ایک سے زیادہ طریقہ ہے۔ اگر آپ کو صرف ایک طریقہ سکھایا گیا ہے تو آپ کو حق سے کم سکھایا گیا ہے۔

اب تک ہم نے جو الگورتھم دیکھے، وہ اوپر سے نیچے سیدھی لائن میں چلتے ہیں، شاید بیچ میں ایک لوپ تہہ شدہ۔ لیکن زندگی شاذ و نادر ہی ایک سیدھی لائن میں چلنے دیتی ہے۔ ہر موڑ پر دنیا ایک سوال کرتی ہے اور اگلی گلی دکھانے سے پہلے آپ کے جواب کا انتظار کرتی ہے۔ اگر بارش ہو تو چھتری لے لو۔ اگر بجلی نہ ہو تو موم بتی جلاؤ۔ اگر گیس کا پریشر کم ہو تو چولہا چھوٹے برنر پر کر دو۔ پروگرامر ان موڑوں کو if-else یا برانچنگ کہتے ہیں۔ ہر دلچسپ پروگرام میں یہ ہوتے ہیں۔ ان کے بغیر کوڈ صرف ایک ہی کام کر سکتا ہے، جو شاید ہی کارآمد ہو۔

ہفتے کا سب سے سادہ موڑ لیں۔ اگر بارش ہو تو چھتری لے لو، ورنہ نہیں۔ دو راستے۔ شروع وہی، آپ گھر سے نکلنے والے ہیں۔ آخر وہی، آپ اسکول پہنچ گئے۔ بیچ میں صرف ایک چیز کا فرق ہے۔ if دنیا سے سوال کرتا ہے۔ دنیا ہاں یا نہیں جواب دیتی ہے۔ جواب کے مطابق آپ کا عمل ہوتا ہے۔ پروگرام یہی کرتا ہے۔ اگر بارش سچ ہے، چھتری ساتھ لو۔ اگر جھوٹ ہے، نہ لو۔ دنیا ان پٹ ہے۔ سچ اور جھوٹ وہ ممکنہ جواب ہیں جو ان پٹ دے سکتا ہے۔

اب فیروزپور روڈ کے چوک پر کھڑے ہو کر ٹریفک سگنل دیکھیں۔ سبز، گاڑیاں چلتی ہیں۔ سرخ، گاڑیاں رک جاتی ہیں۔ پیلی، احتیاط والے آہستہ ہوتے ہیں اور جلد بازی والے رفتار بڑھا دیتے ہیں۔ ایک سگنل، تین رنگ، تین برانچ۔ کوڈ میں یہ ایسا لکھا جاتا ہے، اگر سبز ہے تو چلو، ورنہ اگر پیلا ہے تو آہستہ کرو، ورنہ رک جاؤ۔ برانچوں کی ترتیب اہم ہے۔ سگنل بیک وقت دو رنگ نہیں دکھاتا، اس لیے پروگرام انہیں ایک ایک کر کے چیک کرتا ہے اور پہلا ملتا ہوا چنتا ہے۔ پنجاب کا ٹریفک وارڈن اپنی گھڑی پر نظر ڈالتے ہوئے بالکل اسی طرح سوچتا ہے۔

ایک پسندیدہ پاکستانی مثال۔ نکڑ کی کریانہ کی دکان۔ آپ کاؤنٹر پر بسکٹ کا پیکٹ رکھتے ہیں۔ بل ایک سو چالیس روپے ہے۔ آپ چچا کو پانچ سو کا نوٹ پکڑاتے ہیں۔ وہ گلے کی دراز میں دیکھتے ہیں۔ دو راستے کھلتے ہیں۔ اگر صحیح کھلا موجود ہو تو وہ تین سو ساٹھ روپے گن کر دیتے ہیں اور سودا مکمل۔ اگر نہ ہو تو کہتے ہیں، بیٹا کھلے پیسے نہیں ہیں، دیکھو پھر آنا یا کچھ اور لے لو۔ پورا تبادلہ ایک بڑا if-else ہے، ان پٹ گلے کی دراز کی حالت ہے اور آؤٹ پٹ تین میں سے ایک، کھلا، تاخیر، یا کوئی اور چیز خریدی گئی۔ یہی خیال روزانہ پاکستان میں ہزاروں بار، ہر گلی میں، دہرایا جاتا ہے۔ آپ زندگی بھر برانچوں سے بنی دنیا میں رہے ہیں۔

برانچوں کے اندر برانچ ہو سکتی ہے۔ ایک برانچ کے اندر دوسری بیٹھ سکتی ہے۔ اگر بارش ہو رہی ہو، اور پھر اگر میری چھتری میرے پاس ہو تو میں پیدل اسکول جاؤں گا، ورنہ ون کا انتظار کروں گا۔ دو سوال، چار ممکنہ راستے۔ گہرائی بڑھنے پر کوڈ ایسا لگنے لگتا ہے جیسے کڑک چائے کے نسخے کے اندر بہت سارے ذیلی قدم۔ سمجھدار پروگرامر اسے ہموار کرنا سیکھتے ہیں۔ تین گہرے سوالوں کی بجائے سوال کو نئی شکل دیتے ہیں جس کا جواب ایک یا دو پرتوں میں مل جائے۔ یہ نظم اس استاد جیسا ہے جو ایک پیچیدہ اصول جماعت پنجم کے بچے کو الجھے پیراگراف کی بجائے ایک صاف جملے میں سمجھا دیتا ہے۔

ایک اختتامی بات۔ کوڈ کے اندر کی برانچیں لکھنے والے کے ذہن کی برانچوں کا عکس ہیں۔ جس کوڈر نے صرف دو صورتیں سوچی ہوں، وہ پروگرام دو پر چلے گا اور تیسری پر ٹوٹے گا۔ جو کوڈر اپنے شہر میں چلے، پیٹرول پمپ، اسکول گیٹ، ATM، اور ڈاکٹر کے کلینک پر دیکھے کہ کیا ہوتا ہے، اس کا کوڈ اس گدلی حقیقی دنیا کو سنبھالے گا جس سے کوڈ کا واسطہ پڑے گا۔ سبق یہ ہے، کی بورڈ سے شروع نہ کریں۔ چوک، دکان، پرچی، اور قطار سے شروع کریں۔ جب آپ نے فیصلے ہوتے دیکھ لیے ہوں تو if-else خود لکھا جاتا ہے۔

تخمینی وقت: 12 منٹ