JavaRush /جاوا بلاگ /Random-SD /جمپ آپريٽرز
articles
سطح

جمپ آپريٽرز

گروپ ۾ شايع ٿيل
جاوا ٽن جمپ آپريٽرن کي سپورٽ ڪري ٿو - break, continueand return. اهي ڪنٽرول توهان جي پروگرام جي ٻئي حصي ڏانهن منتقل ڪن ٿا. اچو ته هر آپريٽرز تي تفصيل سان غور ڪريو. منتقلي آپريٽرز - 1

آپريٽر استعمال ڪندي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("Цикл завершен.");
  }
}
جڏهن nested loops جي هڪ سيٽ اندر استعمال ڪيو ويندو، بيان 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اھو سڌو سنئون بلاڪ ۾ پنھنجي ليبل سان شامل نه ٿي سگھي، پر ان جي اندر اندر رکيل بلاڪ ۾، ممڪن طور تي پڻ نشان ھجي) . ان جو مطلب اهو آهي ته توهان استعمال ڪري سگهو ٿا نشان لڳل آپريٽر کي breaknested بلاڪ جي هڪ سيٽ کان بچڻ لاء. پر توهان ڪوڊ جو هڪ بلاڪ استعمال نٿا ڪري سگهو 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آهي nested loops کان بچڻ لاء. مثال طور، هيٺ ڏنل پروگرام ۾ ٻاهرئين لوپ صرف هڪ ڀيرو عمل ڪيو ويندو آهي:
// Использование 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توهان هڪ ليبل بيان ڪري سگهو ٿا جيڪو ظاهر ڪري ٿو ته ڪهڙو لوپ جاري رکڻو آهي. ھڪڙو مثال پروگرام جيڪو continue0 کان 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؛ اھو ھن مظاھري جي خاطر گڏائيندڙ کي چاليندو آھي. اصل ماخذ سان ڳنڍيو: منتقلي آپريٽرز
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION