Урок 5

Операторы цикла


Цикл — это многократно повторяющийся фрагмент программы.

В Java существует два типа циклов: типа «пока» и типа «n-раз».

Первый тип «пока» предназначен для повторения какого-то действия до тех пор, пока выполняется некоторое условие. Пример: увеличивать число на 5 до тех пор, пока оно не станет трёхзначным.

1. while (boolexpr) { /*операторы*/ } 
2. do { /*операторы*/ } 
   while (boolexp); 

Второй тип «n-раз» предназначен для повторения каких-то действий заранее известное количество раз. Пример: умножить число само на себя 4 раза.

3. for(инициализация; условие; итерация){ /*операторы*/ }
4. for(тип итерационная_переменная: массив){ /*операторы*/ } 

1. Цикл while

Пример 1. Пример цикла while

public class While1 {
    public static void main(String[] args) {
        int n = 10;
        while (n > 0) {
            System.out.println("tick " + n--);
        }
    }
}

Пример 2. Пример цикла while

class NoBody {
    public static void main(String[] args) {
        int i, j;

        i = 100;
        j = 200;

        // find midpoint between i and j
        while (++i < --j) ; // no body in this loop

        System.out.println("Midpoint is " + i);
    }
}

Пример 3. Пример бесконечного цикла while

Цикл while может применяться для организации бесконечных циклов в виде while(true):
public class EndlessLoop {
    public static void main(String[] args) {
        int i = 0;
        while (true) {
            System.out.println(i++);
        }
    }
}

2. Цикл do-while

Пример 4. Пример цикла do-while

public class DoWhile {
    public static void main(String[] args) {
        int n = 10;
        do {
            System.out.println("tick " + n--);
        } while (n > 0);
    }
}

3. Цикл for

Общая форма цикла for:

for(инициализация; условие; итерация){/*операторы*/ }

Например:

for (int i = 0; i < 10; i++) { /*операторы*/ }

В первом параметре обычно выбирают какую-то переменную, с помощью которой будет подсчитываться количество повторений цикла. Её называют счетчиком. Счётчику задают некоторое начальное значение.

Во втором параметре указывают некоторое ограничение на счётчик (указывают, до какого значения он будет изменяться).

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

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

Пример 5. Пример цикла for

public class ForTick {
    public static void main(String[] args) {
        for (int i = 10; i > 0; i--) {
            System.out.println("tick " + i);
        }
    }
}

Пример 6. Пример цикла for

public class Comma {
    public static void main(String[] args) {
        for (int i = 1, j = 4; i < j; i++, j--) {
            System.out.println("i = " + i);
            System.out.println("j = " + j);
        }
    }
}

4. Цикл for-each

Цикл for-each используется для перебора элементов массивов.

Общая форма:

for(тип итерационная_переменная: массив){ /*операторы*/ }

Пример 7. Пример цикла for-each

При прохождении цикла переменной str автоматически присваивается значение, равное значению следующего элемента массива args
public class ForEach {
    public static void main(String[] args) {
        for (String str : args) {
            System.out.println("Value is: " + str);
        }
    }
}

5. Рекомендации по использованию циклов

  1. Для цикла for не рекомендуется в цикле изменять индекс цикла.
  2. Условие завершения цикла должно быть очевидным, чтобы цикл не «сорвался» в бесконечный цикл.
  3. Циклы не должны быть слишком длинными. Такой цикл претендует на выделение в отдельный метод.


0 comments
Leave your comment: