В одном из предыдущих уроков мы уже рассмотрели циклы while. Мы также изучили интервалы. Пришло время взглянуть на особенности цикла for в Kotlin. Вероятно, это самый распространенный вид циклов. Вы будете использовать его довольно часто.

Содержание статьи

Синтаксис цикла for в Kotlin

Цикл for создается следующим образом:

Цикл начинается с ключевого слова for, за которым следует название константы цикла (скоро мы поговорим и о ней), по середине у нас слово in и сам интервал цикла через которого мы пройдемся. Далее представлен пример:

В приведенном выше коде, цикл for проходит через интервал от 1 до count. На первой итерации i будет равняться первому элементу интервала: 1. Каждый раз, проходя по циклу циклу, переменная i будет увеличиваться до тех пор, пока не сравняется с count. Цикл выполнится в последний раз, а затем завершится.

На заметку: Если вы использовали полуоткрытый интервал until, последней итерацией переменной i будет count - 1.

Внутри цикла, значение из i добавляется к переменной sum. Он запускается 10 раз для вычисления последовательности 1 + 2 + 3 + 4 + 5 + ... до 10.

Далее представлены значения i и переменной sum для каждой итерации:

  • Начало итерации 1: i = 1, sum = 0
  • Начало итерации 2: i = 2, sum = 1
  • Начало итерации 3: i = 3, sum = 3
  • Начало итерации 4: i = 4, sum = 6
  • Начало итерации 5: i = 5, sum = 10
  • Начало итерации 6: i = 6, sum = 15
  • Начало итерации 7: i = 7, sum = 21
  • Начало итерации 8: i = 8, sum = 28
  • Начало итерации 9: i = 9, sum = 36
  • Начало итерации 10: i = 9, sum = 45
  • После итерации 10: sum = 55

Говоря об области видимости, константа i видна только внутри области видимости цикла for, а это значит, что она недоступна за пределами цикла.

На заметку: Если вы разбираетесь в математике, вы могли заметить, что в этом примере вычисляются треугольные числа.

Иногда требуется пройтись по циклу только определенное количество раз, и константа цикла не нужна вообще. В данном случае цикл repeat используется следующим образом:

В интервале можно указать шаг. К примеру, подсчитать сумму нечетных чисел:

Здесь внутри цикла for есть оператор step. Цикл будет выполняться только для значений, на которые выпадает данный шаг. В этом случае вместо того, чтобы проходить через каждое значение в интервале, цикл будет проходить через все остальные значения. Таким образом, i всегда будет нечетным, потому что начальное значение равно 1.

В цикле for также можно использовать обратный отсчет, используя downTo. В таком случае, если count имеет значение 10, цикл будет перебирать значения (10, 8, 6, 4, 2).

Маркированные операторы continue и break

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

Возьмем пример сетки 8 на 8, где каждая ячейка содержит значение строки, умноженное на столбец. Это очень похоже на таблицу умножения, не так ли?

цикл for в kotlin

Предположим, нужно посчитать сумму всех клеток, кроме нечетных рядов, как показано ниже:

цикл for в kotlin

Через цикл for это делается следующим образом:

Строка четная если результат деления номера строки на 2 равен 0. В этом случае continue заставляет цикл for переходить к следующей строке.

Оператор break, который мы уже использовали при изучении цикла while, можно использовать с циклами for и его использование прерывает работу цикла полностью. Как и break, continue работает как с циклами for, так и с циклами while.

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

Должны складываться следующие ячейки:

цикл for в kotlin

С помощью цикла for это можно сделать следующим образом:

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

Можно использовать такие маркированные операторы с break, чтобы выйти из определенного цикла. Обычно break и continue применяются в цикле внутри цикла. Поэтому маркированные операторы нужно использовать, когда требуется манипулировать главным циклом в теле которого мы находимся.

Задания для проверки

1. Создайте константу range, ее интервал будет от 1 до 10 включительно. Напишите цикл for, который выполняет итерацию по этому интервалу и выводит квадрат каждого числа;

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

3. Выше вы видели цикл for, который перебирает только четные строки из сетки, например:

Измените код, чтобы он использовал шаг step с первым циклом for, чтобы пропускать четные строки вместо использования continue. Убедитесь, что сумма равна 448 как в изначальном примере.

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest
15 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
Jj
Jj
2 лет назад

Что значит rowLoop@? Ещё не встречал символа @.

trackback
19 дней назад

purchase enclomiphene us overnight delivery

online order enclomiphene canada discount

trackback
19 дней назад

generique kamagra medicament generique

pharmacie en ligne livraison kamagra

trackback
18 дней назад

cheapest buy androxal generic from the uk

purchase androxal uk how to get

trackback
18 дней назад

how to buy dutasteride uk buy online

buy dutasteride low cost

trackback
18 дней назад

flexeril cyclobenzaprine fedex cod

get flexeril cyclobenzaprine cheap uk

trackback
18 дней назад

buy cheap gabapentin generic compare

how to order gabapentin generic lowest price

trackback
18 дней назад

Purchase fildena online

Generic fildena

trackback
18 дней назад

discount itraconazole buy in the uk

buy itraconazole purchase discount

trackback
18 дней назад

cheapest buy staxyn price in us

buy staxyn generic where to buy

trackback
18 дней назад

discount avodart generic drug

avodart from canada without a prescription

trackback
18 дней назад

cheapest buy rifaximin generic for sale

buy cheap rifaximin generic how effective

trackback
18 дней назад

get xifaxan generic canadian

purchase xifaxan australia generic online

trackback
18 дней назад

kamagra za diskontní cenu

proč jsou ceny kamagra tak vysoké

Эмиль
Эмиль
10 дней назад

Полезная статья

15
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x