Пример – вычисление минимума из трех чисел
Ниже представлена программа, которая находит и выводит минимальное из трех чисел. В реализации используются усеченные развилки.
publicclassTest1 {
publicstaticvoidmain(String[] args) {
int val1 = 9;
int val2 = 10;
int val3 = 6;
int min_val = val1; // берем за минимальный число val1
if (val2 < min_val) { // если второе меньше
min_val = val2; // то теперь минимальное val2
}
if (val3 < min_val) { // если третье меньше
min_val = val3; // то теперь минимальное val3
}
System.out.println("min_val = " + min_val);
}
}
Блок-схема для программы целиком выглядит так:
Рис. 3.4. Блок-схема программыпоиска минимума из трех чисел
Вложенные развилки
Одна развилка разбивает программу на 2 пути выполнения. Часто путей выполнения программы больше, чем два. Чтобы выбрать один из них, требуется либо набор идущих друг за другом усеченных развилок, как в предыдущем примере, либо вложенные развилки.
Типичная вложенная развилка выглядит так:
if (условное_выражение1) {
Действие_1
} else {
if (условное_выражение2) {
Действие_2
} else {
Действие_3
}
}
В сокращенной записи используется последовательность elseif в одной строке:
if (условное_выражение1) {
Действие_1
} elseif (условное_выражение2) {
Действие_2
} else {
Действие_3
}
Блок-схема для вложенной развилки выглядит так:
Рис. 3.4. Структура вложенной развилки
|
|
Пример с вложенными развилками
Ниже представлена программа вычисления размера штрафа за превышение скорости, реализованная с использованием вложенных развилок:
publicclass Test2 {
publicstaticvoid main(String[] args) {
intv_max = 40;// задано ограничение скорости
intv = 121; // задана скорость нарушителя
if ( v <= v_max) {
System.out.println("Все по правилам!");
} elseif (v <= v_max + 20) {
System.out.println("нештрафуется");
} elseif (v <= v_max + 40) {
System.out.println("500");
} elseif (v <= v_max + 60) {
System.out.println("1000-1500");
} elseif (v <= v_max + 80) {
System.out.println("2000-2500");
} else {
System.out.println("5000");
}
}
}
Блок-схема для этой программы выглядит так:
Рис. 3.5. Блок-схема программы вычисления размера штрафа (вложенные развилки)
Пример с усеченными развилками
Ниже представлена программа вычисление размера штрафа за превышение скорости, реализованная с использованием усеченных развилок:
publicclass Test2_1 {
publicstaticvoid main(String[] args) {
int v_max = 40;
int v = 130;
if ( v <= v_max) {
System.out.println("Все по правилам!");
}
if ((v > v_max) && (v <= v_max + 20)) {
|
|
System.out.println("нештрафуется");
}
if ((v > v_max + 20) && (v <= v_max + 40)) {
System.out.println("500");
}
if ((v > v_max + 40) && (v <= v_max + 60)) {
System.out.println("1000-1500");
}
if ((v > v_max + 60) && (v <= v_max + 80)) {
System.out.println("2000-2500");
}
if (v > v_max + 80) {
System.out.println("5000");
}
}
}
Блок-схема для варианта с усеченной развилкой:
Рис. 3.6.Блок-схема программы вычисления размера штрафа (усеченные развилки)
Логические операции в Java
В примере с усеченными развилками используется операция «&&». Что это такое?
Это одна из логических операций. Вот список всех логических операций, которые могут использоваться для формирования условия развилки:
Таблица 3.1
Логические операторы
Оператор | Описание |
& | Логическое AND (И) |
&& | Сокращенное AND |
| | Логическое OR (ИЛИ) |
|| | Сокращенное OR |
^ | Логическое XOR (исключающее OR (ИЛИ)) |
! | Логическое унарное NOT (НЕ) |
Из таблицы видно, что &&– это операция «сокращенное AND».
Таблица 1.4
Таблица истинности логических операторов
A | В | A OR B | || | A AND B &&& | A XOR B ^ | NOT A ! |
false | false | false | false | false | true |
true | false | true | false | true | false |
false | true | true | false | true | true |
true | true | true | true | false | false |
|
|
В нашей задаче нам нужен именно AND, так как он позволяет задать условие, при котором должны соблюдаться два ограничения ОДНОВРЕМЕННО. Например, максимально разрешенная скорость составляет v=40 км/ч, а водитель едет со скоростью 79 км/ч, тогда сработает условие, которое предписывает ему штраф в 500 рублей:
if ((v > v_max + 20) && (v <= v_max + 40)) {
System.out.println("500");
}
Условие сработает, потому что обе части и (v>v_max + 20) и
(v<= v_max + 40) истинны.
Если же скорость водителя будет, например,v = 150 км/ч, то условие (v>v_max + 20) будет истинно, но условие (v<= v_max + 40) ложно, и все условие в целом будет ложно.
Обработка исключений
В современных языках программирования есть механизм обработки исключений.
В простейшем варианте использования он выглядит так:
try {
Строка_кода1_которая_может_выбросить_исключение;
Строка_кода2_которая_может_выбросить_исключение;
Строка_кодаN_которая_может_выбросить_исключение;
} catch (ИМЯ_КЛАССА_ИСКЛЮЧЕНИЯ Объект) {
Сюда_попадает_управление_когда_исключение_выброшено;
} catch (ИМЯ_КЛАССА_ИСКЛЮЧЕНИЯ2 Объект2) { Сюда_попадает_управление_когда_исключение2_выброшено;
|
|
}
Этого варианта конструкции trycatch Вам будет достаточно для выполнения всех заданий из этих методических указаний.
Дата добавления: 2018-04-04; просмотров: 672; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!