تمام ساتھیوں اور صرف دلچسپی رکھنے والوں کو ہیلو۔
آج ہم بریک آپریٹر کے طور پر جاوا پروگرامنگ زبان کی ایک ایسی خصوصیت دیکھیں گے۔ ٹرانزیشن آپریٹرز کے موضوع پر یہ پہلا مضمون ہے، لہذا اگر آپ کو یہ پسند آیا تو مجھے مزید لکھنے میں خوشی ہوگی۔ میں فوراً نوٹ کرنا چاہوں گا کہ یہ مضمون بنیادی طور پر ابتدائی ڈویلپرز کے لیے ہے، اور ہو سکتا ہے کہ زیادہ ترقی یافتہ طلبا یہاں اپنے لیے کوئی نئی چیز نہ پائیں۔ تو چلو چلتے ہیں. جاوا میں، اس ترتیب کو تبدیل کرنے کے 2 طریقے ہیں جس میں پروگرام کی ہدایات پر عمل کیا جاتا ہے: جمپ اسٹیٹمنٹس اور استثنیٰ ہینڈلنگ میکانزم۔ جاوا میں تین جمپ آپریٹرز ہیں: توڑیں، جاری رکھیں اور واپس جائیں۔ آج میں آپ کو آپریٹر کو قریب سے دیکھنے کی دعوت دیتا ہوں
break
۔ استثنیٰ ہینڈلنگ اتنا وسیع موضوع ہے کہ یہ اس مضمون کے دائرہ کار سے باہر ہے۔ جاوا میں وقفے کے بیان کو استعمال کرنے کے تین طریقے ہیں۔ پہلا اور سب سے مقبول طریقہ یہ ہے کہ اسے break
لوپ سے جلد باہر نکلنے کے لیے استعمال کیا جائے، مثال کے طور پر:
public class SimpleExample {
public static void main(String[] args) {
findNumberInLoop(3);
}
public static void findNumberInLoop(int number){
for (int i = 0; i < 10; i++) {
if (i == number) {
break;
}
System.out.println(i);
}
System.out.println("cycle was finished");
}
}
یہ مثال دکھائے گی:
1
2
cycle was finished
اس کا مطلب ہے کہ جب لوپ کاؤنٹر i
پاس شدہ پیرامیٹر کے برابر ہو جاتا ہے number
، یعنی نمبر 3، لوپ کا عمل جلد ختم ہو جاتا ہے۔ اگر پروگرام میں کئی نیسٹڈ لوپس ہیں، تو آؤٹ پٹ کو صرف اندرونی لوپ سے توڑیں، مثال کے طور پر:
public class SimpleExample {
public static void main(String[] args) {
findNumberInLoop(3);
}
public static void findNumberInLoop(int number){
for(int i = 0; i < 5; i++) {
for (int j =0; j < 10; j++) {
if(j == number) {
break;
}
System.out.print(j);
}
System.out.println();
}
System.out.println("cycles was finished");
}
}
یہ مثال آؤٹ پٹ تیار کرتی ہے:
012
012
012
012
012
cycles was finished
جیسا کہ مثال سے دیکھا جا سکتا ہے، اندرونی لوپ کو ہر بار نمبر 3 (پیرامیٹر number
) پر روکا جاتا ہے، اور بیرونی لوپ کو 5 بار عمل میں لایا جاتا ہے، جیسا کہ ارادہ کیا گیا ہے۔ جاوا میں، آپ ایک لوپ کے اندر ایک سے زیادہ بریک اسٹیٹمنٹ استعمال کر سکتے ہیں، لیکن اس کی سفارش نہیں کی جاتی ہے، کیونکہ کوڈ کی پڑھنے کی اہلیت اور ساخت بہت کم ہو جاتی ہے۔ دوسرا استعمال break
شاخوں میں بیانات پر عمل درآمد کو روکنے کے لیے استعمال کرنا ہے switch
، مثال کے طور پر:
public class SimpleExample {
public static void main(String[] args) {
square(2);
}
public static void square(int number){
switch (number){
case 1:
System.out.println(number*number);
break;
case 2:
System.out.println(number*number);
break;
case 3:
System.out.println(number*number);
break;
}
System.out.println("after switch");
}
}
اس مثال کو چلانے سے آؤٹ پٹ پیدا ہوگا:
4
after switch
وقفے کے بیان نے پورے بلاک کے بعد کوڈ کو کنٹرول پاس کر دیا switch
۔ اگر آپ اس مثال میں break
وضاحت نہیں کرتے ہیں :switch
public class SimpleExample {
public static void main(String[] args) {
square(2);
}
public static void square(int number){
switch (number){
case 1:
System.out.println(number*number);
case 2:
System.out.println(number*number);
case 3:
System.out.println(number*number);
}
System.out.println("after switch");
}
}
پیداوار توقع کے مطابق نہیں ہوگی:
4
4
after switch
ایسا اس لیے ہوا کیونکہ بلاک کے عمل میں آنے کے بعد، case 2
پروگرام نے بعد کے تمام کیس بلاکس پر عمل درآمد جاری رکھا ، جس نے ہمیں متعلقہ آؤٹ پٹ دیا۔ بعض اوقات آپریٹر کی یہ خصوصیت switch
ہمارے لیے فائدہ مند ہو سکتی ہے، مثال کے طور پر:
public class SimpleExample {
public static void main(String[] args) {
compare(2);
compare(7);
compare(12);
}
public static void compare(int number){
switch (number){
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
System.out.println("number is less than 5 or equal 5");
break;
case 6:
case 7:
case 8:
case 9:
System.out.println("number is greater than 5");
break;
default:
System.out.println("number is less than 0 or greater than 9");
}
System.out.println("after switch");
}
}
یہ پروگرام ایک دیے گئے نمبر کا نمبر 5 سے موازنہ کرتا ہے اور درج ذیل آؤٹ پٹ دیتا ہے۔
after switch
number is greater than 5
after switch
number is less than 0 or greater than 9
after switch
جب پہلی بار کسی طریقہ کو بلایا جاتا ہے، تو آپریٹر switch
کنٹرول آپریٹر کو case 2
اور پھر آپریٹر کو break
میں منتقل کرتا ہے case 5
۔ دوسری کال پہلی کی طرح ہے، لیکن c سے شروع ہوتی ہے case 7
۔ تیسری کال تمام صورتوں میں مناسب قیمت نہیں پاتی، اس لیے آپریٹر کو پھانسی دی جاتی ہے default
۔ تیسرا طریقہ یہ ہے کہ سی آپریٹر break
کے بجائے آپریٹر کا استعمال کیا goto
جائے۔اس کے لیے ہم آپریٹر کی ایک خاص شکل استعمال کریں گے جسے لیبل کے ساتھ break
کہا جاتا ہے ۔ break
یہ فارم break метка;
لیبل کی طرح لگتا ہے - یہ عام طور پر جاوا نام کی جگہ سے کوئی بھی مناسب نام ہوتا ہے، کوڈ کے بلاک سے پہلے۔ مزید برآں، کوڈ کے اس بلاک کو break
لیبل کے ساتھ لاگو کرنے کے بعد، کوڈ کو متعلقہ لیبل کے ساتھ بلاک کے بعد جگہ سے لاگو ہوتا رہے گا، مثال کے طور پر:
public class SimpleExample {
public static void main(String[] args) {
howWeUseLabels(true);
System.out.println();
howWeUseLabels(false);
}
public static void howWeUseLabels(boolean bool) {
firstBlock:{
secondBlock:{
thirdBlock:{
System.out.println("We will see it always");
if(bool) {
break secondBlock;
}
System.out.println("We won't see it if bool == true");
}
System.out.println("We won't see it if bool == true");
}
System.out.println("We will see it always");
}
}
}
یہ مثال درج ذیل آؤٹ پٹ تیار کرے گی۔
We will see it always
We will see it always
We will see it always
We won't see it if bool == true
We won't see it if bool == true
We will see it always
پہلی میتھڈ کال کے بعد، آپریٹر break
کنٹرول کو بلاک کے آخر میں منتقل کرتا ہے secondBlock
، باہر نکلتا secondBlock
ہے اور آخر میں thirdBlock
دوسرے آپریٹر کو چلاتا ہے ۔ دوسری کال کے بعد، تمام لائنیں اسکرین پر ظاہر ہوتی ہیں۔ لیبل بھی سائیکلوں کی نشاندہی کرنے کے لیے استعمال کیے جا سکتے ہیں۔ یہ یاد رکھنا چاہیے کہ آپ صرف لیبل کے ذریعے اشارہ کردہ کوڈ کے بلاک کے اندر سے کسی لیبل پر جا سکتے ہیں؛ مثال کے طور پر، اس طرح کا کوڈ مرتب نہیں ہوگا: println()
firstBlock
public class SimpleExample {
public static void main(String[] args) {
label:{
System.out.println("inside label");
}
if(true) {
break label;
}
System.out.println("This is error");
}
}
کوڈ اور سٹیٹمنٹ کی صفائی کے بارے میں نوٹس break
: بیان کو بہت احتیاط سے استعمال کرنے کے لیے عام طور پر قبول شدہ مشورہ ہے break
، کیونکہ استعمال break
لوپ کو سمجھنا زیادہ مشکل بناتا ہے اور پروگرامر کو اس کے آپریشن کی باریکیوں کو سمجھنے کے لیے لوپ کے اندر دیکھنے پر مجبور کرتا ہے۔ ایک تحقیقی قاعدہ ہے کہ break
آپ مختصر لوپس میں زیادہ اعتماد کے ساتھ اور لمبے اور گہرے نیسٹڈ لوپس میں زیادہ احتیاط کے ساتھ استعمال کر سکتے ہیں، کیونکہ اس سے غلطیوں کا امکان بڑھ جاتا ہے اور دوسرے پروگرامرز کے ذریعے آپ کے کوڈ کو پڑھنے اور سمجھنے میں پیچیدگی پیدا ہوتی ہے۔ break
جیسا کہ میں نے اوپر لکھا ہے، پورے کوڈ میں بکھرے ہوئے ایک بڑی تعداد کا استعمال اس بات کی نشاندہی کرتا ہے کہ پروگرامر پوری طرح سے نہیں سمجھتا کہ اس نے اپنا کوڈ کیوں لکھا جس طرح اس نے لکھا۔ اس طرح کے لوپ کو کئی چھوٹے لوپس میں توڑ کر ری فیکٹرنگ پر غور کرنا قابل قدر ہے۔ break
متبادل کے طور پر لیبل کے ساتھ استعمال کرتے وقت محتاط رہنے کی کوشش کریں goto
، کیونکہ یہ کوڈ کی ساخت کو پیچیدہ بناتا ہے۔ break
میں آج آپ کو جاوا میں آپریٹر کے بارے میں بس اتنا ہی بتانا چاہتا ہوں ۔ مجھے تعمیری تنقید کرنے میں خوشی ہوگی، اور میں آپریٹرز کے بارے میں ایک تسلسل لکھنے کے لیے بھی تیار ہوں continue
اور return
، اگر آپ دلچسپی رکھتے ہیں۔
GO TO FULL VERSION