Пример – вычисление минимума из трех чисел



 

Ниже представлена программа, которая находит и выводит минимальное из трех чисел. В реализации используются усеченные развилки.

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; просмотров: 323;