JavaRush /Java блогы /Random-KK /Секіру операторлары
articles
Деңгей

Секіру операторлары

Топта жарияланған
Java үш секіру операторын қолдайды - break, continueжәне return. Олар басқаруды бағдарламаның басқа бөлігіне береді. Операторлардың әрқайсысын егжей-тегжейлі қарастырайық. Өтпелі операторлар – 1

Операторды пайдалануbreak

Java тіліндегі оператор breakүш жағдайда қолданылады. Біріншіден, сіз бұрыннан көргендей, ол оператор фorалдарындағы мәлімдемелер тізбегін аяқтайды switch. Екіншіден, оны циклден шығу үшін пайдалануға болады. Үшіншіден, оны сөзсіз секіру операторының «өркениетті» түрі ретінде қолдануға болады goto. Бұл бөлім соңғы екі жағдайды түсіндіреді. breakЦиклдан шығу үшін пайдаланыңыз Қолдану арқылы breakшартты өрнекті және цикл денесіндегі кез келген қалған codeты айналып өтіп, циклды дереу тоқтатуға мәжбүрлей аласыз. Цикл ішінде оператор 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 ретке дейінгі мәлімдемелерді орындау үшін жасалғанымен, оператор breaki 4 болғанда оны ертерек аяқтайды. Операторды breakкез келген Java циклімен, соның ішінде әдейі шексіз циклдармен пайдалануға болады. Мысалы, төменде цикл арқылы codeталған алдыңғы бағдарлама берілген 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, себебі ол тармақты ерікті және құрылымсыз түрде орындайды. .интенсивті түрде пайдаланатын codeты gotoтүсіну және қолдау әдетте қиын. Ол сонымен қатар компилятордың кейбір оңтайландыруларын қайта анықтайды. Дегенмен, бағдарламада gotoбасқару ағыны құнды және заңды құрылым болып табылатын бірнеше орын бар. Мысалы, gotoол терең кірістірілген ілмектер жинағынан шыққан кезде пайдалы болуы мүмкін. Мұндай жағдайларды өңдеу үшін Java операторының кеңейтілген пішімін анықтайды break. Оны пайдалану арқылы бір немесе бірнеше code блоктарынан шығуға болады. Бұл блоктар циклдің немесе мәлімдеменің бөлігі болуы қажет емес switch. Бұл кез келген блок болуы мүмкін. Әрі қарай, орындаудың қай жерде жалғасатынын анықтауға болады, себебі бұл пішін breakбелгімен жұмыс істейді және gotoоның мәселелерін айналып өтіп, артықшылықтарын береді. Белгіленген мәлімдеменің breakкелесі жалпы пішіні бар: break label; Мұнда labelcodeтың кейбір блогын анықтайтын белгінің атауы берілген. Бұл пішін breakорындалған кезде басқару элементі codeтың аталған блогынан (оның белгісі операторда көрсетілген break) осы блоктан кейінгі операторға ауыстырылады. Белгіленген code блогы осы мәлімдемені қамтуы керек break, бірақ бұл қосудың тікелей болуы талап етілмейді (яғни, breakоны тікелей өз белгісі бар блокқа емес, оның ішінде кірістірілген блокқа қосуға болады, мүмкін, сондай-ақ белгіленген болуы мүмкін) . breakБұл кірістірілген блоктар жинағынан шығу үшін белгіленген операторды пайдалануға болатынын білдіреді . breakБірақ сіз codeты қамтымайтын блокты пайдалана алмайсыз break. Блокты атау үшін блоктың басына белгіні қойыңыз (ашылатын бұйра жақшаның алдында). Белгі – кез келген жарамды Java идентификаторы, одан кейін қос нүкте. Блокты белгілегеннен кейін оның белгісі операторға аргумент ретінде пайдаланылуы мүмкін break. Бұл белгіленген блоктың соңынан бастап орындауды жалғастырады. Мысалы, келесі бағдарламада әрқайсысының өз белгісі бар үш кірістірілген блок бар. Оператор екі операторды өткізіп жіберіп break, белгімен белгіленген блоктың соңынан алға жылжиды . secondprintln()
// Использование 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, содан кейін шартты өрнекке өтеді. Барлық үш цикл үшін кез келген аралық code айналып өтеді. 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сіз қандай қоршау циклін жалғастыру керектігін көрсететін белгіні анықтай аласыз. 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. Мұның бір себебі 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 компиляторы «қолжетімсіз code» қатесін жібереді, себебі ол соңғы мәлімдеме println()ешқашан орындалмайтынын біледі. Бұл қатені болдырмау үшін (t) операторы пайдаланылады if; ол осы демонстрация үшін компиляторды алдайды. Бастапқы дереккөзге сілтеме: Өтпелі операторлар
Пікірлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION