Главная » Java » for Java

0

Выражение for применяется для организации циклического перехода по значениям из заданного диапазона и в общем виде выглядит так:

      for       ( СекцияИнициализации;БулевоВыражение; СекцияИзменения)

Инструкция

СекцияИнициализации позволяет инициализировать (возможно, с предварительным объявлением) переменные цикла и выполняется только один раз. Булево Выражение подвергается проверке, и ее результат, равный true, дает основание для выполнения тела цикла, после чего вычисляются выражения секции изменения, и логическое выражение проверяется в очередной раз. Цикл повторяется до тех пор, пока итогом про верки не станет значение false. Цикл for в некотором грубом приближении можно представить как конструкцию с использованием цикла whilе

{

СекцияИнициализации;

while (БулевоВыражение) { Инструкция

СекцияИзменения;

}

}

в предположении, что возможное наличие в теле цикла команды continue не помешает выполниться группе инструкций СекцияИзменения (более подробные сведения о continue приведены Ниже, в разделе 7.8 этой главы на странице 208).

Каждая из двух частей конструкции for – СекцияИнициализации и СекцияИзменения - может быть представлена списком выражений, разделенных символом запятой. Выражения в подобных списках вычисляются в порядке Слева направо. Например, для одновременного изменения значений двух индексов массива в противоположных направлениях можно было бы воспользоваться следующей схемой:

for (i = 0, j = arr.length – 1; j >= 0; i++, j — ) {

/ / …

}

СекцияИнициализации в конструкции for способна содержать выражения объявления переменных цикла. Например, если переменные i и j за пределами цикла не используются, предыдущий фрагмент кода можно переписать таким образом:

for (int i = 0, j = arr.length – 1; j >= 0; i++, j –) {

//

}

Код не будет Откомпилирован: в списке объявлений символом запятой разделяются идентификаторы переменных, а Сеll – это наименование типа, а не переменной. Объявления переменных различных типов представляют собой отдельные выражения, которые должны быть завершены символом точки с запятой. Если в нашем примере заменить запятую символом точки с запятой, мы получим выражение for с четырьмя секциями вместо трех _ это другая ошибка. Если необходимо проинициализировать переменные различных типов, ни одна из них не должна быть объявлена внутри заголовка цикла for:

int i;

Сеll node;

for (i = 0, node = head;

i < МАХ && node != null;

i++, node = node.next)

{

system.out.println(node.getElement());

}

Обычно конструкции for применяют для выполнения циклических вычислений внутри границ заданных интервалов изменения переменных. Выражением for удобно воспользоваться, например, для просмотра и обработки содержимого элементов списка либо вычисления значений функции в диапазоне изменения ее аргумента. Конструкция for в Jаvа гораздо более мощная и продуктивная в сравнении с аналогичными инструментами многих других языков программирования, где выражение for зачастую ограничено возможностями простого пошагового приращения значений переменной цикла.

Телом рассмотренного выше цикла является единственная Инструкция continue, которая провоцирует выполнение очередной итерации. В блоке тела не происходит ничего более существенного – вся работа состоит в изменении переменных и проверке условия в самом заголовке цикла. Код служит одним из примеров построения пустых циклов. Команду continue в таком цикле можно заменить символом точки с запятой (пустой инструкцией) или пустым блоком {}. Размещение точки с запятой в той же строке, где находится выражение foг, Довольно опасно – если в результате правки текста точка с запятой будет случайно утеряна, телом цикла станет следующая Инструкция кода.

Все секции заголовка цикла for являются необязательными. Если СекцияИнициализации опускается, на ее месте остается только символ точки с запятой. Если же из заголовка исключается БулевоВыражение, в качестве значения логического условия подразумевается литерал true. Исключение всех трех секций приводит к тому, что цикл становится "бесконечным":

for (;;)

Инструкция

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

Циклы for, в соответствии с принятым соглашением, применяются только в тех случаях, когда необходимо обеспечить "прохождение" по значениям из опре-

деленных диапазонов. Если выражения инициализации и изменения переменных используются не по назначению и не связаны с логическим условием цикла подобные действия можно квалифицировать не иначе как нарушение соглашения и признак порочного стиля программирования.

Упражнение 7.3. Напишите текст метода, который в качестве параметров принимает два значения типа char и выводит на экран все символы, Принадлежащие диапазону от "меньшего" параметра до "большего" включительно.

Источник: Арнолд, Кен, Гослинг, Джеймс, Холмс, Дэвид. Язык программирования Java. 3-е изд .. : Пер. с англ. – М. : Издательский дом «Вильяме», 2001. – 624 с. : ил. – Парал. тит. англ.

По теме:

  • Комментарии