Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
JAVA.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
509.86 Кб
Скачать

4. Оператор цикла for

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

for (инициализация; условие выполнения; изменение счетчика)

оператор;

Блок инициализации выполняется только ОДИН раз — перед выполнением цикла, затем

происходит проверка условия выполнения цикла и, если оно истинно, то выполняется

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

счетчика, проверяется условие выполнения цикла, а потом снова выполняется тело

цикла. Это повторяется до тех пор пока условие выполнения цикла не окажется ложным.

Если условие выполнения цикла ложно с самого начала, то тело цикла не выполняется

ни одного раза (сразу после выполнения блока инициализации и проверки условия действие

оператора for завершается.

Рассмотрим цикл в котором подсчитывается сумма всех целых чисел от 1 до 10:

int s = 0;

int i;

for (i = 1; i <= 10; i++)

s = s + i;

System.out.println("Сумма чисел от 1 до 10 равна " + s);

Сначала мы объявляем две переменные: s в которой мы будем хранить сумму чисел и i, ко-

торая будет являться счетчиком цикла. Далее мы инициализируем i значением 1 и задаем

условие выполнения цикла i меньше или равно 10 (т. к. нам необходимо перебрать все числа

от 1 до 10). В блоке модификации счетчика задаем увеличение i на 1. В теле цикла мы при-

бавляем к сумме s текущее значение счетчика i. После завершения цикла выводим получен-

ное значение суммы s на экран.

Цикл for является очень гибкой и универсальной конструкцией при помощи которой

одну и туже задачу можно решить самыми разными способами. Приведем еще один способ

решения предыдущей задачи в котором мы поместим максимум действий непосредственно в

оператор for, так что тело цикла вообще окажется пустым:

int s = 0;

for(int i = 1; I <= 10; s += i++);

System.out.println("Сумма чисел от 1 до 10 равна " + s);

В отличие от предыдущего примера мы перенесли объявление счетчика цикла i в блок ини-

циализации цикла, а подсчет суммы в блок модификации счетчика. В результате тело цикла

состоит из пустого оператора (точка с запятой).

Можно произвести и противоположную модификацию — максимально сократить сам

оператор for, увеличив окружающий его код. Следует заметить, что все три части оператора

for – блок инициализации, условие выполнения тела цикла и блок модификации счетчика

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

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

int s = 0;

int i = 1;

for(;;) {

if (i > 10) break;

s = s + i;

i++;

}

System.out.println("Сумма чисел от 1 до 10 равна " + s);

В этом случае инициализацию счетчика мы поместили до цикла, а проверку условия и моди-

фикацию счетчика — внутрь цикла. Считается, что если условие выполнения тела цикла не

указано, то оно всегда истинно, а цикл становится «бесконечным». Для выхода из цикла был

использован один из прерывающих операторов — break;

5. Оператор цикла while (цикл с предусловием)

Цикл на основе оператора while выглядит следующим образом:

while (условие)

оператор;

Пока условие истинно (имеет значение true) выполняется оператор, когда условие цик-

ла становится ложно (значение false) выполнение цикла прекращается. Если условие лож-

но с самого начала, то тело цикла не выполняется ни одного раза.

Оператор while можно рассматривать, как частный случай оператора for в котором

отсутствуют блоки инициализации и модификации счетчика. В тех случаях когда данные бло-

ки в конкретном алгоритме не нужны или наоборот они слишком громоздки для помещения

их внутрь оператора for использование оператора while может сделать программу более

понятной, а значит и уменьшит шанс ошибиться при ее написании.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]