JavaRush /Блоги Java /Random-TG /Филиал дар Java

Филиал дар Java

Дар гурӯҳ нашр шудааст
Дар ин мақола мо мафҳуми шохаҳоро дар барномаҳои компютерӣ ва барномаҳои дар Java навишташуда дида мебароем. Биёед дар бораи сохторҳои назоратӣ сӯҳбат кунем, ба монанди:
  • if-thenif)
  • if-then-elseif-else)
  • switch-case
Шоха дар Java - 1

Шохабандӣ

Биёед бо мафҳумҳои асосӣ оғоз кунем. Ҳама гуна барнома маҷмӯи фармонҳоест, ки аз ҷониби компютер иҷро карда мешаванд. Аксар вақт, фармонҳо пай дар пай иҷро мешаванд. Ҳангоме ки ба шумо лозим аст, ки ҷараёни пайдарпайи фармонҳои барномаро тағир диҳед, каме камтар (вале ба ҳар ҳол хеле зуд-зуд) ҳолатҳо ба миён меоянд. Баъзан вобаста ба шартҳои муайян ба ҷои дигар блоки фармонҳоро иҷро кардан лозим меояд. Ва ҳангоме ки ин шароит тағйир меёбад, баръакс амал кунед. Масалан, як қатор сайтҳое мавҷуданд, ки дидани шахсони то 18-сола манъ аст. Одатан, ҳангоми боздид аз чунин манобеъ бори аввал, корбарро бо шакле пешвоз мегиранд, ки дар он корбар дар бораи маҳдудияти синну сол огоҳ карда мешавад ва хоҳиш карда мешавад, ки санаи таваллудашро ворид кунад. Сипас, вобаста ба маълумоте, ки корбар ворид кардааст, ба ӯ иҷозат дода мешавад, ки ба манбаъ ворид шавад ё не. Ин функсия тавассути он чизе, ки маъмулан шохасозӣ номида мешавад, таъмин карда мешавад. Боз як мисоли дигарро меорем. Биёед худро дар чорроҳаи ҳафт роҳ тасаввур кунем. Мо дар назди интихоб истодаем: чап ё рост гардед, ё рост равед. Интихоби мо ба шартҳои муайян асос ёфтааст. Мо низ имкон надорем, ки дар як вакт якчанд рохро пеш гирем. Онхое. вобаста ба баъзе шароит мо бояд як рохро интихоб кунем. Худи хамин принцип ба шохахо низ дахл дорад. Акнун биёед кушиш кунем, ки таърифи шохабандиро дихем. Шохабандӣ як сохти алгоритмӣ мебошад, ки дар он вобаста ба ҳақиқати ягон шарт яке аз якчанд пайдарпайии амалҳо иҷро карда мешавад. Шохабандӣ (эҳтимоли зиёд) дар ҳама забонҳои барномасозӣ амалӣ карда мешавад. Забони барномасозии Java дорои якчанд сохторҳои ба истилоҳ идоракунӣ мебошад, ки ба шумо имкон медиҳанд, ки шохабандиро дар барномаи худ амалӣ намоед. Дар забони барномасозӣ 3 чунин сохтор вуҷуд дорад:
  • Операторif-then
  • Операторif-then-else
  • Оператори сегона? :
if-elseДар ин мақола мо ва операторҳоро дида мебароем switch-case.

агар-пас

Оператор if-thenё шояд ifоператори маъмултарин. Ибораи «ҳа, 1 агар бинавис» аллакай маъмул шудааст. Оператор ifдорои сохтори зерин аст:
if (bool_condition) {
	statement
}
Дар ин тарҳ:
  • bool_conditionифодаи мантиқӣ аст, ки дуруст ё бардурӯғ арзёбӣ мекунад. Ин ифода шарт номида мешавад.
  • statement— фармоне (бештар аз як бошад), ки агар шарт дуруст бошад, бояд иҷро шавад ( bool_statement==true)
Ин сохтмонро чунин хондан мумкин аст:

Если (bool_condition), то {statement}
Инҳоянд чанд мисол:
public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);

    System.out.print("Сколько процентов заряда батареи осталось на вашем смартфоне?");
    int a = scanner.nextInt();

    if (a < 10) {
        System.out.println("Осталось менее 10 процентов, подключите ваш смартфон к зарядному устройству");
    }
}
Дар ин барнома аз корбар хоҳиш карда мешавад, ки фоизи пуркунии батареяро дар смартфони худ ворид кунад. Агар камтар аз 10 фоизи барқ ​​боқӣ монад, барнома корбарро дар бораи зарурати пуркунии смартфон огоҳ мекунад. Ин намунаи тарҳи соддатарин аст if. Бояд қайд кард, ки агар тағирёбандаи `a' аз 10 зиёд ё баробар бошад, ҳеҷ чиз рӯй нахоҳад дод. Барнома иҷрои codeеро, ки аз паи if. Инчунин қайд кунед, ки дар ин ҳолат, сохтмон ifтанҳо як пайдарпайии амалҳоро иҷро мекунад: матнро чоп кунед ё ҳеҷ коре накунед. Ин як варианти шоха бо як "шоха" мебошад. Ин баъзан зарур аст. Масалан, вақте ки мо мехоҳем худро аз арзишҳои нодуруст муҳофизат кунем. Масалан, агар сатр бошад, шумораи ҳарфҳоро дар сатр муайян карда наметавонем null. Намунаҳои зерин:
public static void main(String[] args) {
    String x = null;
    printStringSize(x);
    printStringSize("Не представляю своей жизни без ветвлений...");
    printStringSize(null);
    printStringSize("Ифы это так захватывающе!");
}

static void printStringSize(String string) {
    if (string != null) {
        System.out.println("Кол-во символов в строке `" + string + "`=" + string.length());
    }
}
Дар натиҷаи иҷрои усули асосӣ, дар консол инҳо бароварда мешаванд:

Количество символов в строке `Не представляю своей жизни без ветвлений...`=43
Количество символов в строке `Ифы это так захватывающе!`=25
Бо шарофати тафтиши он string != null, мо тавонистем аз хатогиҳои барнома канорагирӣ кунем. Ва дар ҳолатҳое, ки тағирёбанда stringба null.

агар-пас-дигар

Агар дар ҳолати муқаррарӣ ifбарнома интихоби худро дошта бошад: "чизе иҷро кунед ё ҳеҷ кор накунед", пас дар if-elseинтихоби барнома он ба "як кор ё кори дигар" меояд. Варианти "ҳеҷ чиз накун" нопадид мешавад. Ду ё зиёда вариантҳои иҷро (ё шумораи шохаҳо) бо ин навъи шоха вуҷуд доранд. Биёед мисолеро дида бароем, ки ду вариант вуҷуд дорад. Пас сохтори идоракунӣ шакли зерин дорад:
if (bool_condition) {
	statement1
} else {
	statement2
}
Ин ҷо:
  • bool_statementифодаи мантиқӣ аст, ки дуруст ё бардурӯғ арзёбӣ мекунад. Ин ифода шарт номида мешавад.
  • statement1— фармоне (бештар аз як бошад), ки агар шарт дуруст бошад, бояд иҷро шавад ( bool_statement==true)
  • statement2— фармоне (метавонад зиёда аз як бошад), ки агар шарт нодуруст бошад, бояд иҷро шавад ( bool_statement==false)
Ин сохтмонро чунин хондан мумкин аст:

Если (bool_condition), то {statement1}
Иначе {statement2}
Инак як мисол:
public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);

    System.out.print("Сколько процентов заряда батареи осталось на вашем смартфоне?");
    int a = scanner.nextInt();

    if (a < 10) {
        System.out.println("Осталось менее 10 процентов, подключите ваш смартфон к зарядному устройству");
    } else {
        System.out.println("Заряда вашей батареи достаточно для того, чтобы прочитать статью на Javarush");
    }
}
Ҳамин мисол дар бораи сатҳи батарея дар смартфон. Танҳо агар бори охир барнома танҳо дар бораи зарурати пуркунии смартфон огоҳ карда бошад, ин дафъа мо огоҳии иловагӣ дорем. Биёед ба ин як назар андозем if:
if (a < 10) {
    System.out.println("Осталось менее 10 процентов, подключите ваш смартфон к зарядному устройству");
} else {
    System.out.println("Заряда вашей батареи достаточно для того, чтобы прочитать статью на Javarush");
}
Агар a < 10дуруст бошад (сатҳи батарея аз 10 камтар бошад), барнома як матнро чоп мекунад. Дар акси ҳол, агар шарт a < 10иҷро нашавад, барнома матни тамоман дигарро мебарорад. Биёед мисоли дуюми худро, ки дар он мо шумораи ҳарфҳоро дар як сатр нишон додем, ба анҷом расонем. Дафъаи гузашта, агар сатри гузаронидашуда ба . баробар бошад, барнома чизе набаровард null. Биёед инро тавассути табдил додани муқаррарӣ ifба ин ислоҳ кунем if-else:
public static void main(String[] args) {
    String x = null;
    printStringSize(x);
    printStringSize("Не представляю своей жизни без ветвлений...");
    printStringSize(null);
    printStringSize("Ифы это так захватывающе!");
}

static void printStringSize(String string) {
    if (string != null) {
        System.out.println("Кол-во символов в строке `" + string + "`=" + string.length());
    } else {
        System.out.println("Ошибка! Переданная строка равна null!");
    }
}
Дар усул мо блокро printStringSizeба сохтмон илова кардем . Ҳоло, агар мо барномаро иҷро кунем, он ба консол на 2 сатр, балки 4 сатр мебарорад, гарчанде ки вуруд (метод ) ҳамон тавре ки дафъаи гузашта боқӣ мемонад. Матн, ки барнома мебарорад: ifelsemain

Ошибка! Переданная строка равна null!
Кол-во символов в строке `Не представляю своей жизни без ветвлений...`=43
Ошибка! Переданная строка равна null!
Кол-во символов в строке `Ифы это так захватывающе!`=25
Вазъиятҳо қобor қабуланд, ки elseпас аз онҳо на фармонҳои иҷро, балки аз ҷониби дигар if. Он гоҳ сохтмон шакли зеринро мегирад:
If (bool_condition1) {
	statement1
} else if (bool_condition2) {
	statement2
} else if (bool_conditionN) {
	statementN
} else {
	statementN+1
}
Ин тарҳ якчанд шарт дорад:
  • шарти_боло1
  • шарти_боло2
  • bool_conditionN
Миқдори чунин шартҳо маҳдуд нест. Ҳар як шарт фармонҳои худро дорад:
  • изҳорот 1
  • изҳорот 2
  • изхорот Н
Ҳар яке statementметавонад 1 ё зиёда сатри codeро дар бар гирад. Шартхо як ба як тафтиш карда мешаванд. Вақте ки ҳолати аввалини ҳақиқӣ муайян карда мешавад, як қатор фармонҳои ба ҳолати ҳақиқӣ «баста» иҷро карда мешаванд. Пас аз иҷрои ин фармонҳо, барнома аз блок хориҷ мешавад if, ҳатто агар санҷишҳои бештар дар пеш буданд. Агар ҳеҷ яке аз шартҳои дар боло муайяншуда дуруст набошад, ибораи "изҳороти N+1" иҷро карда мешавад. Ин сохтмонро чунин хондан мумкин аст:

Если (bool_condition1) то {statement1}
Иначе если (bool_condition2) то {statement2}
Иначе если (bool_conditionN) то {statementN}
Иначе {statementN+1}
Сатри охирин дар ин ҳолат ихтиёрӣ аст. Шумо метавонед бе танҳоии охирин кор кунед else. Ва он гоҳ тарроҳӣ шакли зеринро мегирад:
If (bool_condition1) {
	statement1
} else if (bool_condition2) {
	statement2
} else if (bool_conditionN) {
	statementN
}
Ва он чунин хонда мешавад:

Если (bool_condition1) то {statement1}
Иначе если (bool_condition2) то {statement2}
Иначе если (bool_conditionN) то {statementN}
Мувофиқи он, агар ҳеҷ яке аз шартҳо дуруст набошад, пас ягон фармон иҷро карда намешавад. Биёед ба мисолҳо мегузарем. Биёед ба вазъият бо сатҳи барқ ​​​​дар смартфон баргардем. Биёед барномае нависем, ки соҳиби онро дар бораи сатҳи барқи дастгоҳаш муфассалтар огоҳ созад:
public static void main(String[] args) {
    String alert5 = "Я скоро отключусь, но помни меня бодрым";
    String alert10 = "Я так скучаю по напряжению в моих жилах";
    String alert20 = "Пора вспоминать, где лежит зарядка";
    String alert30 = "Псс, пришло время экономить";
    String alert50 = "Хм, больше половины израсходовали";
    String alert75 = "Всё в порядке, заряда больше половины";
    String alert100 = "Я готов к приключениям, если что..";
    String illegalValue = "Такс, кто-то ввел некорректное meaning";

    Scanner scanner = new Scanner(System.in);
    System.out.print("Сколько процентов заряда батареи осталось на вашем смартфоне?");
    int a = scanner.nextInt();

    if (a <= 0 || a > 100) {
        System.out.println(illegalValue);
    } else if (a < 5) {
        System.out.println(alert5);
    } else if (a < 10) {
        System.out.println(alert10);
    } else if (a < 20) {
        System.out.println(alert20);
    } else if (a < 30) {
        System.out.println(alert30);
    } else if (a < 50) {
        System.out.println(alert50);
    } else if (a < 75) {
        System.out.println(alert75);
    } else if (a <= 100) {
        System.out.println(alert100);
    }
}
Масалан, дар ин ҳолат, агар корбар 15-ро ворид кунад, барнома дар экран нишон медиҳад: "Вақти он расидааст, ки пуркунандаи барқро ба ёд оред." Сарфи назар аз он, ки 15 камтар ва 30 ва 50 ва 75 ва 100 аст, баромади экран танҳо 1 хоҳад буд. Биёед як замимаи дигареро нависем, ки дар консол кадом рӯзи ҳафта чоп мешавад:
public static void main(String[] args) {
    // Определим текущий день недели
    DayOfWeek dayOfWeek = LocalDate.now().getDayOfWeek();

    if (dayOfWeek == DayOfWeek.SUNDAY) {
        System.out.println("Сегодня воскресенье");
    } else if (dayOfWeek == DayOfWeek.MONDAY) {
        System.out.println("Сегодня понедельник");
    } else if (dayOfWeek == DayOfWeek.TUESDAY) {
        System.out.println("Сегодня вторник");
    } else if (dayOfWeek == DayOfWeek.WEDNESDAY) {
        System.out.println("Сегодня среда");
    } else if (dayOfWeek == DayOfWeek.THURSDAY) {
        System.out.println("Сегодня четверг");
    } else if (dayOfWeek == DayOfWeek.FRIDAY) {
        System.out.println("Сегодня пятница");
    } else if (dayOfWeek == DayOfWeek.SATURDAY) {
        System.out.println("Сегодня суббота");
    }
}
Ин, албатта, қулай аст, аммо фаровонии матни якранг чашмони шуморо каме хира мекунад. Дар ҳолатҳое, ки мо шумораи зиёди вариантҳо дорем, беҳтар аст, ки операторро истифода барем, ки дар поён муҳокима карда мешаванд.

ивазкунанда

Алтернативаи ғафс ifбо бисёр шохаҳо оператор аст switch-case. Чунин ба назар мерасад, ки ин оператор мегӯяд: "Пас, мо ин тағирёбанда дорем. Бубинед, агар арзиши он ба `x` баробар бошад, пас мо ин ва он корро мекунем, агар арзиши он ба 'y' баробар бошад, мо онро ба таври дигар мекунем ва агар ба ҳеҷ як аз боло баробар набошад, мо танҳо мекунем. чунин... ” Ин оператор дорои сохтори зерин аст.
switch (argument) {
	case value1:
		statement1;
		break;
	case value2:
		statement2;
		break;
	case valueN:
		statementN;
		break;
	default:
		default_statement;
		break;
}
Биёед ин сохторро муфассалтар дида бароем. argument як тағирёбанда аст, ки арзиши онро мо бо вариантҳои гуногуни фарзия муқоиса хоҳем кард. Тағйирёбанда бояд бошад final. Инчунин бояд гуфт, ки оператор switchягон намуди маълумотро ҳамчун далел дастгирӣ намекунад. Намудҳои эътибор дар зер оварда шудаанд:
  • byte ва byte
  • кутох ва кутох
  • int ва Integer
  • характер ва характер
  • шумораи
  • Сатр
case value1 (value2, valueN)- ин арзишҳо, доимии мушаххас мебошанд, ки мо бо онҳо арзиши тағирёбандаро муқоиса мекунем argument. Инчунин, ҳар як ҳолат маҷмӯи фармонҳоро муайян мекунад, ки бояд иҷро шаванд. statement1, statement2, statementNфармонҳое мебошанд, ки агар argumentон ба яке аз value. Масалан, агар argumentон ба - баробар бошад value2, он гоҳ барнома иҷро мешавад statement2. defaultва default_statement"арзишҳои пешфарз" мебошанд. Агар argumentон ба ягонтои пешниҳодшуда баробар набошад value, он гоҳ шоха фаъол мешавад defaultва фармон иҷро мешавад default_statement. defaultва default_statementсифатҳои ихтиёрии оператор мебошанд switch-case. break— шумо мебинед, ки дар охири ҳар як блоки парванда изҳорот мавҷуд аст break. Ин оператор низ ихтиёрӣ буда, барои фарқ кардани рамзи ҳолатҳои гуногун хизмат мекунад. Баъзан дар ҳолатҳои гуногун як амалро иҷро кардан лозим меояд: пас ин ҳолатҳоро якҷоя кардан мумкин аст. Дар ин ҳолат калимаи калидӣ breakхориҷ карда мешавад ва сохтори оператор switch-caseчунин хоҳад буд:
switch (argument) {
	case value1:
		statement1;
		break;
	case valueX:
	case valueY:
		statementXY;
		break;
}
Қобor зикр аст, ки дар байни `case valueX:` ва `case valueY:` ягон оператор вуҷуд надорад break. Дар ин ҷо, агар argumentон ба , баробар бошад value1, он иҷро карда мешавад statement1. Ва агар далел valueXба яке баробар бошад valueY, statementXY. Биёед назарияи душворфаҳмро ба амалияи осонфаҳм гузарем. Биёед бо истифода аз оператор мисолро бо рӯзҳои ҳафта аз нав нависед switch-case.
public static void main(String[] args) {
    // Определим текущий день недели
    DayOfWeek dayOfWeek = LocalDate.now().getDayOfWeek();

    switch (dayOfWeek) {
        case SUNDAY:
            System.out.println("Сегодня воскресенье");
            break;
        case MONDAY:
            System.out.println("Сегодня понедельник");
            break;
        case TUESDAY:
            System.out.println("Сегодня вторник");
            break;
        case WEDNESDAY:
            System.out.println("Сегодня среда");
            break;
        case THURSDAY:
            System.out.println("Сегодня четверг");
            break;
        case FRIDAY:
            System.out.println("Сегодня пятница");
            break;
        case SATURDAY:
            System.out.println("Сегодня суббота");
            break;
    }
}
Акнун биёед барномае нависем, ки бо истифода аз оператори имрӯза рӯзи корӣ ё рӯзи истироҳат аст switch-case.
public static void main(String[] args) {
    // Определим текущий день недели
    DayOfWeek dayOfWeek = LocalDate.now().getDayOfWeek();

    switch (dayOfWeek) {
        case SUNDAY:
        case SATURDAY:
            System.out.println("Сегодня выходной");
            break;
        case FRIDAY:
            System.out.println("Завтра выходной");
            break;
        default:
            System.out.println("Сегодня рабочий день");
            break;

    }
}
Биёед каме тавзеҳ диҳам. Дар ин барнома мо мегирем enum DayOfWeek, ки рӯзи ҷории ҳафтаро ифода мекунад. Баъдан, мо мебинем, ки арзиши тағирёбандаи мо ба dayOfWeekарзишҳои SUNDAYҳарду баробар аст ё не SATURDAY. Агар ин тавр бошад, дар программа «Имруз рузи истирохат» намоиш дода мешавад. Агар не, пас мо тафтиш мекунем, ки арзиши тағирёбанда ба dayOfWeekарзиши FRIDAY. Агар ин тавр бошад, дар барнома «Фардо рӯзи истироҳат аст» намоиш дода мешавад. Агар дар ин ҳолат вуҷуд надошта бошад, пас мо имконоти кам дорем, ҳар як рӯзи боқимонда рӯзи корӣ аст, бинобар ин, ба таври нобаёнӣ, агар имрӯз Ҷумъа НЕ, ШАНБЕ ва НЕ Якшанбе бошад, барнома "Имрӯз рӯзи корӣ аст" -ро намоиш медиҳад.

Хулоса

Ҳамин тавр, дар ин мақола мо дида баромадем, ки шоха дар барномаи компютерӣ чист. Мо инчунин фаҳмидем, ки кадом сохторҳои назоратӣ барои татбиқи шоха дар Java истифода мешаванд. Мо тарҳҳоро баррасӣ кардем, ба монанди:
  • if-then
  • if-then-else
  • switch-case
Шарҳҳо
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION