جاوا تین جمپ آپریٹرز کو سپورٹ کرتا ہے آپریٹر کا استعمال کرتے ہوئے
جاوا میں آپریٹر
سوئچ سٹیٹمنٹس اور لوپس میں استعمال ہونے کے علاوہ ، آپریٹر کا استعمال کرتے ہوئے
بعض اوقات لوپ کی اگلی تکرار جلد شروع کرنا مفید ہوتا ہے۔ یعنی، آپ کو لوپ پر عمل درآمد جاری رکھنے کی ضرورت ہے، لیکن اس مخصوص تکرار کے لیے اس کے باڈی میں باقی کوڈ پر کارروائی کرنا بند کر دیں۔ درحقیقت، یہ آپریٹر
آخری کنٹرول بیان ہے
break
- continue
اور return
. وہ آپ کے پروگرام کے دوسرے حصے میں کنٹرول منتقل کرتے ہیں۔ آئیے آپریٹرز میں سے ہر ایک پر تفصیل سے غور کریں۔
آپریٹر کا استعمال کرتے ہوئےbreak
جاوا میں آپریٹر break
تین صورتوں میں استعمال ہوتا ہے۔ سب سے پہلے، جیسا کہ آپ پہلے ہی دیکھ چکے ہیں، یہ بیانات کی شاخوں میں بیانات کی ترتیب کو ختم کرتا ہے switch
۔ دوم، یہ ایک لوپ کو توڑنے کے لئے استعمال کیا جا سکتا ہے. سوم، اسے غیر مشروط جمپ آپریٹر کی "مہذب" شکل کے طور پر استعمال کیا جا سکتا ہے goto
۔ یہ حصہ آخری دو صورتوں کی وضاحت کرتا ہے۔ break
لوپ سے باہر نکلنے کے لیے استعمال کریں استعمال کر کے break
، آپ لوپ کو فوری طور پر ختم کرنے پر مجبور کر سکتے ہیں، کنڈیشنل ایکسپریشن اور لوپ باڈی میں کسی بھی باقی کوڈ کو نظرانداز کر کے۔ جب break
ایک لوپ کے اندر کسی بیان کا سامنا ہوتا ہے، تو دوسرا ختم ہو جاتا ہے اور پروگرام کا کنٹرول اس بیان میں منتقل ہو جاتا ہے جو اس کی پیروی کرتا ہے۔ سادہ مثال:
// Использование break для выхода из цикла.
public class BreakLoop {
public static void main(String[] args) {
for (int i = 0; i < 100; i++) {
if (i == 4) {
break; // завершить цикл, если i = 4
}
System.out.println("i: " + i);
}
System.out.println("Цикл завершен.");
}
}
یہ پروگرام درج ذیل آؤٹ پٹ تیار کرتا ہے:
i: 0
i: 1
i: 2
i: 3
Цикл завершен.
اگرچہ لوپ کو for
یہاں 0 سے 99 بار تک اس کے بیانات پر عمل درآمد کرنے کے لیے ڈیزائن کیا گیا ہے، آپریٹر break
اسے i 4 سال کی عمر میں جلد ختم کرنے کا سبب بنتا ہے۔ آپریٹر کو break
جاوا کے کسی بھی لوپ کے ساتھ استعمال کیا جا سکتا ہے، بشمول جان بوجھ کر لامحدود لوپس۔ مثال کے طور پر، نیچے ایک لوپ کا استعمال کرتے ہوئے کوڈ کیا گیا پچھلا پروگرام ہے while
۔ اس پروگرام کا آؤٹ پٹ اس کے پیشرو جیسا ہی ہے۔
// Использование break для выхода из while-цикла.
public class BreakLoop2 {
public static void main(String[] args) {
int i = 0;
while (i < 100) {
if (i == 4) {
break; // закончить цикл, если i = 4
}
System.out.println("i: " + i);
i++;
}
System.out.println("Цикл завершен.");
}
}
جب نیسٹڈ لوپس کے سیٹ کے اندر استعمال کیا جائے تو، بیان break
صرف اندرونی لوپ سے باہر نکلے گا۔ مثال کے طور پر:
// Использование break во вложенных циклах.
public class BreakLoop3 {
public static void main(String[] args) {
for (int i = 0; i < 3; i++) {
System.out.print("Итерация " + i + ": ");
for (int j = 0; j < 10; j++) {
if (j == 4) {
break; // закончить цикл, если j = 4
}
System.out.print(j + " ");
}
System.out.println();
}
System.out.println("Цикл завершен.");
}
}
یہ پروگرام درج ذیل آؤٹ پٹ تیار کرتا ہے:
Итерация 0: 0 1 2 3
Итерация 1: 0 1 2 3
Итерация 2: 0 1 2 3
Цикл завершен.
break
جیسا کہ آپ دیکھ سکتے ہیں، اندرونی لوپ میں بیان صرف اس لوپ کو ختم کرنے کا سبب بنتا ہے۔ بیرونی لوپ متاثر نہیں ہوتا ہے۔ آئیے اس حوالے سے دو مزید تبصرے کرتے ہیں break
۔ سب سے پہلے، متعدد بیانات ایک لوپ میں ظاہر ہو سکتے ہیں break
۔ تاہم، محتاط رہیں. ان میں سے بہت سارے آپ کے کوڈ کو تباہ کرتے ہیں۔ دوسرا، break
جو - آپریٹر کو ختم کرتا ہے switch
، صرف دیئے گئے switch
- آپریٹر کو متاثر کرتا ہے (اور اس میں شامل لوپس کو نہیں)۔ تبصرہ: Break
لوپ ختم کرنے کے عام ذریعہ کے طور پر ڈیزائن نہیں کیا گیا تھا۔ یہ مقصد لوپ ہیڈر مشروط اظہار کے ذریعہ پورا کیا جاتا ہے۔ آپریٹر کو break
صرف اس صورت میں استعمال کیا جانا چاہئے جب کچھ خاص حالات پیدا ہوں۔
break
فارم کے طور پر استعمال کریں۔goto
سوئچ سٹیٹمنٹس اور لوپس میں استعمال ہونے کے علاوہ ، break
اسے اکیلے کی "مہذب" شکل کے طور پر بھی استعمال کیا جا سکتا ہے goto
۔ جاوا آپریٹر پر مشتمل نہیں ہے goto
کیونکہ یہ برانچ کو من مانی اور غیر ساختہ طریقے سے انجام دیتا ہے۔ کوڈ جو استعمال کرتا ہے goto
۔ یہ کچھ کمپائلر آپٹیمائزیشن کو بھی اوور رائیڈ کرتا ہے۔ تاہم، ایک پروگرام میں کئی جگہیں ایسی ہیں جہاں goto
کنٹرول کا بہاؤ ایک قابل قدر اور جائز تعمیر ہے۔ مثال کے طور پر، goto
یہ اس وقت کارآمد ہو سکتا ہے جب آپ لوپس کے گہرے نیسٹڈ سیٹ سے باہر نکل رہے ہوں۔ ایسے حالات کو سنبھالنے کے لیے، جاوا آپریٹر کی ایک توسیع شدہ شکل کی وضاحت کرتا ہے break
۔ اس کا استعمال کرتے ہوئے، آپ کوڈ کے ایک یا زیادہ بلاکس سے باہر نکل سکتے ہیں۔ ان بلاکس کو لوپ یا بیان کا حصہ بننے کی ضرورت نہیں ہے switch
۔ یہ کوئی بھی بلاک ہو سکتا ہے۔ اگلا، آپ اس بات کا تعین کر سکتے ہیں کہ عملدرآمد کہاں جاری رہے گا کیونکہ یہ فارم break
نشان کے ساتھ کام کرتا ہے اور goto
اس کے مسائل کو نظرانداز کرتے ہوئے، کے فوائد فراہم کرتا ہے۔ ایک break
لیبل والے بیان کی درج ذیل عمومی شکل ہوتی ہے: break label;
یہاں label
ایک لیبل کا نام ہے جو کوڈ کے کچھ بلاک کی شناخت کرتا ہے۔ جب اس فارم کو break
عمل میں لایا جاتا ہے، کنٹرول کو کوڈ کے نامزد بلاک (جس کا لیبل بیان میں بیان کیا گیا ہے break
) سے اس بلاک کے بعد بیان میں منتقل کر دیا جاتا ہے۔ کوڈ کے نشان زدہ بلاک میں یہ بیان شامل ہونا ضروری ہے break
، لیکن یہ ضروری نہیں ہے کہ یہ شمولیت براہ راست ہو (یعنی break
اسے براہ راست اس کے اپنے لیبل والے بلاک میں شامل نہیں کیا جا سکتا، بلکہ اس کے اندر اندر موجود بلاک میں، ممکنہ طور پر نشان زد بھی) . اس کا مطلب ہے کہ آپ break
نیسٹڈ بلاکس کے سیٹ سے بچنے کے لیے ایک نشان زدہ آپریٹر استعمال کر سکتے ہیں۔ لیکن آپ کوڈ کا ایسا بلاک استعمال نہیں کر سکتے break
جس میں شامل نہ ہو break
۔ کسی بلاک کو نام دینے کے لیے، بلاک کے شروع میں ایک لیبل لگائیں (کھولنے والے گھنگھریالے منحنی خطوط وحدانی سے پہلے)۔ ایک لیبل کوئی بھی درست جاوا شناخت کنندہ ہے جس کے بعد بڑی آنت ہوتی ہے۔ کسی بلاک کو لیبل لگانے کے بعد، اس کے لیبل کو آپریٹر کے لیے دلیل کے طور پر استعمال کیا جا سکتا ہے break
۔ اس کی وجہ سے نشان زد بلاک کے اختتام سے عملدرآمد جاری رہے گا۔ مثال کے طور پر، درج ذیل پروگرام میں تین نیسٹڈ بلاکس ہیں، ہر ایک کا اپنا لیبل ہے۔ آپریٹر دو آپریٹرز کو چھوڑ کر، break
لیبل کے ساتھ نشان زد بلاک کے اختتام سے آگے بڑھتا ہے ۔ second
println()
// Использование break How цивorзованной формы goto.
public class Break {
public static void main(String[] args) {
boolean t = true;
first:
{
second:
{
third:
{
System.out.println("Перед оператором break.");
if (t) {
break second; // выход из блока second
}
System.out.println("Данный оператор никогда не выполнится");
}
System.out.println("Данный оператор никогда не выполнится ");
}
System.out.println("Данный оператор размещен после блока second.");
}
}
}
اس پروگرام کو چلانے سے درج ذیل آؤٹ پٹ پیدا ہوتا ہے:
Перед оператором break.
Данный оператор размещен после блока second.
لیبل والے آپریٹر کے سب سے عام استعمال میں سے ایک break
نیسٹڈ لوپس سے بچنا ہے۔ مثال کے طور پر، مندرجہ ذیل پروگرام میں بیرونی لوپ کو صرف ایک بار عمل میں لایا جاتا ہے:
// Использование break для выхода из вложенных циклов.
public class BreakLoop4 {
public static void main(String[] args) {
outer:
for (int i = 0; i < 3; i++) {
System.out.print("Итерация " + i + ": ");
for (int j = 0; j < 100; j++) {
if (j == 10) {
break outer; // выйти из обоих циклов
}
System.out.print(j + " ");
}
System.out.println("Эта строка никогда не будет выведена");
}
System.out.println("Цикл завершен.");
}
}
پروگرام مندرجہ ذیل آؤٹ پٹ پیدا کرتا ہے:
Итерация 0: 0 1 2 3 4 5 6 7 8 9 Цикл завершен.
یہ دیکھنا آسان ہے کہ جب اندرونی لوپ بیرونی کے اختتام سے پہلے روکا جاتا ہے، تو دونوں لوپ ختم ہو جاتے ہیں۔ اس بات کو ذہن میں رکھیں کہ آپ break
کسی بھی لیبل پر -جمپ نہیں کر سکتے جس کی تعریف انکلوژنگ بلاک کے لیے نہیں کی گئی ہے۔ مثال کے طور پر، درج ذیل پروگرام غلط ہے اور مرتب نہیں کرے گا:
// Эта программа содержит ошибку.
public class BreakErr {
public static void main(String[] args) {
one:
for (int i = 0; i < 3; i++) {
System.out.print("Итерация " + i + ": ");
}
for (int j = 0; j < 100; j++) {
if (j == 10) {
break one; //He верно!
}
System.out.print(j + " ");
}
}
}
چونکہ نشان زد لوپ میں کوئی بیان شامل نہیں ہوتا ہے break
، اس لیے اس بلاک میں کنٹرول منتقل کرنا ممکن نہیں ہے۔
آپریٹر کا استعمال کرتے ہوئےcontinue
بعض اوقات لوپ کی اگلی تکرار جلد شروع کرنا مفید ہوتا ہے۔ یعنی، آپ کو لوپ پر عمل درآمد جاری رکھنے کی ضرورت ہے، لیکن اس مخصوص تکرار کے لیے اس کے باڈی میں باقی کوڈ پر کارروائی کرنا بند کر دیں۔ درحقیقت، یہ goto
لوپ بلاک کے اختتام تک جسم کی اگلی کارروائیوں سے پہلے کی منتقلی ہے۔ یہ عمل آپریٹر کے ذریعہ انجام دیا جاتا ہے continue
۔ لوپس میں، while
اور do while
آپریٹر continue
کنٹرول کو براہ راست مشروط اظہار میں منتقل کرنے کا سبب بنتا ہے جو لوپ کو کنٹرول کرتا ہے۔ ایک لوپ میں، for
کنٹرول پہلے بیان کے تکراری حصے for
اور پھر مشروط اظہار کو جاتا ہے۔ تینوں لوپس کے لیے، کسی بھی انٹرمیڈیٹ کوڈ کو نظرانداز کیا جاتا ہے۔ ایک مثال پروگرام جو continue
ہر لائن پر دو نمبر پرنٹ کرنے کے لیے استعمال کرتا ہے ذیل میں دیا گیا ہے۔
// Демонстрирует continue.
public class Continue {
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
System.out.print(i + " ");
if (i % 2 == 0) {
continue;
}
System.out.println("");
}
}
}
یہ کوڈ یہ چیک کرنے کے لیے آپریشن %
(موڈولو) کا استعمال کرتا ہے کہ آیا کوئی چیز i
برابر ہے۔ اگر ایسا ہے تو، لوپ ایک نئی لائن کریکٹر پرنٹ کیے بغیر جاری رہتا ہے۔ پروگرام آؤٹ پٹ:
0 1
2 3
4 5
6 7
8 9
جیسا کہ , آپریٹر کے ساتھ break
، continue
آپ ایک لیبل کی وضاحت کر سکتے ہیں جو یہ بتاتا ہے کہ کون سا انکلوژنگ لوپ جاری رکھنا ہے۔ ایک مثالی پروگرام جو continue
0 سے 9 تک ایک مثلث ضرب جدول کو پرنٹ کرنے کے لیے استعمال کرتا ہے۔
// Использование continue с меткой.
public class ContinueLabel {
public static void main(String[] args) {
outer:
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
if (j > i) {
System.out.println();
continue outer;
}
System.out.print(" " + (i * j));
}
}
System.out.println();
}
}
اس مثال میں بیان continue
لوپ کی تشخیص کو ختم کرتا ہے j
، اور اس کے ذریعے چلنے والے لوپ کی اگلی تکرار کے ساتھ جاری رہتا ہے i
۔ اس پروگرام سے آؤٹ پٹ:
0
0 1
0 2 4
0 3 6 9
0 4 8 12 16
0 5 10 15 20 25
0 6 12 18 24 30 36
0 7 14 21 28 35 42 49
0 8 16 24 32 40 48 56 64
0 9 18 27 36 45 54 63 72 81
یہ انتہائی شاذ و نادر ہی مفید ہے continue
۔ اس کی ایک وجہ یہ ہے کہ جاوا لوپنگ بیانات کا ایک بھرپور سیٹ فراہم کرتا ہے جو زیادہ تر ایپلی کیشنز کے مطابق ہوتا ہے۔ تاہم، ان خاص حالات کے لیے جن میں تکرار کو جلد ختم کرنا ضروری ہے، بیان continue
اس کام کو پورا کرنے کا ایک منظم طریقہ فراہم کرتا ہے۔
آپریٹرreturn
آخری کنٹرول بیان ہے return
۔ یہ ایک طریقہ سے واضح طور پر واپس آنے کے لیے استعمال ہوتا ہے، یعنی یہ پروگرام کنٹرول کو کالنگ پروگرام میں واپس منتقل کرتا ہے۔ آپریٹر کو return
منتقلی آپریٹر کے طور پر درجہ بندی کیا گیا ہے۔ اگرچہ طریقوں پر بحث ہونے تک اس کی مکمل بحث کا انتظار کرنا ضروری ہے، لیکن ایک مختصر جائزہ یہاں فراہم کیا جاتا ہے return
۔ آپریٹر کو return
طریقہ کار میں کہیں بھی استعمال کیا جا سکتا ہے تاکہ طریقہ کار کو کال کرنے والے پروگرام پر واپس جائیں۔ بیان return
فوری طور پر اس طریقہ کار پر عمل درآمد کو ختم کر دیتا ہے جس میں یہ ہے۔ مندرجہ ذیل مثال اس کی وضاحت کرتی ہے:
// Демонстрирует return.
public class Return {
public static void main(String[] args) {
boolean t = true;
System.out.println("Перед оператором return.");
if (t) {
return; // возврат в вызывающую программу
}
System.out.println("Этот оператор никогда не выполнится.");
}
}
یہ return
رن ٹائم پر جاوا سسٹم میں واپس آجاتا ہے، کیونکہ یہ وہ سسٹم ہے جو کال کرتا ہے main()
۔ اس پروگرام سے آؤٹ پٹ:
Перед оператором return.
آپ دیکھ سکتے ہیں کہ حتمی بیان پر println()
عمل نہیں ہوا ہے۔ عمل درآمد کے وقت، return
کنٹرول واپس کالنگ پروگرام میں منتقل ہو جاتا ہے۔ ایک حتمی نوٹ۔ پچھلے پروگرام میں، if
(t) آپریٹر ضروری ہے۔ اس کے بغیر، جاوا کمپائلر "ناقابل رسائی کوڈ" کی خرابی پھینک دے گا کیونکہ اسے معلوم ہوگا کہ آخری بیان println()
کبھی بھی عمل میں نہیں آئے گا۔ اس غلطی کو روکنے کے لیے، (t) آپریٹر استعمال کیا جاتا ہے if
؛ یہ اس مظاہرے کی خاطر کمپائلر کو چال کرتا ہے۔ اصل ماخذ سے لنک: ٹرانزیشن آپریٹرز
GO TO FULL VERSION