Java. Урок 15. Циклы for и while

Очень часто бывает нужно выполнить одинаковый набор операций несколько раз. Для этого в программировании используют различные циклы. Например, вам нужно возвести 3 в четвертую степень, тогда вы скорей всего напишите такой код:

1
int a = 3 * 3 * 3 * 3;

Но, как можно заметить, данный код состоит из повторения одного и того же действия, умножения на 3, давайте запишем наш код, чтобы это стало очевидней:

1
2
3
4
5
int a = 1;
*= 3;
*= 3;
*= 3;
*= 3;

Теперь мы явно видим строчку, которая повторяется четыре раза. Очевидно, что, если бы умели выполнять некоторое действие n-раз, то мы могли упростить решение нашей задачи.

1
2
int a = 1;
Цикл a *= 3;

Существует два вида цикла: for и while. Цикл for пробегает некоторый ряд значений, например с 0 до 4, или с буквы a до буквы z. Очевидно, что для того, чтобы задать такой ряд, необходимо указать начальное значение, приращение данного значения и условие, при котором мы достигнем конца ряда. В синтаксисе java оператор for выглядит так:

1
for(блокИнициализации;блокУсловия;блокПриращения) оператор;

Если вы хотите пустить цикл от 0 до 4 не включительно, то вы можете написать следующий код:

1
for(int i = 0; i < 4; i++)

Оператор в данном случае выполнится четыре раза, что нам и нужно было при решении предыдущий задачи:

1
2
int a = 1;
for(int i = 0; i < 4; i++) a *= 3;

Можно обобщить задачу, и возводить любое число b, в любую степень n:

1
2
int a = 1;
for(int i = 0; i < n; i++) a *= b;

Таким образом циклом for лучше пользоваться, когда заранее известно сколько раз нужно выполнить команду. Рассмотрим более подробно, как работает цикл for. Сначала выполняется блок инициализации и переменная i в нашем случае становиться равна нулю. После этого происходит проверка условия, если условие истинно, то выполняется оператор, а затем начинает исполнятся блок приращения и в нашем случае переменная i увеличится на 1. После этого проверяется условие, и если оно ложно, то программа переходит к следующей команде. Для лучшего понимания рассмотрим работу цикла for на примере возведения тройки в 4 степень:

  • Присваиваем переменной a значение 1
  • Заходим в цикл
  • Выполняется инициализация переменной i
  • Переменной i присваивается 0
  • Выполняется проверка условия
  • 0 < 4 следовательно условие истинно
  • Выполняется оператор
  • Значение переменной a увеличивается в 3 раза
  • Выполняется приращение переменной цикла
  • Переменная i увеличивается на 1
  • Выполняется проверка условия
  • 1 < 4 следовательно условие истинно
  • Выполняется оператор
  • Значение переменной a увеличивается в 3 раза
  • Выполняется приращение переменной цикла
  • Переменная i увеличивается на 1
  • Выполняется проверка условия
  • 2 < 4 следовательно условие истинно
  • Выполняется оператор
  • Значение переменной a увеличивается в 3 раза
  • Выполняется приращение переменной цикла
  • Переменная i увеличивается на 1
  • Выполняется проверка условия
  • 3 < 4 следовательно условие истинно
  • Выполняется оператор
  • Значение переменной a увеличивается в 3 раза
  • Выполняется приращение переменной цикла
  • Переменная i увеличивается на 1
  • Выполняется проверка условия
  • 4 < 4 следовательно условие ложно
  • Выход из цикла

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

Номер шага a i
0 не инициализирована не инициализирована
1 1 не инициализирована
2 1 0
3 3 0
4 3 1
5 9 1
6 9 2
7 27 2
8 27 3
9 81 3
10 81 4

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

1
while(условие) оператор;

Пока условие истинно оператор будет выполнятся.
Таким образом код:

1
while (true) System.out.println("Я выполняюсь");

Будет работать вечно, пока не закончится оперативная память вашего компьютера. Допустим вам нужно найти такую первую степень двойки, которая будет больше заданного числа:

1
2
3
int a = 1;
int b = 123;
while (a<b) a *= 2;

Усложним задачу, требуется найти не число, а степень двойки, тогда используя составной оператор можно написать:

1
2
3
4
5
6
7
int a = 1;
int b = 123;
int i = 0;
while (a<b) {
    a *=2;
    i++;
}

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

Категория: Java | Добавил: ghost_mod (29.09.2016)
Просмотров: 371 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email:
Подписка:1
Код *: