Управляющие операторы. Операторы выбора. Вложенные операторы if. Многозвенная структура if-else-if
Управляющие операторы В языках программирования управляющие операторы используются для реализации переходов и ветвлений в потоке выполнения команд программы в соответствии с ее состоянием. Управляющие операторы Java-программы можно разделить на следующие категории: операторы выбора, операторы цикла и операторы перехода. Операторы выбора позволяют программе выбирать различные ветви выполнения команд в соответствии с результатом выражения или состоянием переменной. Операторы цикла позволяют программе повторять выполнение одного или нескольких операторов (т. е. они образуют циклы). Операторы перехода обеспечивают возможность нелинейного выполнения программы. В этой главе мы рассмотрим все управляющие операторы Java. Операторы выбора В Java поддерживаются два оператора выбора: if и switch. Эти операторы позволяют управлять порядком выполнения команд программы в соответствии с условиями, которые известны только во время выполнения. Оператор if – оператор условного выбора ветви Java-программы. Его можно использовать для направления выполнения программы по двум различным ветвям. Общая форма этого оператора выглядит следующим образом: if (условие) оператор1; else оператор2; Здесь каждый оператор – это одиночный оператор или составной оператор, заключенный в фигурные скобки (т. е. блок). Условие – это любое выражение, возвращающее значение типа boolean. Выражение else не обязательно. Оператор if работает следующим образом: если условие истинно, программа выполняет оператор1. В противном случае она выполняет оператор2 (если он существует). Ни в одной из ситуаций программа не будет выполнять оба оператора. Для управления оператором if можно применять и одиночную переменную типа boolean, как показано в следующем фрагменте кода:
boolean dataAvailable; //... if (dataAvailable) ProcessData(); else waitForMoreData(); Помните, что только один оператор может следовать непосредственно за ключевым словом if или else. Если нужно включить больше операторов, придется создать код, подобный приведенному в следующем фрагменте: int bytesAvailable; //... if (bytesAvailable > 0) { ProcessData(); bytesAvailable -= n; } else waitForMoreData(); В этом примере оба оператора, помещенные внутрь блока, будут выполняться, если значение переменной bytesAvailable больше нуля. Некоторые программисты предпочитают использовать в операторе if фигурные скобки даже при наличии только одного оператора в каждом выражении. Это упрощает добавление операторов в дальнейшем и избавляет от беспокойства по поводу наличия фигурных скобок. Фактически пропуск определения блока в тех случаях, когда он необходим – достаточно распространенная ошибка. Например, рассмотрим следующий фрагмент кода: int bytesAvailable; //... if (bytesAvailable > 0) { ProcessData(); bytesAvailable -= n; } else waitForMoreData(); bytesAvailable = n; Если судить по уровню отступа в коде, предполагалось, что операторbytesAvailable=n; должен выполняться внутри выражения else. Однако, как вы помните, в Java-программе пробелы значения не имеют, и компилятор никак не может “узнать” намерения программиста. Компиляция этого кода будет выполняться без вывода каких-либо предупреждающих сообщений, но при выполнении программа будет вести себя не так, как было задумано. В следующем фрагменте ошибка предыдущего примера исправлена: int bytesAvailable; //... if (bytesAvailable > 0) { ProcessData(); bytesAvailable -= n; } else { waitForMoreData(); bytesAvailable = n; } Вложенные операторы if Вложенный оператор if – это оператор if, являющийся целью другого оператора if или else. В программах вложенные операторы if встречаются очень часто. При использовании вложенных операторов if важно помнить, что оператор else всегда связан с ближайшим оператором if, расположенным в одном с ним блоке и еще не связанным с другим оператором else. Например:
if(i == 10) { if(j < 20) a = b; if(k > 100) c = d; // этот оператор if else a = c; // связан с этим оператором else } else a = d; // этот оператор else связан с оператором if(i == 10) Как видно из комментариев, последний оператор else связан не с оператором if(j< 20), поскольку тот не находится в одном с ним блоке (несмотря на то, что он является ближайшим оператором if, который еще не связан с оператором else). Последний оператор else связан с оператором if(i==10). Внутренний оператор else связан с оператором if(k> 100), поскольку тот является ближайшим внутри этого же блока. Многозвенная структура if-else-if Распространенной конструкцией программирования, построенной на основе последовательности вложенных операторов if, является многозвенная структура if-else-if. Она выглядит следующим образом: if(условие) оператор; else if(условие) оператор; else if(условие) оператор; ... ... ... else оператор; Операторы if выполняются последовательно, сверху вниз. Как только одно из условий, управляющих оператором if, становится равным true, программа выполняет оператор, связанный с данным оператором if, и пропускает остальную часть многозвенной структуры. Если ни одно из условий не выполняется (не равно true), программа выполнит заключительный оператор else. Этот последний оператор служит условием, используемым по умолчанию. То есть если проверка всех остальных условий дает отрицательный результат, программа выполняет последний оператор else. Если заключительный оператор else не указан, а результат проверки всех остальных условий равен false, программа не будет выполнять никаких действий. Ниже приведен пример программы, в которой многозвенная структура if-else-if служит для определения времени года, к которому относится конкретный месяц. // Демонстрация применения операторов if-else-if. class IfElse { public static void main(String args[]) { int month = 4; // Апрель String season; if(month == 12 || month == 1 || month == 2) season = " зиме"; else if(month == 3 || month == 4 || month == 5) season = " весне"; else if(month == 6 || month == 7 || month == 8) season = " лету"; else if(month == 9 || month == 10 || month == 11) season = " осени"; else season = " вымышленным месяцам"; System. out. println(" Апрель относится к " + season + ". " ); } } Программа создает следующий вывод: Апрель относится к весне
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|