JavaRush /Блоги Java /Random-TG /Операторҳои ҷаҳиш
articles
Сатҳи

Операторҳои ҷаҳиш

Дар гурӯҳ нашр шудааст
Java се оператори ҷаҳишро дастгирӣ мекунад - break, continueва return. Онҳо назоратро ба қисми дигари барномаи шумо интиқол медиҳанд. Биёед ҳар як операторро ба таври муфассал баррасӣ кунем. Операторҳои гузариш - 1

Истифодаи операторbreak

Оператор breakдар Java дар се ҳолат истифода мешавад. Аввалан, тавре ки шумо аллакай дидед, он пайдарпайии изҳоротро дар шохаҳои изҳорот ба итмом мерасонад switch. Дуюм, он метавонад барои шикастани ҳалқа истифода шавад. Сеюм, он метавонад ҳамчун шакли "тамаддунӣ" -и оператори ҷаҳиши бешартона истифода шавад goto. Ин бахш ду ҳолати охирро шарҳ медиҳад. breakБарои баромадан аз давра истифода баред break. Бо истифода аз - шумо метавонед давраро маҷбур кунед, ки ифодаи шартӣ ва ҳама рамзи боқимондаро дар бадани давр канорагирӣ карда, фавран қатъ шавад. Вақте ки изҳорот breakдар дохor давра дучор мешавад, дуюмаш ба охир мерасад ва идоракунии барнома ба изҳороти баъд аз он мегузарад. Мисоли оддӣ:
// Использование 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метавонад бо ҳама гуна ҳалқаҳои Java, аз ҷумла ҳалқаҳои беохир истифода шавад. Масалан, дар зер барномаи қаблӣ бо истифода аз як ҳалқа рамзгузорӣ шудааст 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. Бо вуҷуди ин, эҳтиёт бошед. Бисёре аз онҳо одатан codeи шуморо вайрон мекунанд. Дуюм, break, ки - операторро қатъ мекунад switch, танҳо ба switchоператори додашуда таъсир мерасонад (на ба ҳалқаҳое, ки онро дар бар мегиранд). Шарҳ: Breakҳамчун воситаи муқаррарии қатъ кардани ҳалқа тарҳрезӣ нашудааст. Ба ин мақсад ифодаи шартии сарлавҳаи давр хизмат мерасонад. Оператор breakбояд танҳо барои шикастани ҳалқа ҳангоми ба миён омадани баъзе ҳолатҳои махсус истифода шавад.

breakҲамчун форма истифода баредgoto

Илова ба истифодаи он дар изҳорот ва ҳалқаҳои коммутатсионӣ , breakон метавонад танҳо ҳамчун шакли "тамаддунӣ" -и goto. Java операторро дар бар намегирад goto, зеро он гузаришро ба таври худсарона ва сохторнашуда иҷро мекунад. Рамзе, ки .-ро пуршиддат истифода мебарад, gotoодатан фаҳмидан ва нигоҳдорӣ душвор аст. Он инчунин баъзе оптимизатсияи компиляторро бекор мекунад. Бо вуҷуди ин, дар барнома якчанд ҷойҳо мавҷуданд, ки gotoҷараёни назорат сохтори арзишманд ва қонунист. Масалан, gotoон метавонад муфид бошад, вақте ки шумо аз маҷмӯи ҳалқаҳои амиқ ҷойгиршуда берун мешавед. Барои ҳалли чунин ҳолатҳо, Java шакли васеъи операторро муайян мекунад break. Бо истифода аз он, шумо метавонед як ё якчанд блокҳои codeро тарк кунед. Ин блокҳо набояд қисми ҳалқа ё изҳорот бошанд switch. Ин метавонад ҳама гуна блок бошад. Баъдан, шумо метавонед аниқ муайян кунед, ки иҷрокунӣ дар куҷо идома хоҳад ёфт, зеро ин шакл breakбо тамға кор мекунад ва бартариҳои -ро таъмин мекунад gotoва мушкилоти онро паси сар мекунад. Изҳороти breakнишондодашуда шакли умумии зерин дорад: break label; Дар ин ҷо labelноми нишонае мавҷуд аст, ки ягон блоки codeро муайян мекунад. Вақте ки ин форма breakиҷро мешавад, идоракунӣ аз блоки codeи номбаршуда (ки дар баёния нишонааш нишон дода шудааст break) ба оператори пас аз ин блок интиқол дода мешавад. Блоки рамзбандишудаи code ҳатман бояд ин изҳоротро дар бар гирад break, аммо талаб карда намешавад, ки ин дохилкунӣ мустақим бошад (яъне breakон метавонад мустақиман ба блоки дорои тамғаи худ, балки ба блоки лона гузошташуда дар дохor он дохил карда шавад. ). Ин маънои онро дорад, ки шумо метавонед оператори ишорашударо breakбарои гурехтан аз маҷмӯи блокҳои лона истифода баред. Аммо шумо наметавонед breakблоки codeеро, ки дорои break. Барои номи блок, дар аввали блок нишона гузоред (пеш аз қавси ҷингила кушода). Нишона ҳама гуна идентификатори дурусти Java мебошад, ки пас аз он ду нуқта гузошта мешавад. Пас аз тамғагузорӣ кардани блок, тамғаи он метавонад ҳамчун далел ба оператор истифода шавад 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-jump ба ягон нишонае, ки барои блоки иҳотакунанда муайян нашудааст, иҷро кунед. Масалан, барномаи зерин беэътибор аст ва тартиб дода намешавад:
// Эта программа содержит ошибку.
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

Баъзан барвақт оғоз кардани такрори навбатии ҳалқа муфид аст. Яъне, ба шумо лозим аст, ки иҷрои ҳалқаро идома диҳед, аммо коркарди боқимондаи codeро дар бадани он барои ин такрори мушаххас қатъ кунед. Дар асл, ин 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("");
    }
  }
}
Ин code амалиётро %(модуло) истифода мебарад, то ки оё чизе 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. Яке аз сабабҳои ин дар он аст, ки Java маҷмӯи ғании изҳороти ҳалкунандаро пешкаш мекунад, ки ба аксари барномаҳо мувофиқанд. Бо вуҷуди ин, барои он ҳолатҳои махсус, ки дар он бояд такрори барвақт қатъ карда шавад, изҳорот 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дар вақти корӣ ба системаи Java бармегардад, зеро он системаест, ки main(). Натиҷа аз ин барнома:
Перед оператором return.
Шумо метавонед аҳамият диҳед, ки изҳороти ниҳоӣ println()иҷро нашудааст. Дар вақти иҷро, returnназорат дубора ба барномаи даъватшаванда интиқол дода мешавад. Як ёддошти ниҳоӣ. Дар барномаи қаблӣ ifоператори (t) лозим аст. Бе он, компилятори Java хатои "рамзи дастнорас" -ро мепартояд, зеро он медонист, ки изҳороти охирин println()ҳеҷ гоҳ иҷро намешавад. Барои пешгирии ин хато, оператори (t) истифода мешавад if; он компиляторро ба хотири ин намоиш фиреб медиҳад. Пайванд ба манбаи аслӣ: Операторҳои гузариш
Шарҳҳо
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION