JavaRush /Blog Java /Random-FR /Branchement en Java

Branchement en Java

Publié dans le groupe Random-FR
Dans cet article, nous examinerons le concept de branchement dans les programmes informatiques en général et dans ceux écrits en Java. Parlons de structures de contrôle telles que :
  • if-then(ou if)
  • if-then-else(ou if-else)
  • switch-case
Branchement en Java - 1

Ramification

Commençons par les concepts de base. Tout programme est un ensemble de commandes exécutées par un ordinateur. Le plus souvent, les commandes sont exécutées séquentiellement, les unes après les autres. Un peu moins souvent (mais toujours assez souvent), des situations surviennent lorsque vous devez modifier le flux séquentiel des commandes du programme. Parfois, selon certaines conditions, il peut être nécessaire d'exécuter un bloc de commandes plutôt qu'un autre. Et lorsque ces conditions changent, faites le contraire. Par exemple, il existe un certain nombre de sites dont la visite est interdite aux personnes de moins de 18 ans. Habituellement, lors de la première visite d'une telle ressource, l'utilisateur est accueilli par un formulaire dans lequel il est averti de la limite d'âge et invité à saisir sa date de naissance. Ensuite, en fonction des données saisies par l'utilisateur, il sera autorisé ou non à saisir la ressource. Cette fonctionnalité est assurée par ce qu’on appelle communément le branchement. Donnons une autre analogie. Imaginons-nous à la croisée de sept routes. Nous sommes confrontés à un choix : tourner à gauche ou à droite, ou aller tout droit. Notre choix est basé sur certaines conditions. Nous n’avons pas non plus la possibilité d’emprunter plusieurs routes en même temps. Ceux. selon certaines conditions, nous devrons choisir une route. Le même principe s’applique au branchement. Essayons maintenant de donner une définition du branchement. Le branchement est une construction algorithmique dans laquelle, en fonction de la vérité d'une condition, une parmi plusieurs séquences d'actions est effectuée. Le branchement est implémenté (très probablement) dans absolument tous les langages de programmation. Le langage de programmation Java possède plusieurs constructions dites de contrôle qui vous permettent d'implémenter des branchements dans votre programme. Il existe 3 constructions de ce type dans le langage de programmation :
  • Opérateurif-then
  • Opérateurif-then-else
  • Opérateur ternaire? :
Dans cet article, nous examinerons les opérateurs if-elseet switch-case.

si donc

Operator if-then, ou simplement ifpeut-être l'opérateur le plus courant. L'expression « oui, écrivez 1 si » est déjà devenue populaire. L'opérateur ifa la structure suivante :
if (bool_condition) {
	statement
}
Dans cette conception :
  • bool_conditionest une expression booléenne qui renvoie vrai ou faux. Cette expression s’appelle une condition.
  • statement— une commande (il peut y en avoir plusieurs) qui doit être exécutée si la condition est vraie ( bool_statement==true)
Cette construction peut se lire ainsi :

Если (bool_condition), то {statement}
Voici quelques exemples:
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 процентов, подключите ваш смартфон к зарядному устройству");
    }
}
Dans ce programme, il est demandé à l'utilisateur de saisir le pourcentage de charge de la batterie de son smartphone. S'il reste moins de 10 % de la charge, le programme avertira l'utilisateur de la nécessité de recharger le smartphone. Ceci est un exemple de la conception la plus simple if. Il est à noter que si la variable « a » est supérieure ou égale à 10, alors rien ne se passera. Le programme continuera à exécuter le code qui suit le if. Notez également que dans ce cas, la construction ifn'a qu'une seule séquence d'actions à exécuter : imprimer le texte, ou ne rien faire. Il s'agit d'une variante du branchement avec une seule « branche ». Cela est parfois nécessaire. Par exemple, lorsque nous voulons nous protéger des valeurs incorrectes. Par exemple, nous ne pouvons pas connaître le nombre de lettres dans une chaîne si la chaîne est null. Exemples ci-dessous :
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());
    }
}
À la suite de l'exécution de la méthode main, les éléments suivants seront affichés sur la console :

Количество символов в строке `Не представляю своей жизни без ветвлений...`=43
Количество символов в строке `Ифы это так захватывающе!`=25
Grâce à cette vérification string != null, nous avons pu éviter des erreurs dans le programme. Et ne faites rien dans les cas où la variable stringétait égale à null.

si-alors-sinon

Si, dans des conditions normales, ifun programme a le choix : « faire quelque chose ou ne rien faire », alors le if-elsechoix d'un programme revient à « faire une chose ou une autre ». L'option « ne rien faire » disparaît. Il existe deux ou plusieurs variantes d'exécution (ou nombre de branches) avec ce type de branchement. Considérons le cas où il existe deux options. La structure de contrôle a alors la forme suivante :
if (bool_condition) {
	statement1
} else {
	statement2
}
Ici:
  • bool_statementest une expression booléenne qui renvoie vrai ou faux. Cette expression s’appelle une condition.
  • statement1— une commande (il peut y en avoir plusieurs) qui doit être exécutée si la condition est vraie ( bool_statement==true)
  • statement2— une commande (il peut y en avoir plusieurs) qui doit être exécutée si la condition est fausse ( bool_statement==false)
Cette construction peut se lire ainsi :

Если (bool_condition), то {statement1}
Иначе {statement2}
Voici un exemple :
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");
    }
}
Le même exemple concernant le niveau de batterie d’un smartphone. Seulement si la dernière fois le programme a seulement averti de la nécessité de recharger le smartphone, cette fois nous avons une notification supplémentaire. Regardons celui-ciif :
if (a < 10) {
    System.out.println("Осталось менее 10 процентов, подключите ваш смартфон к зарядному устройству");
} else {
    System.out.println("Заряда вашей батареи достаточно для того, чтобы прочитать статью на Javarush");
}
Si a < 10c'est vrai (niveau de batterie inférieur à 10), le programme imprimera un texte. Sinon, si la condition a < 10n'est pas remplie, le programme affichera un texte complètement différent. Finalisons également notre deuxième exemple, dans lequel nous avons affiché le nombre de lettres dans une ligne. La dernière fois, le programme n'a rien généré si la chaîne transmise était égale à null. Résolvons cela en transformant le normal ifenif-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!");
    }
}
Dans la méthode , nous avons ajouté un bloc printStringSizeà la construction . Maintenant, si nous exécutons le programme, il affichera sur la console non pas 2 lignes, mais 4, bien que l'entrée (méthode ) reste la même que la dernière fois. Le texte que le programme affichera : ifelsemain

Ошибка! Переданная строка равна null!
Кол-во символов в строке `Не представляю своей жизни без ветвлений...`=43
Ошибка! Переданная строка равна null!
Кол-во символов в строке `Ифы это так захватывающе!`=25
Les situations sont acceptables lorsqu'elles elsesont suivies non pas par des commandes d'exécution, mais par une autre if. La construction prend alors la forme suivante :
If (bool_condition1) {
	statement1
} else if (bool_condition2) {
	statement2
} else if (bool_conditionN) {
	statementN
} else {
	statementN+1
}
Cette conception a plusieurs conditions :
  • bool_condition1
  • bool_condition2
  • bool_conditionN
Le nombre de ces conditions n'est pas limité. Chaque condition possède ses propres commandes :
  • déclaration1
  • déclaration2
  • déclarationN
Chacun statementpeut contenir 1 ou plusieurs lignes de code. Les conditions sont vérifiées une à une. Une fois la première condition vraie déterminée, une série de commandes « liées » à la vraie condition sera exécutée. Après avoir exécuté ces commandes, le programme quittera le bloc if, même s'il y avait d'autres contrôles à venir. L'expression « instructionN+1 » sera exécutée si aucune des conditions définies ci-dessus n'est vraie. Cette construction peut se lire ainsi :

Если (bool_condition1) то {statement1}
Иначе если (bool_condition2) то {statement2}
Иначе если (bool_conditionN) то {statementN}
Иначе {statementN+1}
La dernière ligne dans ce cas est facultative. Vous pouvez vous passer du dernier solitaire else. Et puis le design prendra la forme suivante :
If (bool_condition1) {
	statement1
} else if (bool_condition2) {
	statement2
} else if (bool_conditionN) {
	statementN
}
Et cela se lira comme ceci :

Если (bool_condition1) то {statement1}
Иначе если (bool_condition2) то {statement2}
Иначе если (bool_conditionN) то {statementN}
Par conséquent, si aucune des conditions n’est vraie, aucune commande ne sera exécutée. Passons aux exemples. Revenons à la situation du niveau de charge du smartphone. Écrivons un programme qui informera plus en détail le propriétaire du niveau de charge de son appareil :
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);
    }
}
Par exemple, dans ce cas, si l’utilisateur saisit 15, le programme affichera à l’écran : « Il est temps de se rappeler où se trouve le chargeur ». Malgré le fait que 15 soit inférieur et 30 et 50 et 75 et 100, la sortie à l'écran ne sera que 1. Écrivons une autre application qui imprimera sur la console quel jour de la semaine nous sommes :
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("Сегодня суббота");
    }
}
C'est pratique, bien sûr, mais l'abondance de textes monotones éblouit un peu les yeux. Dans les situations où nous disposons d'un grand nombre d'options, il est préférable d'utiliser l'opérateur, qui sera discuté ci-dessous.

boîtier de commutation

Une alternative au gras ifavec beaucoup de branches est l'opérateur switch-case. Cet opérateur semble dire « Nous avons donc cette variable. Regardez, si sa valeur est égale à « x », alors nous faisons ceci et cela, si sa valeur est égale à « y », alors nous le faisons différemment, et si elle n'est égale à aucun des éléments ci-dessus, nous faisons simplement c'est comme ça… » Cet opérateur a la structure suivante.
switch (argument) {
	case value1:
		statement1;
		break;
	case value2:
		statement2;
		break;
	case valueN:
		statementN;
		break;
	default:
		default_statement;
		break;
}
Examinons cette structure plus en détail. argument est une variable dont nous comparerons la valeur avec différentes options hypothétiques. La variable doit être final. Il convient également de dire que l'opérateur switchne prend en charge aucun type de données comme argument. Les types valides sont répertoriés ci-dessous :
  • octet et octet
  • court et court
  • entier et entier
  • caractère et caractère
  • énumération
  • Chaîne
case value1 (value2, valueN)- ce sont des valeurs, des constantes spécifiques avec lesquelles on compare la valeur d'une variable argument. De plus, chaque cas définit un ensemble de commandes qui doivent être exécutées. statement1, statement2, statementNsont des commandes qui devront être exécutées si argumentelles s'avèrent égales à l'une des value. Par exemple, s'il argumentest égal à value2, alors le programme exécutera statement2. defaultet default_statementsont des « valeurs par défaut ». S'il argumentn'est égal à aucun de ceux présentés value, alors le branchement sera déclenché defaultet la commande sera exécutée default_statement. defaultet default_statementsont des attributs facultatifs de l'opérateur switch-case. break— vous pouvez remarquer qu'à la fin de chaque bloc case il y a une instruction break. Cet opérateur est également facultatif et sert à différencier le code des différents cas. Parfois, il est nécessaire d'effectuer les mêmes actions dans des cas différents : ces cas peuvent alors être combinés. Dans ce cas, le mot-clé breakest omis et la structure de l'opérateur switch-caseressemblera à ceci :
switch (argument) {
	case value1:
		statement1;
		break;
	case valueX:
	case valueY:
		statementXY;
		break;
}
Il convient de noter qu'il n'y a pas d'opérateur entre `case valueX:` et `case valueY:` break. Ici, s'il argumentest égal à value1, il sera exécuté statement1. Et si l'argument est égal valueXà valueY, statementXY. Diluons la théorie difficile à comprendre en une pratique facile à comprendre. Réécrivons l'exemple avec les jours de la semaine en utilisant l'opérateur 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;
    }
}
Écrivons maintenant un programme qui affiche si aujourd'hui est un jour de semaine ou un week-end à l'aide de l'opérateur 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;

    }
}
Laissez-moi vous expliquer un peu. Dans ce programme, nous obtenons enum DayOfWeek, qui désigne le jour actuel de la semaine. Ensuite, nous regardons si la valeur de notre variable est égale aux dayOfWeekvaleurs de SUNDAYl'une ou l'autre SATURDAY. Si tel est le cas, le programme affiche « Aujourd'hui est un jour de congé ». Sinon, nous vérifions si la valeur de la variable est égale à dayOfWeekla valeur de FRIDAY. Si tel est le cas, le programme affiche « Demain est un jour de congé ». Si dans ce cas il n'y en a pas, alors nous avons peu d'options, tout jour restant est un jour de la semaine, donc par défaut, si aujourd'hui n'est PAS vendredi, PAS samedi et PAS dimanche, le programme affichera "Aujourd'hui est un jour ouvrable".

Conclusion

Ainsi, dans cet article, nous avons examiné ce qu'est le branchement dans un programme informatique. Nous avons également découvert quelles structures de contrôle sont utilisées pour implémenter le branchement en Java. Nous avons discuté de conceptions telles que :
  • if-then
  • if-then-else
  • switch-case
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION