JavaRush /Блоги Java /Random-TG /Изҳороти танаффус дар Java
iloveski
Сатҳи
Москва

Изҳороти танаффус дар Java

Дар гурӯҳ нашр шудааст
Салом ба ҳама ҳамкорон ва онҳое, ки хоҳиш доранд.
Изҳороти танаффус дар Java - 1
Имрӯз мо чунин хусусияти забони барномасозии Java-ро ҳамчун оператори танаффус дида мебароем. Ин мақолаи аввал дар мавзӯи операторҳои гузариш аст, бинобар ин, агар ба шумо маъқул бошад, ман бо камоли майл бештар менависам. Дарҳол қайд кардан мехоҳам, ки ин мақола асосан барои таҳиягарони навкор пешбинӣ шудааст ва донишҷӯёни пешрафта шояд дар ин ҷо барои худ чизи наве наёбанд. Пас, биёед. Дар Java ду роҳи тағир додани тартиби иҷрои дастурҳои барнома вуҷуд дорад: изҳороти ҷаҳиш ва механизми коркарди истисно. Дар java се оператори ҷаҳиш мавҷуд аст: шикастан, идома додан ва бозгашт. Имрӯз ман шуморо даъват мекунам, ки ба оператор бодиққат назар кунед break. Коркарди истисноҳо як мавзӯи васеъ аст, ки он аз доираи ин мақола берун аст. Се роҳи истифодаи баёнияи break дар java вуҷуд дорад. Усули аввал ва маъмултарин ин истифодаи он 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 маротиба мувофиқи таъиншуда иҷро карда мешавад. Дар java, шумо метавонед зиёда аз як изҳороти танаффусро дар дохor як ҳалқа истифода баред, аммо ин тавсия дода намешавад, зеро хониш ва сохтори code хеле хароб шудааст. Истифодаи дуюм breakин истифодаи он барои қатъ кардани иҷрои изҳорот дар фorалҳо мебошад 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
Изҳороти танаффус назоратро ба code пас аз тамоми блок гузашт 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Ин шакл ба Label монанд аст break метка;- ин одатан ҳама гуна номи мувофиқ аз фазои номҳои java, ки пеш аз блоки code аст, мебошад. Ғайр аз он, пас аз татбиқи ин блоки code breakбо тамға, иҷро кардани code аз ҷои пас аз блок бо нишони мувофиқ идома хоҳад ёфт, масалан:
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. Баъди занги дуюм дар экран хамаи сатрхо намоиш дода мешаванд. Тамғакоғазҳо инчунин метавонанд барои нишон додани давраҳо истифода шаванд. Дар хотир бояд дошт, ки шумо метавонед танҳо аз дохor блоки codeе, ки дар он нишон дода шудааст, ба нишона гузаред; масалан, чунин code тартиб дода намешавад:
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фаҳмиши ҳалқаро душвортар мекунад ва барномасозро маҷбур мекунад, ки ба дохor ҳалқа назар кунад, то нозукиҳои кори онро бифаҳмад. Қоидаи эвристикӣ вуҷуд дорад, ки break шумо метавонед дар ҳалқаҳои кӯтоҳтар ва бо эҳтиёт бештар дар ҳалқаҳои дароз ва амиқ лона истифода баред, зеро ин эҳтимолияти хатогиҳоро зиёд мекунад ва хондан ва фаҳмиши codeи шуморо аз ҷониби барномасозони дигар мушкил мекунад. Тавре ки ман дар боло навишта будам, истифодабарии шумораи зиёди break., ки дар тамоми code пароканда шудаанд, нишон медиҳад, ки барномасоз пурра намефаҳмад, ки чаро codeи худро ҳамин тавр навиштааст. Шояд ба назар гирифта шавад, ки рефакторинги чунин ҳалқаро тавассути тақсим кардани он ба якчанд ҳалқаҳои хурдтар баррасӣ кунед. break Кӯшиш кунед, ки ҳангоми истифодаи нишона ҳамчун ивазкунандаи , эҳтиёт бошед goto, зеро ин сохтори codeро мушкил мекунад. Ин ҳама чизест, ки ман имрӯз мехостам ба шумо дар бораи оператор breakдар java бигӯям. Ман аз интиқоди созанда шод хоҳам шуд ва ман инчунин омодаам идома дар бораи операторҳо continueва return, агар таваҷҷӯҳ дошта бошед.
Шарҳҳо
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION