Программирование на языке Java. Оператор выбора

Содержание

Слайд 2

Программирование на языке Java Тема 20. Оператор выбора

Программирование на языке Java

Тема 20. Оператор выбора

Слайд 3

Оператор выбора Задача: Ввести номер месяца и вывести количество дней в

Оператор выбора

Задача: Ввести номер месяца и вывести количество дней в этом

месяце для невисокосного года.
Решение: Число дней по месяцам:
28 дней – 2 (февраль)
30 дней – 4 (апрель), 6 (июнь), 9 (сентябрь), 11 (ноябрь)
31 день – 1 (январь), 3 (март), 5 (май), 7 (июль), 8 (август), 10 (октябрь), 12 (декабрь)
Особенность: Выбор не из двух, а из нескольких вариантов в зависимости от номера месяца.
Слайд 4

Алгоритм начало конец оператор выбора ни один вариант не подошел ввод

Алгоритм

начало

конец

оператор выбора

ни один вариант не подошел

ввод M

да

нет

M = 1?

D = 31;

нет

M

= 2?

D = 28;

да

нет

M = 12?

D = 31;

да

вывод D

ошибка

Слайд 5

Оператор выбора Оператор switch – оператор выбора в Java, который предоставляет

Оператор выбора

Оператор switch – оператор выбора в Java, который предоставляет простой

способ направления потока выполнения команд по различным ветвям кода в зависимости от значения управляющего выражения.
Эффективнее, чем применение длинных последовательностей if-else.
Слайд 6

Общая форма оператора switch switch (выражение) { case значениеl: // последовательность

Общая форма оператора switch

switch (выражение) {
case значениеl:
//

последовательность операторов
break;
case значение2:
// последовательность операторов
break;
...
...
case значениеN:
// последовательность операторов
break;
default:
// последовательность операторов,
// выполняемая по умолчанию
}

Константа

Необязательный оператор

Слайд 7

Выполнение оператора выбора Значение выражения сравнивается с каждым из значений констант

Выполнение оператора выбора

Значение выражения сравнивается с каждым из значений констант в

операторах case.
При совпадении, выполняется блок кода, следующего за данным оператором case.
Если значение ни одной из констант не совпало со значением выражения, программа выполняет оператор default.
Оператор break внутри последовательности switch служит для прерывания последовательности операторов. Как только программа доходит до break, она продолжает выполнение с первой строки кода, следующей за оператором switch.
Слайд 8

Программа … int M, D; M = in.nextInt(); switch ( M

Программа

int M, D;
M = in.nextInt();
switch ( M ) {

case 2: D = 28; break;
case 4: case 6: case 9: case 11: D = 30; break;
case 1: case 3: case 5: case 7:
case 8: case 10: case 12:
D = 31; break;
default: D = -1;
}
if (D > 0)
System.out.printf("В этом месяце %d дней.“, D);
else System.out.print("Неверный номер месяца.");

break;

break;

break;

ни один вариант не подошел

выйти из
switch

Слайд 9

Особенности Особенности: после switch может быть имя переменной или арифметическое выражение

Особенности

Особенности:
после switch может быть имя переменной или арифметическое выражение целого типа

(int, short, long)
или символьного типа (char)
нельзя ставить два одинаковых значения:

switch ( i+3 ) {
case 1: a = b; break;
case 2: a = c;
}

switch ( x ) {
case 1: a = b; break;
case 1: a = c;
}

Слайд 10

Пример int i = in.nextInt(); // положительное switch(i) { case 0:

Пример

int i = in.nextInt(); // положительное
switch(i) {
case 0:
case 1:


case 2:
case 3:
System.out.println("i меньше 4");
break;
case 4:
case 5:
case 6:
case 7:
System.out.println("i меньше 8");
break;
default:
System.out.println ("i равно или больше 8");
Слайд 11

Вложенные операторы switch Оператор switch можно использовать в последовательности операторов внешнего

Вложенные операторы switch

Оператор switch можно использовать в последовательности операторов внешнего оператора

switch.
Такой оператор называют вложенным оператором switch.
Поскольку оператор switch определяет собственный блок, каких-либо конфликтов между константами case внутреннего и внешнего операторов switch не происходит.
Слайд 12

Вложенные switch. Пример switch(count) { case 1: switch(target) { case 0:

Вложенные switch. Пример

switch(count) {
case 1:
switch(target) {
case

0:
System.out.print1n("target равна 0");
break;
case 1:
System.out.print1n("target равна 1");
break;
}
break;
case 2:
...

Вложенный оператор
switch

Конфликты с внешним оператором switch отсутствуют

Слайд 13

Итоги Оператор switch отличается от оператора if тем, что он может

Итоги

Оператор switch отличается от оператора if тем, что он может выполнять

проверку только равенства, в то время как оператор if может вычислять булевское выражение для любых типов. То есть оператор switch ищет только соответствие между значением выражения и одной из констант case.
Никакие две константы case в одном и том же операторе switch не могут иметь одинаковые значения.
Как правило, оператор switch эффективнее набора вложенных операторов if.