Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пр _ Часть 1.rtf
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
2.23 Mб
Скачать

Цикл for

Довольно часто бывает необходимо изменять значение какой-либо переменной в заданном диапазоне и выполнять повторяющуюся последовательность операторов с использованием этой переменной. Для выполнения такой последовательности действий как нельзя лучше подходит конструкция цикла for.

Основная форма цикла for выглядит следующим образом:

for (выражение инициализации; условие; выражение обновления) повторяющееся выражение или блок;

Ключевыми элементами данной языковой конструкции являются предложения, заключенные в круглые скобки и разделенные точкой с запятой.

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

Условие должно быть логическим выражением и трактуется точно так же, как логическое выражение в цикле while(). Тело цикла выполняется до тех пор, пока логическое выражение истинно. Как и в случае с циклом while(), тело цикла может не исполниться ни разу. Это происходит, если логическое выражение принимает значение "ложь" до начала выполнения цикла.

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

Цикл "for each" (а вообще он как бы рассматривается в вопросе №11)

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

Новый вариант цикла for записывается следующим образом:

for (переменная : набор_данных) оператор

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

Пример использования рассматриваемого цикла:

...

int[] a = new int[100];

for(int i=0;i<100;i++)

  a[i]=i;

...

for (int element : a)

  System.out.println(element);

...

В результате выполнения данного фрагмента кода каждый элемент массива будет напечатан в отдельной строке.

Действия данного цикла можно кратко описать как "обработка каждого элемента из a".

Конечно, действия, выполняемые с помощью нового цикла, можно реализовать с помощью традиционного цикла for.

...

for(int i=0;i<a.length;i++)

  System.out.println(a[i]);

...

Однако при использовании нового цикла запись получается более краткой (необходимость в начальном выражении и условии завершения цикла отпадает), и вероятность возникновения ошибок уменьшается

Замечание! Цикл "for each" не обеспечивает автоматического перебора элементов двумерного массива. Он лишь перебирает строки, которые, в свою очередь, являются одномерными массивами. Для обработки всех элементов двуменого массива a нужно два цикла:

for(double[] row : a)

  for(double value : row)

Обработка value