Поток управления
В языке Java, как и в любом другом языке программирования, есть
условные операторы и циклы для управления потоком. Начнем с условных
операторов, а затем перейдем к циклам. Наш экскурс завершится довольно
неуклюжим оператором switch, который можно применять при проверке
большого количества значений одного выражения.
Поток управления в языке Java построен точно так же, как и в языках С
и C++, за исключением двух моментов. В нем нет оператора goto, однако
существует версия оператора break с метками, который можно использовать
для выхода из вложенного цикла (в языке С для этого пришлось бы
применять оператор goto).
Область видимости блока
Перед изучением действительно управляющих структур нам необходимо побольше узнать о блоках.
Блок, или составной оператор, — это произвольное количество простых
операторов языка Java, заключенных в фигурные скобки. Блоки определяют
область видимости своих переменных. Блоки могут быть вложенными один в
другой. Вот пример блока, вложенного внутрь другого блока в методе
main.
public static void main (string [] args) { int n; { … int k; … } // Переменная k определена только в этом блоке. }
Однако в языке Java невозможно объявить одинаково названные
переменные в двух вложенных блоках. Например, приведенный ниже фрагмент
кода содержит ошибку и не будет скомпилирован.
public static void main(Strinq[] args) { int n; { … int k; int n; // Ошибка -- невозможно переопределить переменную n во внутреннем блоке. … } }
В языке C++ переменные во вложенных блоках можно переопределять.
Внутреннее определение затем маскируется внешним. Это может привести к
ошибкам, поэтому в языке Java такой возможности нет.
Условные операторы
Условный оператор в языке Java имеет вид: if (условие) оператор
Условие должно указываться в скобках. В языке Java, как и в
большинстве других языков программирования, часто необходимо выполнять
много операторов в зависимости от выполнения одного условия. В этом
случае используется блочный оператор, имеющий следующий вид.
{ оператор1; оператор2; }
Например,
if (yourSales >= target) { performance = "Удовлетворительно" ; bonus = 100; }
В этом коде все операторы, заключенные в фигурные скобки, будут
выполнены, если значение переменной YourSales больше значения переменной
target или равно ему (рис. 3.7).
Блок (иногда называемый составным оператором) позволяет включать
несколько (простых) операторов в любую структуру языка Java, которая в
ином случае состояла бы лишь из одного (простого) оператора.
Рис. 3.7. Блок-схема оператора if
Более общий условный оператор в языке Java выглядит так (рис. 3.8). if (условие) оператор1 else оператор2
Например,
if (yourSales >= target) { performance = "Удовлетворительно"); bonus = 100 + 0.01 * (yourSales - target); } else { performance = "Неудовлетворительно"; bonus = 0; }
Часть else не является обязательной. Группы операторов else объединяются с ближайшим оператором if. Таким образом, в коде if (х <= 0) if (х = = 0) sign = 0; else sign = -1; оператор else соответствует второму оператору if.
Рис. 3.8. Блок-схема оператора /else
Часто встречаются также повторяющиеся операторы if (рис. 3.9).
Например,
if (yourSales >=2 * target) { performance = "Великолепно"; bonus = 1000; } else if (yourSales >= 1.5 * target) { performance = "Отлично"; bonus = 500; } else if (yourSales >= target) { performance = "Удовлетворительно" ; bonus = 100; } else { System.out.println ( "Вы уволены" ) ; }
Рис. 3.9. Блок-схема операторам if /else if (многовариантное ветвление)
|