#База знаний
Всё — от простейших конструкций до тонкостей и самых неочевидных моментов — в одной статье.
Java-разработчик, преподаёт в Skillbox, осваивает машинное обучение.
Цикл — это конструкция, которая позволяет многократно выполнять один и тот же участок кода. Например, вы хотите написать в консоль слово «Привет» 10 раз. Это можно сделать таким образом:
System.out.println("Привет");
System.out.println("Привет");
System.out.println("Привет");
System.out.println("Привет");
System.out.println("Привет");
System.out.println("Привет");
Вроде бы и не очень сложно, но код постоянно дублируется. А если нам нужно повторить это 100 раз — не добавлять же в программу 100 одинаковых строк? В таких случаях на помощь приходят циклы.
Вот как можно записать этот же код с помощью одного из циклов (далее мы рассмотрим его подробнее) — получилось всего три строчки вместо десяти:
for (int i = 0; i < 10; i++) {
System.out.println("Привет");
}
А вот вариант для стократного вывода в консоль сообщения «Привет»:
for (int i = 0; i < 100; i++) {
System.out.println("Привет");
}
Количество строк не увеличилось, мы просто заменили число 10 на число 100. Ровно так же будет и в случае с тысячей строк, и с миллионом, и с любым другим числом повторений.
В языке Java существует четыре вида циклов:
- циклы for;
- циклы while;
- циклы do…while;
- и циклы foreach.
Начнём рассматривать их по порядку.
В самом начале мы уже привели пример, в котором использовался именно цикл for — для вывода повторяющихся строк. Рассмотрим его подробнее.
Синтаксис цикла for имеет такой вид:
for (<начальное действие>; <условие выполнения цикла>; <действие после итерации>) {
<тело цикла>
}
Здесь итерация — одно выполнение тела цикла. Смысл параметров, используемых в записи цикла:
- <начальное действие> — в этом месте обычно объявляется счётчик цикла, но может быть произведено любое иное действие. Данная часть выполнится только единожды, перед началом цикла.
- <условие выполнения цикла> — в этой части мы указываем условие для цикла. Если условие возвращает true, то цикл выполняет указанные в его цикле действия, иначе — прекращает работу.
- <действие после итерации> — действие, которое будет выполнено после каждой итерации, если она не была прервана. Если в параметре <начальное действие> счётчик цикла обычно объявляется, то здесь он, как правило, увеличивается. Но может быть совершено и любое другое действие.
Эти три части цикла указываются в круглых скобках цикла и обязательно разделяются знаком точки с запятой. За ними следует:
- <тело цикла> — код, который будет выполняться при каждой итерации.
Последовательность выполнения цикла (пошаговый алгоритм работы):
Шаг 1. Выполняем <начальное действие>, переходим к шагу 2.
Шаг 2. Проверяем <условие выполнения цикла>. Если условие вернуло true, переходим к шагу 3, иначе — к шагу 5.
Шаг 3. Выполняем итерацию цикла (команды, которые записаны в строках <тело цикла>). Если выполнение итерации не было прервано, то переходим к шагу 4, иначе — к шагу 5.
Шаг 4. Выполняем <действие после итерации>, затем переходим к шагу 2.
Шаг 5. Выходим из цикла, продолжаем работу программы.
Для нашего примера (вывод повторяющихся строк) можно нарисовать такую блок-схему:
Разберём детально, как это работает. Наш код:
for (int i = 0; i < 10; i++) {
System.out.println("Привет");
}
Цикл объявляет переменную i со значением 0, задаёт условие «пока i меньше 10», действие после итерации «увеличивать i на 1» и команду «выводить в консоль слово „Привет“» для каждой итерации.
В соответствии с синтаксисом <начальное действие> здесь — это объявление переменной i типа int и присвоение ей значения 0 (int i = 0), <условие выполнения цикла> — условие i < 10. <Действием после итерации> в примере является инкремент переменной i (i++). В процессе итерации <тела цикла> происходить вывод в консоль сообщения (System.out.println («Привет»).
Попробуем слегка изменить наш код, чтобы вывести в консоль не приветствие, а значение счётчика i (оно должно увеличиваться с 0 до 9):
for (int i = 0; i < 10; i++) {
System.out.println(i);
}
--OUTPUT> 0
--OUTPUT> 1
--OUTPUT> 2
--OUTPUT> 3
--OUTPUT> 4
--OUTPUT> 5
--OUTPUT> 6
--OUTPUT> 7
--OUTPUT> 8
--OUTPUT> 9
Как видим, последним числом выводится 9, потому что в условии цикла указано, что он выполняется, пока счётчик i < 10. После завершения последней (десятой) итерации, когда i = 9, отработает инкремент и значение счётчика станет равно 10.
Если нужно, мы можем сделать счётчик от 0 до 10. Для этого достаточно изменить условие c i < 10 на i <= 10. Но в этом случае на печать будет выведено не 10, а 11 строк:
for (int i = 0; i <= 10; i++) {
System.out.println(i);
}
--OUTPUT> 0
--OUTPUT> 1
--OUTPUT> 2
--OUTPUT> 3
--OUTPUT> 4
--OUTPUT> 5
--OUTPUT> 6
--OUTPUT> 7
--OUTPUT> 8
--OUTPUT> 9
--OUTPUT> 10
1. Переменную, которую мы объявляем в параметрах цикла, нельзя использовать за его пределами, так как область видимости i ограничена телом цикла. Такая запись, например, не будет скомпилирована:
for (int i = 0; i < 10; i++) {
System.out.println(i);
}
System.out.println(i);
Чтобы получить доступ к значению переменной i за пределами цикла, её нужно объявить за пределами цикла. Например:
int i = 0;
for (; i < 10; i++) {
System.out.println(i);
}
System.out.println(i);
2. В цикле for ни одно действие не является обязательным, главное — указать два знака точки с запятой. Это значит, что в цикле мы можем опустить:
- условие (важно проследить, чтобы цикл обязательно был прерван, иначе он станет бесконечным);
- параметр, задающий действие после итерации;
- действие перед циклом;
- два любых параметра либо абсолютно все.
Пример:
int i = 0;
for (; i < 10; i++) {
System.out.println(i);
}
Следующий вариант эквивалентен, так как инкремент i++ происходит прямо в конце итерации:
int i = 0;
for (; i < 10;) {
System.out.println(i);
i++;
}
Ещё вариант, тоже аналогичный первому, так как мы поставили условие прерывания цикла break (о прерываниях поговорим позже):
int i = 0;
for (;;) {
if (i < 10) {
break;
}
System.out.println(i);
i++;
}
3. Первым параметром цикла <начальное действие> может быть всё что угодно. Например, вызов метода:
int i = 0;
for (someMethod(); i < 10; i++) {
//code
}
Мы можем даже увеличить число, поместив прямо здесь инкремент i++ (в этом случае начальное значение i в цикле будет равно 1):
int i = 0;
for (i++; i < 10; i++) {
//code
}
Аналогично можно делать всё, что пожелаем, и в <действие после итерации>. Например, тоже вызвать какой-то метод:
int i = 0;
for (i++; i < 10; someMethod()) {
//code
i++;
}
Важно понимать, что между собой параметры for никак не связаны. Поэтому в качестве условия цикла может выступать любое выражение. Пример:
int any = 0;
for (int i = 0; any != 10; i++) {
any += 2;
}
4. Первое действие цикла for может состоять из любого числа команд либо объявления любого количества переменных одного типа. Например, здесь мы вызываем метод, увеличиваем any на 2 и увеличиваем i на 1:
int any = 0;
int i = 0;
for (someMethod(), any += 2, i++; i < 10; i++) {
//code
}
А тут первым действием объявляем три переменные i, c, g типа int со значениями 0, 5, 10 — их все можно использовать в цикле. Но в нашем случае изменяться будет только переменная i:
for (int i = 0, c = 5, g = 10; i < 10; i++) {
System.out.println(i);
System.out.println(c);
System.out.println(g);
}
При желании можно изменять все три переменных, причём разными способами, в параметре <действие после итерации> цикла for. Например:
for (int i = 0, c = 5, g = 10; i < 10; i++, c +=2, g -= 100) {
System.out.println(i);
System.out.println(c);
System.out.println(g);
}
Или, в дополнение к этому, даже вызвать метод в третьей части цикла:
for (int i = 0, c = 5, g = 10; i < 10; i++, c +=2, g -= 100, someMethod()) {
System.out.println(i);
System.out.println(c);
System.out.println(g);
}
Несмотря на то, что параметрами <начальное действие> и <действие после итерации> может быть всё что угодно, чаще всего цикл for применяют в следующих случаях:
- если требуется считать число итераций цикла или нужно использовать значение счётчика итераций — то есть <начальным действием> является объявление переменной, а в <действии после итерации> происходит инкремент/декремент этой переменной;
- когда число итераций известно заранее — происходит обход массива, работа с символами строки, коллекцией и тому подобное.
Если же эта информация нам не нужна или количество итераций нельзя предсказать заранее, то обычно используют цикл while (do…while)
Этот цикл имеет следующую синтаксическую структуру:
while (<условие выполнения цикла>) {
<тело цикла>
}
В целом он не сильно отличается от цикла for — цикл while не имеет параметров <начальное действие> и <действие после итерации>, а содержит лишь условие. Это позволяет выполнять <тело цикла> до тех пор, пока выражение в условии возвращает true перед каждой итерацией.
Ранее мы рассматривали пример цикла for, в котором не были указаны параметры <начальное действие> и <действие после итерации>:
int i = 0;
for (; i < 10;) {
System.out.println(i);
i++;
}
Его несложно переписать с использованием while:
int i = 0;
while (i < 10) {
System.out.println(i);
i++;
}
Графически алгоритм работы можно представить такой схемой:
В отличие от for, в цикле while нельзя не указывать параметр <условие выполнения цикла>, то есть запрещена такая запись:
int i = 0;
while () {
System.out.println(i);
i++;
}
Цикл while называется циклом с предусловием, потому что первый раз условие выполнения проверяется перед первой итерацией. Если проверка вернёт значение false, то ни одна итерация не будет выполнена.
Цикл while обычно используется в случаях, когда:
- число итераций не известно заранее;
- счётчик итераций не требуется по логике программы.
Кроме цикла с предусловием while существует вариант, который выполняет хотя бы одну итерацию, а после этого проверяет условие. Это цикл do…while, который называется циклом с постусловием.
Синтаксис do…while:
do {
<тело цикла>
} while (<условие выполнения цикла>);
Сначала отрабатывает действие в <теле цикла>, а потом проверяется <условие выполнения цикла>. Если оно возвращает true, то цикл выполнит действие повторно.
Предположим, что нам обязательно нужно вывести на консоль слово «Привет» хотя бы один раз. Для этого можно использовать следующую конструкцию:
int i = 0;
int b = 1;
do {
System.out.println("Привет!");
i++;
} while (i < b);
Цикл do…while редко применяется на практике, но его всё же используют:
- если нужно сделать что-то хотя бы единожды — например, вывести слово «Привет», как выше;
- если значение, от которого зависит условие, инициализируется внутри тела цикла.
Пример кода:
int r;
do {
r = new Random().nextInt();
System.out.println(r);
} while (r > 50);
С помощью конструкции new Random().nextInt() здесь берётся очередное случайное число. Итог работы таков: цикл будет находить и выводить на консоль случайные числа до тех пор, пока их значение не будет превышать 50.
Диаграмма работы цикла do…while:
Для обхода массива или коллекции можно применять циклы for:
int[] mas = {4, 0, 3, 4, 5};
for (int i = 0; i < mas.length; i++) {
System.out.println(mas[i]);
}
Синтаксис цикла foreach:
List<String> list = new ArrayList<String>();
list.add("s1");
list.add("s2");
list.add("s3");
list.add("s4");
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
С его помощью можно переписать приведённые примеры обхода массива и коллекции. Получится такой код:
int[] mas = {4, 0, 3, 4, 5};
for (int ma : mas) {
System.out.println(ma);
}List<String> list = new ArrayList<String>();
list.add("s1");
list.add("s2");
list.add("s3");
list.add("s4");
for (String s : list) {
System.out.println(s);
}
Результат выполнения обоих вариантов будет одинаковым, но конструкция сильно упростилась — теперь не нужно следить за счётчиком итераций. Цикл foreach сам поочерёдно берёт значения из массива/коллекции и помещает их в указанную перед двоеточием переменную.
Важно, чтобы тип переменной, указанной перед двоеточием, совпадал с типом массива/коллекции.
Внимание: далее материал повышенной сложности (необходимо знание интерфейсов).
На самом деле параметром после двоеточия может быть любой класс, который имплементирует интерфейс Iterable (а все коллекции-наследники java.util.Collection его имплементируют) и реализует метод iterator(). Мы можем даже самостоятельно создать класс, который будет передаваться в качестве параметра.
Пример такого кода:
public class Main {
public static void main(String[] args) {
MyIterable myIterable = new MyIterable();
for (Integer s : myIterable) {
System.out.println(s);
}
}
}
class MyIterable implements Iterable<Integer> {
private int[] mas = {1, 2, 3, 4};
@Override
public Iterator<Integer> iterator() {
return new Iterator<Integer>() {
private int pos = 0;
@Override
public boolean hasNext() {
return pos < mas.length;
}
@Override
public Integer next() {
int predPos = pos;
pos++;
return mas[predPos];
}
};
}
}
Мы объявляем класс MyIterable, в нём создаём массив, по которому будем итерироваться. Реализуем метод iterator(), возвращающий объект интерфейса Iterator, а также hasNext и next. Метод hasNext вызывается перед каждой итерацией и проверяет, есть ли следующий элемент. Если не дошли до конца массива, то hasNext вернёт true.
Когда метод hasNext возвращает true, цикл foreach вызывает метод next, который должен вернуть следующий элемент. В нашем случае он, кроме того, увеличивает на 1 текущую позицию элемента массива для последующей итерации.
Под капотом цикл foreach выглядит как простой while, но такой код будет более громоздким:
MyIterable myIterable = new MyIterable();
Iterator<Integer> iterator = myIterable.iterator();
while (iterator.hasNext()) {
Integer s = iterator.next();
System.out.println(s);
}
Внимание: для освоения этого раздела необходимо понимание принципов работы с массивами.
Не всегда нужно, чтобы цикл отработал до конца, — бывают ситуации, когда нам требуется его прервать. Допустим, мы обходим некий массив и хотим остановить выполнение цикла, если в нём найдено число 5. Для таких ситуаций существует оператор break, который полностью прекращает работу цикла.
Вот варианты кода для всех четырёх типов циклов (для цикла do…while дополнительное важное условие — размер массива должен быть больше 0):
int[] mas = {4, 6, 32, 9, 5, 24, 4};
for (int i = 0; i < mas.length; i++) {
if (mas[i] == 5) {
System.out.println("Число 5 найдено, его позиция " + i);
break;
}
System.out.println("Текущее число " + mas[i] + ". Позиция " + i);
}int[] mas = {4, 6, 32, 9, 5, 24, 4};
int i = 0;
while (i < mas.length) {
if (mas[i] == 5) {
System.out.println("Число 5 найдено, его позиция " + i);
break;
}
System.out.println("Текущее число " + mas[i] + ". Позиция " + i);
i++;
}int[] mas = {4, 6, 32, 9, 5, 24, 4};
int i = 0;
do {
if (mas[i] == 5) {
System.out.println("Число 5 найдено, его позиция " + i);
break;int[] mas = {4, 6, 32, 9, 5, 24, 4};
int i = 0;
for (int s : mas) {
if (s == 5) {
System.out.println("Число 5 найдено, его позиция " + i);
break;
}
System.out.println("Текущее число " + s + ". Позиция " + i);
i++;
}
Если выполнить эти фрагменты, во всех вариантах на выводе будет одно и то же:
--OUTPUT> Текущее число 4. Позиция 0
--OUTPUT> Текущее число 6. Позиция 1
--OUTPUT> Текущее число 32. Позиция 2
--OUTPUT> Текущее число 9. Позиция 3
--OUTPUT> Число 5 найдено, его позиция 4
Выполнение циклов полностью прекращается, как только любой из них доходит до позиции 4, где и расположено искомое число 5. Это происходит потому, что везде задано условие: если текущий элемент равен 5, вызывается оператор break.
Бывают ситуации, когда по логике программы требуется пропустить текущую итерацию. Предположим, нужно, чтобы в консоль выводилась надпись «Текущее число <число>. Позиция <позиция>», но при условии, что текущий элемент массива не равен 5. Это можно сделать с помощью оператора continue — он позволяет сразу перейти к следующей итерации.
Важно: при вызове этого оператора цикл прекращает текущую итерацию, выполняет <действие после итерации> и проверяет условие цикла. Если проверка вернула true, то переходит к следующей итерации, а иначе — заканчивается.
Примеры кода для всех четырёх типов циклов:
int[] mas = {4, 6, 32, 9, 5, 24, 4};
for (int i = 0; i < mas.length; i++) {
if (mas[i] == 5) {
continue;
}
System.out.println("Текущее число " + mas[i] + ". Позиция " + i);
}int[] mas = {4, 6, 32, 9, 5, 24, 4};
int i = 0;
while (i < mas.length) {
if (mas[i] == 5) {
i++;
continue;
}
System.out.println("Текущее число " + mas[i] + ". Позиция " + i);
i++;
}int[] mas = {4, 6, 32, 9, 5, 24, 4};
int i = 0;
do {
if (mas[i] == 5) {
i++;
continue;
}
System.out.println("Текущее число " + mas[i] + ". Позиция " + i);
i++;
} while (i < mas.length);int[] mas = {4, 6, 32, 9, 5, 24, 4};
int i = 0;
for (int s : mas) {
if (s == 5) {
i++;
continue;
}
System.out.println("Текущее число " + s + ". Позиция " + i);
i++;
}
Вывод для всех фрагментов будет одинаковым:
--OUTPUT> Текущее число 4. Позиция 0
--OUTPUT> Текущее число 6. Позиция 1
--OUTPUT> Текущее число 32. Позиция 2
--OUTPUT> Текущее число 9. Позиция 3
--OUTPUT> Текущее число 24. Позиция 5
--OUTPUT> Текущее число 4. Позиция 6
Таким образом, мы пропускаем четвёртую позицию в массиве и не выводим число 5 в консоль.
Прервать выполнение цикла может также оператор return, но этот оператор также и выйдет из метода, который выполняется в текущий момент.
Бесконечный цикл может понадобиться, если мы не знаем условие выхода (оно определено внутри цикла) или условий несколько, либо если нужно, чтобы цикл не заканчивался вовсе.
Есть три варианта того, как создать такой цикл:
while (true) {
<тело цикла>
}
или
for (;;) {
<тело цикла>
}
или
do {
<тело цикла>
} while(true);
Пример использования бесконечного цикла:
while (true) {
int randomNumber = new Random().nextInt();
if (randomNumber == 5) {
break;
}
System.out.println("Рандомное число не равно 5");
}
С помощью конструкции new Random ().nextInt () мы на каждой итерации получаем случайное число и записываем его в переменную randomNumber. Если рандомное число равно 5, то выходим из цикла.
Цикл ниже не закончит работу никогда — строка «Привет!» будет выводиться в консоль бесконечно:
while (true) {
System.out.println("Привет!");
}
С точки зрения эффективности исполнения не имеет значения, какой из вариантов бесконечного цикла мы используем. Если взглянуть на байт-код, для JVM все эти фрагменты будут выглядеть одинаково:
L0
LINENUMBER <line number> L0
FRAME SAME
GOTO L0
Поэтому используйте циклы, которые лучше подходят для решения вашей задачи, чтобы код получался максимально понятным для чтения и удобным для дальнейшего расширения.
Внимание: для освоения этого раздела необходимо понимание принципов работы с массивами.
Часто используют циклы, один из которых выполняется в теле другого, — их называют вложенными. Это может потребоваться для обхода двумерных массивов, генерации данных и много чего ещё. Вкладывать друг в друга можно разные циклы неограниченное количество раз.
Вот примеры кода:
char[][] chars =
{{'x', ' ', ' ', ' ', 'x'},
{' ', 'x', ' ', 'x', ' '},
{' ', ' ', 'x', ' ', ' '},
{' ', 'x', ' ', 'x', ' '},
{'x', ' ', ' ', ' ', 'x'}};
for (int i = 0; i < chars.length; i++) {
for (int j = 0; j < chars[i].length; j++) {
System.out.print(chars[i][j]);
}
System.out.println();
В этом фрагменте был создан двумерный массив chars, по которому мы прошли с помощью одного цикла for, вложенного в другой — тоже for. Для каждой итерации внешнего цикла выполняются все итерации вложенного в него внутреннего. Таким образом, для массива размерности 5 на 5 будет совершено 25 итераций — внешний цикл идёт по строкам, внутренний — по столбцам.
Ещё пример, но теперь уже трёх вложенных циклов:
String[] names = {"Иван", "Сергей", "Кирилл"};
String[] phrases = {"Как дела?", "Как у тебя погода?"};
String[] greetings = {"Привет, ", "Добрый день, "};
int i = 0;
while (i < greetings.length) {
for (int j = 0; j < names.length; j++) {
System.out.println(greetings[i] + names[j]);
for (String s : phrases) {
System.out.println(s);
}
System.out.println();
}
i++;
}
--OUTPUT> Привет, Иван
--OUTPUT> Как дела?
--OUTPUT> Как у тебя погода?
--OUTPUT>
--OUTPUT> Привет, Сергей
--OUTPUT> Как дела?
--OUTPUT> Как у тебя погода?
--OUTPUT>
--OUTPUT> Привет, Кирилл
--OUTPUT> Как дела?
--OUTPUT> Как у тебя погода?
--OUTPUT>
--OUTPUT> Добрый день, Иван
--OUTPUT> Как дела?
--OUTPUT> Как у тебя погода?
--OUTPUT>
--OUTPUT> Добрый день, Сергей
--OUTPUT> Как дела?
--OUTPUT> Как у тебя погода?
--OUTPUT>
--OUTPUT> Добрый день, Кирилл
--OUTPUT> Как дела?
--OUTPUT> Как у тебя погода?
Тут мы прошлись по значениям из трёх массивов и сгенерировали шесть сообщений с разными приветствиями, именами и вопросами.
Бывают ситуации, когда нужно внутри вложенного цикла прекратить выполнение текущего и того, в который он вложен. Если использовать для этого просто break, мы выйдем только из текущего цикла, а внешний продолжит работать:
int[][] mas = {{3, 4, 6}, {8, 5, 2}, {1, 2, 6}};
for (int i = 0; i < mas.length; i++) {
for (int j = 0; j < mas[i].length; j++) {
if (mas[i][j] == 5) {
System.out.println("Число 5 найдено, его позиция " + i + ", " + j);
break;
}
System.out.println("Текущее число " + mas[i][j] + ". Позиция " + i + ", " + j);
}
}
--OUTPUT> Текущее число 3. Позиция 0, 0
--OUTPUT> Текущее число 4. Позиция 0, 1
--OUTPUT> Текущее число 6. Позиция 0, 2
--OUTPUT> Текущее число 8. Позиция 1, 0
--OUTPUT> Число 5 найдено, его позиция 1, 1
--OUTPUT> Текущее число 1. Позиция 2, 0
--OUTPUT> Текущее число 2. Позиция 2, 1
--OUTPUT> Текущее число 6. Позиция 2, 2
Как видно из примера, ожидаемого результата (прекратить работу обоих циклов, если найдено число 5) мы не получили. В таких ситуациях можно использовать, например, проверку с помощью boolean-значения:
int[][] mas = {{3, 4, 6}, {8, 5, 2}, {1, 2, 6}};
for (int i = 0; i < mas.length; i++) {
boolean check = false;
for (int j = 0; j < mas[i].length; j++) {
if (mas[i][j] == 5) {
System.out.println("Число 5 найдено, его позиция " + i + ", " + j);
check = true;
break;
}
System.out.println("Текущее число " + mas[i][j] + ". Позиция " + i + ", " + j);
}
if (check) {
break;
}
}
--OUTPUT> Текущее число 3. Позиция 0, 0
--OUTPUT> Текущее число 4. Позиция 0, 1
--OUTPUT> Текущее число 6. Позиция 0, 2
--OUTPUT> Текущее число 8. Позиция 1, 0
--OUTPUT> Число 5 найдено, его позиция 1, 1
Мы вводим во внешний цикл логическую переменную check и присваиваем ей значение false. Если внутри второго цикла работа прекращается оператором break, перед этим check присваивается значение true. После завершения работы вложенного цикла проверяем во внешнем, что находится в нашей переменной check. Если true, значит, вложенный цикл был прерван и требуется прервать текущий.
Существует ещё одно решение, позволяющее прекратить работу нескольких вложенных циклов: операторы break и continue с указателем.
Синтаксис break с указателем:
указатель:цикл(...) {
....
break указатель;
}
Используем эту конструкцию для фрагмента кода из прошлого примера:
int[][] mas = {{3, 4, 6}, {8, 5, 2}, {1, 2, 6}};
stop:for (int i = 0; i < mas.length; i++) {
for (int j = 0; j < mas[i].length; j++) {
if (mas[i][j] == 5) {
System.out.println("Число 5 найдено, его позиция " + i + ", " + j);
break stop;
}
System.out.println("Текущее число " + mas[i][j] + ". Позиция " + i + ", " + j);
}
}
--OUTPUT> Текущее число 3. Позиция 0, 0
--OUTPUT> Текущее число 4. Позиция 0, 1
--OUTPUT> Текущее число 6. Позиция 0, 2
--OUTPUT> Текущее число 8. Позиция 1, 0
--OUTPUT> Число 5 найдено, его позиция 1, 1
В результате с помощью указателя (его имя может быть любым) и слова break мы из внутреннего цикла перешли к внешнему и прекратили его работу. Эта конструкция применяется с различными типами циклов: for, while, do…while и foreach.
Вместо оператора break можно использовать continue с указателем. Отличие в том, что с помощью continue мы не прекращаем указанный цикл, а переходим к его следующей итерации. Вот, например, исправленный код из прошлого примера, но с использованием continue:
cont:for (int i = 0; i < mas.length; i++) {
for (int j = 0; j < mas[i].length; j++) {
if (mas[i][j] == 5) {
System.out.println("Число 5 найдено, его позиция " + i + ", " + j);
continue cont;
}
System.out.println("Текущее число " + mas[i][j] + ". Позиция " + i + ", " + j);
}
}
--OUTPUT> Текущее число 3. Позиция 0, 0
--OUTPUT> Текущее число 4. Позиция 0, 1
--OUTPUT> Текущее число 6. Позиция 0, 2
--OUTPUT> Текущее число 8. Позиция 1, 0
--OUTPUT> Число 5 найдено, его позиция 1, 1
--OUTPUT> Текущее число 1. Позиция 2, 0
--OUTPUT> Текущее число 2. Позиция 2, 1
--OUTPUT> Текущее число 6. Позиция 2, 2
Примечания:
1. Заключать название цикла в фигурные скобки не обязательно, если его тело состоит всего из одной строки. Но на этом лучше не экономить, потому что при расширении тела цикла (когда вы будете модифицировать программу) про недостающие скобки очень легко забыть. Зато вовремя расставленные {} делают ваш код более читаемым.
2. Оператор break с указателем применим не только к циклам, но и к простым блокам кода. Но делать это не рекомендуется, так как даже блок-схемами очень сложно описать такое поведение программы. Код, где используются break с указателями, становится сложным для чтения и поддержки.
int a = 5;
System.out.println("Проверка переменной a");
stop:{
if (a == 5) {
break stop;
}
System.out.println("Переменная a не равна 5");
}
System.out.println("Проверка закончена");
--OUTPUT> Проверка переменной a
--OUTPUT> Проверка закончена
3. По этой же причине операторы break и continue с указателем не рекомендуется использовать и для циклов.
Мы выяснили, как циклы в Java помогают работать с массивами: перебирать значения, находить нужные элементы, запрашивать данные и выполнять другие повторяющиеся действия без дублирования кода — простым и понятным способом.
Узнайте больше о циклах и других элементах Java на нашем курсе «Профессия Java-разработчик». Приходите! Вы научитесь программировать на одном из самых востребованных языков и сможете устроиться на высокооплачиваемую работу.
Курс с трудоустройством: «Профессия Java-разработчик + ИИ»
Узнать о курсе
<!DOCTYPE html>
<html class="l-html" lang="ru">
<head>
<script>
mindbox = window.mindbox || function() { mindbox.queue.push(arguments); };
mindbox.queue = mindbox.queue || [];
mindbox('create', {
endpointId: 'skillbox.skillboxMediaWebsite'
});
</script>
<script src="https://api.s.mindbox.ru/scripts/v1/tracker.js" async></script>
<script>window.yaContextCb = window.yaContextCb || []</script>
<script src="https://yandex.ru/ads/system/context.js" async></script>
<!-- Google Tag Manager -->
<script async data-skip-moving="true" type="text/javascript">
/** Google Tagmanager */
;(function (w, d, s, l, i) {
w[l] = w[l] || [];
w[l].push({
'gtm.start':
new Date().getTime(), event: 'gtm.js'
});
var f = d.getElementsByTagName(s)[0],
j = d.createElement(s), dl = l != 'dataLayer' ? '&l=' + l : '';
j.async = true;
j.src = 'https://www.googletagmanager.com/gtm.js?id=' + i + dl;
f.parentNode.insertBefore(j, f);
})(window, document, 'script', 'dataLayer', 'GTM-NLCGQ25');
window.dataLayer = window.dataLayer || [];
function gtag() {
window.dataLayer.push(arguments);
}
gtag('js', new Date());
gtag('config', 'GTM-NLCGQ25');
</script>
<!-- End Google Tag Manager -->
<!-- Retail Rocket -->
<script type="text/javascript">
var rrPartnerId = "6048a0d097a52514f050731f";
var rrApi = {};
var rrApiOnReady = rrApiOnReady || [];
rrApi.addToBasket = rrApi.order = rrApi.categoryView = rrApi.view =
rrApi.recomMouseDown = rrApi.recomAddToCart = function() {};
(function(d) {
var ref = d.getElementsByTagName('script')[0];
var apiJs, apiJsId = 'rrApi-jssdk';
if (d.getElementById(apiJsId)) return;
apiJs = d.createElement('script');
apiJs.id = apiJsId;
apiJs.async = true;
apiJs.src = "//cdn.retailrocket.ru/content/javascript/tracking.js";
ref.parentNode.insertBefore(apiJs, ref);
}(document));
</script>
<!-- End Retail Rocket -->
<meta charset="UTF-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<meta http-equiv="X-UA-Compatible" content="ie=edge"/>
<meta name="google-site-verification" content="UA-kf725UpqwkHenFmDQ05SW115fL9UdD9uXiFy-ibQ"/>
<meta name="robots" content="index, follow"/>
<link rel="dns-prefetch" href="//fonts.googleapis.com">
<link rel="shortcut icon" href="/favicon.ico">
<link rel="canonical" href="https://skillbox.ru/media/base/kak-ispolzovat-tsikly-v-yazyke-java-polnoe-rukovodstvo/">
<link rel="preload" href="https://marketplace.canva.com/EAD2962NKnQ/2/0/1600w/canva-rainbow-gradient-pink-and-purple-zoom-virtual-background-_Tcjok-d9b4.jpg" as="image" />
<link rel="preload" href="https://via.placeholder.com/1170x250/92c952" as="image" />
<link rel="preload" href="https://via.placeholder.com/768x250/40E0D0" as="image" />
<link rel="preload" href="https://via.placeholder.com/375x250/ffbcee" as="image" />
<title>Циклы в Java / Skillbox Media</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="description" content="Всё — от простейших конструкций до тонкостей и самых неочевидных моментов — в одной статье." />
<link href="/bitrix/cache/css/s1/media/kernel_main/kernel_main_v1.css?177096852510536" type="text/css" rel="stylesheet" />
<link href="/bitrix/js/ui/fonts/opensans/ui.font.opensans.css?16341171742599" type="text/css" rel="stylesheet" />
<link href="/bitrix/js/main/popup/dist/main.popup.bundle.css?163411696226345" type="text/css" rel="stylesheet" />
<link href="//cdnjs.cloudflare.com/ajax/libs/Swiper/4.5.1/css/swiper.min.css" type="text/css" rel="stylesheet" />
<link href="/bitrix/cache/css/s1/media/page_a1ad23d5ae1fea4c6ac7c690c80a4763/page_a1ad23d5ae1fea4c6ac7c690c80a4763_v1.css?1771490810746236" type="text/css" rel="stylesheet" />
<link href="/bitrix/cache/css/s1/media/template_176a7c2453ad8025fa7d27f65ba6a4b1/template_176a7c2453ad8025fa7d27f65ba6a4b1_v1.css?1771490810442835" type="text/css" data-template-style="true" rel="stylesheet" />
<script type="text/javascript">if(!window.BX)window.BX={};if(!window.BX.message)window.BX.message=function(mess){if(typeof mess==='object'){for(let i in mess) {BX.message[i]=mess[i];} return true;}};</script>
<script type="text/javascript">(window.BX||top.BX).message({'JS_CORE_LOADING':'Загрузка...','JS_CORE_NO_DATA':'- Нет данных -','JS_CORE_WINDOW_CLOSE':'Закрыть','JS_CORE_WINDOW_EXPAND':'Развернуть','JS_CORE_WINDOW_NARROW':'Свернуть в окно','JS_CORE_WINDOW_SAVE':'Сохранить','JS_CORE_WINDOW_CANCEL':'Отменить','JS_CORE_WINDOW_CONTINUE':'Продолжить','JS_CORE_H':'ч','JS_CORE_M':'м','JS_CORE_S':'с','JSADM_AI_HIDE_EXTRA':'Скрыть лишние','JSADM_AI_ALL_NOTIF':'Показать все','JSADM_AUTH_REQ':'Требуется авторизация!','JS_CORE_WINDOW_AUTH':'Войти','JS_CORE_IMAGE_FULL':'Полный размер'});</script>
<script type="text/javascript" src="/bitrix/js/main/core/core.js?1634117028565340"></script>
<script>BX.setJSList(['/bitrix/js/main/core/core_ajax.js','/bitrix/js/main/core/core_promise.js','/bitrix/js/main/polyfill/promise/js/promise.js','/bitrix/js/main/loadext/loadext.js','/bitrix/js/main/loadext/extension.js','/bitrix/js/main/polyfill/promise/js/promise.js','/bitrix/js/main/polyfill/find/js/find.js','/bitrix/js/main/polyfill/includes/js/includes.js','/bitrix/js/main/polyfill/matches/js/matches.js','/bitrix/js/ui/polyfill/closest/js/closest.js','/bitrix/js/main/polyfill/fill/main.polyfill.fill.js','/bitrix/js/main/polyfill/find/js/find.js','/bitrix/js/main/polyfill/matches/js/matches.js','/bitrix/js/main/polyfill/core/dist/polyfill.bundle.js','/bitrix/js/main/core/core.js','/bitrix/js/main/polyfill/intersectionobserver/js/intersectionobserver.js','/bitrix/js/main/lazyload/dist/lazyload.bundle.js','/bitrix/js/main/polyfill/core/dist/polyfill.bundle.js','/bitrix/js/main/parambag/dist/parambag.bundle.js']);
BX.setCSSList(['/bitrix/js/main/lazyload/dist/lazyload.bundle.css','/bitrix/js/main/parambag/dist/parambag.bundle.css']);</script>
<script type="text/javascript">(window.BX||top.BX).message({'AMPM_MODE':false});(window.BX||top.BX).message({'MONTH_1':'Январь','MONTH_2':'Февраль','MONTH_3':'Март','MONTH_4':'Апрель','MONTH_5':'Май','MONTH_6':'Июнь','MONTH_7':'Июль','MONTH_8':'Август','MONTH_9':'Сентябрь','MONTH_10':'Октябрь','MONTH_11':'Ноябрь','MONTH_12':'Декабрь','MONTH_1_S':'января','MONTH_2_S':'февраля','MONTH_3_S':'марта','MONTH_4_S':'апреля','MONTH_5_S':'мая','MONTH_6_S':'июня','MONTH_7_S':'июля','MONTH_8_S':'августа','MONTH_9_S':'сентября','MONTH_10_S':'октября','MONTH_11_S':'ноября','MONTH_12_S':'декабря','MON_1':'янв','MON_2':'фев','MON_3':'мар','MON_4':'апр','MON_5':'май','MON_6':'июн','MON_7':'июл','MON_8':'авг','MON_9':'сен','MON_10':'окт','MON_11':'ноя','MON_12':'дек','DAY_OF_WEEK_0':'Воскресенье','DAY_OF_WEEK_1':'Понедельник','DAY_OF_WEEK_2':'Вторник','DAY_OF_WEEK_3':'Среда','DAY_OF_WEEK_4':'Четверг','DAY_OF_WEEK_5':'Пятница','DAY_OF_WEEK_6':'Суббота','DOW_0':'Вс','DOW_1':'Пн','DOW_2':'Вт','DOW_3':'Ср','DOW_4':'Чт','DOW_5':'Пт','DOW_6':'Сб','FD_SECOND_AGO_0':'#VALUE# секунд назад','FD_SECOND_AGO_1':'#VALUE# секунду назад','FD_SECOND_AGO_10_20':'#VALUE# секунд назад','FD_SECOND_AGO_MOD_1':'#VALUE# секунду назад','FD_SECOND_AGO_MOD_2_4':'#VALUE# секунды назад','FD_SECOND_AGO_MOD_OTHER':'#VALUE# секунд назад','FD_SECOND_DIFF_0':'#VALUE# секунд','FD_SECOND_DIFF_1':'#VALUE# секунда','FD_SECOND_DIFF_10_20':'#VALUE# секунд','FD_SECOND_DIFF_MOD_1':'#VALUE# секунда','FD_SECOND_DIFF_MOD_2_4':'#VALUE# секунды','FD_SECOND_DIFF_MOD_OTHER':'#VALUE# секунд','FD_SECOND_SHORT':'#VALUE#с','FD_MINUTE_AGO_0':'#VALUE# минут назад','FD_MINUTE_AGO_1':'#VALUE# минуту назад','FD_MINUTE_AGO_10_20':'#VALUE# минут назад','FD_MINUTE_AGO_MOD_1':'#VALUE# минуту назад','FD_MINUTE_AGO_MOD_2_4':'#VALUE# минуты назад','FD_MINUTE_AGO_MOD_OTHER':'#VALUE# минут назад','FD_MINUTE_DIFF_0':'#VALUE# минут','FD_MINUTE_DIFF_1':'#VALUE# минута','FD_MINUTE_DIFF_10_20':'#VALUE# минут','FD_MINUTE_DIFF_MOD_1':'#VALUE# минута','FD_MINUTE_DIFF_MOD_2_4':'#VALUE# минуты','FD_MINUTE_DIFF_MOD_OTHER':'#VALUE# минут','FD_MINUTE_0':'#VALUE# минут','FD_MINUTE_1':'#VALUE# минуту','FD_MINUTE_10_20':'#VALUE# минут','FD_MINUTE_MOD_1':'#VALUE# минуту','FD_MINUTE_MOD_2_4':'#VALUE# минуты','FD_MINUTE_MOD_OTHER':'#VALUE# минут','FD_MINUTE_SHORT':'#VALUE#мин','FD_HOUR_AGO_0':'#VALUE# часов назад','FD_HOUR_AGO_1':'#VALUE# час назад','FD_HOUR_AGO_10_20':'#VALUE# часов назад','FD_HOUR_AGO_MOD_1':'#VALUE# час назад','FD_HOUR_AGO_MOD_2_4':'#VALUE# часа назад','FD_HOUR_AGO_MOD_OTHER':'#VALUE# часов назад','FD_HOUR_DIFF_0':'#VALUE# часов','FD_HOUR_DIFF_1':'#VALUE# час','FD_HOUR_DIFF_10_20':'#VALUE# часов','FD_HOUR_DIFF_MOD_1':'#VALUE# час','FD_HOUR_DIFF_MOD_2_4':'#VALUE# часа','FD_HOUR_DIFF_MOD_OTHER':'#VALUE# часов','FD_HOUR_SHORT':'#VALUE#ч','FD_YESTERDAY':'вчера','FD_TODAY':'сегодня','FD_TOMORROW':'завтра','FD_DAY_AGO_0':'#VALUE# дней назад','FD_DAY_AGO_1':'#VALUE# день назад','FD_DAY_AGO_10_20':'#VALUE# дней назад','FD_DAY_AGO_MOD_1':'#VALUE# день назад','FD_DAY_AGO_MOD_2_4':'#VALUE# дня назад','FD_DAY_AGO_MOD_OTHER':'#VALUE# дней назад','FD_DAY_DIFF_0':'#VALUE# дней','FD_DAY_DIFF_1':'#VALUE# день','FD_DAY_DIFF_10_20':'#VALUE# дней','FD_DAY_DIFF_MOD_1':'#VALUE# день','FD_DAY_DIFF_MOD_2_4':'#VALUE# дня','FD_DAY_DIFF_MOD_OTHER':'#VALUE# дней','FD_DAY_AT_TIME':'#DAY# в #TIME#','FD_DAY_SHORT':'#VALUE#д','FD_MONTH_AGO_0':'#VALUE# месяцев назад','FD_MONTH_AGO_1':'#VALUE# месяц назад','FD_MONTH_AGO_10_20':'#VALUE# месяцев назад','FD_MONTH_AGO_MOD_1':'#VALUE# месяц назад','FD_MONTH_AGO_MOD_2_4':'#VALUE# месяца назад','FD_MONTH_AGO_MOD_OTHER':'#VALUE# месяцев назад','FD_MONTH_DIFF_0':'#VALUE# месяцев','FD_MONTH_DIFF_1':'#VALUE# месяц','FD_MONTH_DIFF_10_20':'#VALUE# месяцев','FD_MONTH_DIFF_MOD_1':'#VALUE# месяц','FD_MONTH_DIFF_MOD_2_4':'#VALUE# месяца','FD_MONTH_DIFF_MOD_OTHER':'#VALUE# месяцев','FD_MONTH_SHORT':'#VALUE#мес','FD_YEARS_AGO_0':'#VALUE# лет назад','FD_YEARS_AGO_1':'#VALUE# год назад','FD_YEARS_AGO_10_20':'#VALUE# лет назад','FD_YEARS_AGO_MOD_1':'#VALUE# год назад','FD_YEARS_AGO_MOD_2_4':'#VALUE# года назад','FD_YEARS_AGO_MOD_OTHER':'#VALUE# лет назад','FD_YEARS_DIFF_0':'#VALUE# лет','FD_YEARS_DIFF_1':'#VALUE# год','FD_YEARS_DIFF_10_20':'#VALUE# лет','FD_YEARS_DIFF_MOD_1':'#VALUE# год','FD_YEARS_DIFF_MOD_2_4':'#VALUE# года','FD_YEARS_DIFF_MOD_OTHER':'#VALUE# лет','FD_YEARS_SHORT_0':'#VALUE#л','FD_YEARS_SHORT_1':'#VALUE#г','FD_YEARS_SHORT_10_20':'#VALUE#л','FD_YEARS_SHORT_MOD_1':'#VALUE#г','FD_YEARS_SHORT_MOD_2_4':'#VALUE#г','FD_YEARS_SHORT_MOD_OTHER':'#VALUE#л','CAL_BUTTON':'Выбрать','CAL_TIME_SET':'Установить время','CAL_TIME':'Время','FD_LAST_SEEN_TOMORROW':'завтра в #TIME#','FD_LAST_SEEN_NOW':'только что','FD_LAST_SEEN_TODAY':'сегодня в #TIME#','FD_LAST_SEEN_YESTERDAY':'вчера в #TIME#','FD_LAST_SEEN_MORE_YEAR':'более года назад'});</script>
<script type="text/javascript">(window.BX||top.BX).message({'WEEK_START':'1'});</script>
<script type="text/javascript">(window.BX||top.BX).message({'LANGUAGE_ID':'ru','FORMAT_DATE':'DD.MM.YYYY','FORMAT_DATETIME':'DD.MM.YYYY HH:MI:SS','COOKIE_PREFIX':'BITRIX_SM','SERVER_TZ_OFFSET':'10800','UTF_MODE':'Y','SITE_ID':'s1','SITE_DIR':'/','USER_ID':'','SERVER_TIME':'1771680081','USER_TZ_OFFSET':'0','USER_TZ_AUTO':'Y','bitrix_sessid':'ebab4dcdfdb809a47c90239f15156b91'});</script>
<script type="text/javascript" src="/bitrix/js/main/date/main.date.js?159955296434530"></script>
<script type="text/javascript" src="/bitrix/js/main/popup/dist/main.popup.bundle.js?1634116962109107"></script>
<script type="text/javascript" src="/bitrix/js/main/core/core_date.js?163411653136080"></script>
<script type="text/javascript" src="/bitrix/js/ui/vue/vue2/prod/dist/vue.bundle.js?1635848017173206"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/Swiper/4.5.1/js/swiper.min.js"></script>
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/fingerprintjs2/2.1.0/fingerprint2.min.js"></script>
<script type="text/javascript">BX.setCSSList(['/bitrix/js/main/core/css/core_date.css','/setka/css/setka_skillbox.css','/local/templates/.default/components/bitrix/news.detail/article/style.css','/static/css/newarticle.css','/local/templates/media/libs/jquery.formstyler.css','/local/templates/media/fonts/graphik-font/stylesheet.css','/static/css/main.css','/local/templates/media/template_styles.css']);</script>
<script src="https://cdn.skillbox.pro/frontend-libs/promo-banner/5.10.1/banner-plugin.min.js"></script>
<script type="text/javascript" async src="https://relap.io/api/v6/head.js?token=sI73Ph6a5BnkqK2o"></script>
<meta property="og:title" content="Как использовать циклы в языке Java. Полное руководство" />
<meta property="og:description" content="Всё — от простейших конструкций до тонкостей и самых неочевидных моментов — в одной статье." />
<meta property="og:url" content="https://skillbox.ru/media/base/kak-ispolzovat-tsikly-v-yazyke-java-polnoe-rukovodstvo/" />
<meta property="og:type" content="article" />
<meta property="og:site_name" content="skillbox.ru" />
<meta property="og:locale" content="ru_RU" />
<meta property="og:image" content="https://248006.selcdn.ru/main/iblock/e63/e6392df4afe4bfad70ce9a7305f0225c/0e39d39bfad603aec7323f8e809ca71a.jpg" />
<meta name="relap-image" content="https://248006.selcdn.ru/main/iblock/e63/e6392df4afe4bfad70ce9a7305f0225c/0e39d39bfad603aec7323f8e809ca71a.jpg" />
<meta property="og:image:width" content="600" />
<meta property="og:image:height" content="315" />
<meta property="twitter:card" content="summary_large_image" />
<meta property="twitter:image" content="https://248006.selcdn.ru/main/iblock/e63/e6392df4afe4bfad70ce9a7305f0225c/0e39d39bfad603aec7323f8e809ca71a.jpg" />
<meta property="vk:image" content="https://248006.selcdn.ru/main/iblock/858/858580fe0880a276b388b47909bf8b49/1ac706ccda4e9a97260caf4fc477fe7b.jpg" />
<meta property="article:author" content="Артём Авдеев" />
<meta property="article:tag" content="База знаний" />
<meta property="article:section" content="Код" />
<script type="text/javascript" src="/static/js/vendor.js?1771489421543641"></script>
<script type="text/javascript" src="/local/assets/js/common.js?177148933727419"></script>
<script type="text/javascript" src="/static/js/main.js?1771489421125222"></script>
<script type="text/javascript" src="/local/templates/media/js/main.js?17714893372418"></script>
<script type="text/javascript" src="/local/components/prmedia/popup.subscribe/templates/.default/script.js?17714893376820"></script>
<script type="text/javascript" src="/local/templates/.default/components/bitrix/news.detail/article/infinity.js?177148933713735"></script>
<script type="text/javascript" src="/setka/js/setka_skillbox.js?1771489337106775"></script>
<script type="text/javascript" src="/local/templates/.default/components/bitrix/news.detail/article/script.js?17714893377503"></script>
<script type="text/javascript">var _ba = _ba || []; _ba.push(["aid", "84a6082a990bbac8858fb733b97bed30"]); _ba.push(["host", "skillbox.ru"]); (function() {var ba = document.createElement("script"); ba.type = "text/javascript"; ba.async = true;ba.src = (document.location.protocol == "https:" ? "https://" : "http://") + "bitrix.info/ba.js";var s = document.getElementsByTagName("script")[0];s.parentNode.insertBefore(ba, s);})();</script>
</head>
<body>
<div class="js-sticky-delimiter"></div>
<div class="bx-panel"></div>
<!-- Google Tag Manager (noscript) -->
<noscript>
<iframe src="https://www.googletagmanager.com/ns.html?id=GTM-NLCGQ25" height="0" width="0"
style="display:none;visibility:hidden"></iframe>
</noscript>
<!-- End Google Tag Manager (noscript) -->
<svg class="app-svg-visually-hidden" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs>
<path id="def-arrow-down-a" d="M223 20813l4 5 4-5z"/>
<path id="def-arrow-a" d="M1044.6 803.2a.81.81 0 01-.5.18.8.8 0 01-.8-.8v-3.24c-2.97.1-5.17.88-6.52 2.3a4.86 4.86 0 00-1.39 3.29.8.8 0 01-.75.83h-.04a.79.79 0 01-.79-.74c-.22-3.78.69-6.76 2.69-8.84a10.76 10.76 0 016.81-3.07v-3.3a.8.8 0 011.29-.63l7.91 6.39a.8.8 0 010 1.25zm.3-11.73v2.42a.5.5 0 01-.03.1.8.8 0 01-.05.21.78.78 0 01-.47.42.67.67 0 01-.25.05h-.01c-.06 0-3.93-.04-6.46 2.62-.8.85-1.4 1.87-1.74 2.99 1.79-1.7 4.55-2.57 8.21-2.57.44 0 .8.36.8.8v2.4l5.85-4.72z"/>
<path id="def-be-a" d="M55.6 29.58h6.12v-1.59H55.6zm.64 5.74s.26-2.23 2.58-2.23c2.32 0 2.26 2.23 2.26 2.23zm-3.23 1.27S52.56 42 58.72 42c0 0 5.26.37 5.26-3.81H61.4s-.09 1.59-2.58 1.59c0 0-2.58.17-2.58-2.55l7.74-.01c-.08-.32.9-6.42-5.16-6.36-5.77.05-5.81 5.73-5.81 5.73zm-10.34 2.8v-4.24H47s1.7.16 1.7 2.24c0 1.76-1.06 1.99-1.7 2zM47 29.61s1.16.06 1.16 1.62-.76 1.64-1.49 1.64h-4v-3.26zm4.33 1.3c0-2.68-1.81-3.91-4.26-3.91H39v15.01h8.07s4.92.15 4.92-4.43c0 0 .22-3.73-2.9-3.73 0 0 2.24-.25 2.24-2.94z"/>
<path id="def-briefcase-a" d="M855 13538c0-1.7 1.3-3 3-3s3 1.3 3 3v7c0 1.7-1.3 3-3 3s-3-1.3-3-3v-7z"/>
<path id="def-comments-a" d="M752 8958l-4 4v-12a1 1 0 011-1h11a1 1 0 011 1v7a1 1 0 01-1 1zm12-6v13l-3.2-4H751l2-2h9v-8h1c1 0 1 .45 1 1z"/>
<path id="def-eaye-a" d="M630 8956.22c0 1.04-3.58 5.21-8 5.21s-8-4.26-8-5.21c0-1.05 3.58-5.22 8-5.22s8 4.17 8 5.22zm-5 0h-3v-3.13a3.13 3.13 0 100 6.26 3.07 3.07 0 003-3.13z"/>
<path id="def-file-a" d="M493 9457a2 2 0 01-1.98-2v-16a2 2 0 011.98-2h19.82c1.13 0 2.07.87 2.15 2v16a2.15 2.15 0 01-2.15 2zm0-18v8.83l5.3-4.59a.98.98 0 011.35.05l5.34 5.39 3.27-2.48a.98.98 0 011.36.16l3.35 4.07V9439zm19.97 14.55l-4.27-5.18-3.21 2.43c-.4.3-.95.26-1.3-.09l-5.3-5.35-5.9 5.1v4.54h19.98zm-6.1-10.55a1.98 1.98 0 113.97.04 1.98 1.98 0 01-3.97-.04z"/>
<path id="def-gplus-a" d="M466 10169a4 4 0 013.87-3.99 4.14 4.14 0 012.93.99c-.33.36-.67.71-1.03 1.04-.72-.42-1.58-.75-2.41-.46a2.52 2.52 0 00-1.67 3.23c.41 1.35 2.09 2.1 3.4 1.52a2.22 2.22 0 001.33-1.51c-.78-.01-1.56 0-2.34-.03v-1.36h3.9a4.45 4.45 0 01-.83 3.2c-1 1.28-2.88 1.66-4.4 1.16a4 4 0 01-2.75-3.79z"/><path id="def-gplus-b" d="M476.34 10166h1.32l.01 1.33H479v1.33l-1.33.01v1.33h-1.33l-.01-1.33H475v-1.33l1.33-.01.01-1.33z"/>
<path id="def-inst-a" d="M1480.93 332c-3.5 0-3.95.02-5.32.07-1.37.07-2.3.28-3.14.6-.84.34-1.57.77-2.28 1.5a6.36 6.36 0 00-1.5 2.28 9.84 9.84 0 00-.6 3.14c-.07 1.37-.07 1.82-.07 5.32s.02 3.96.07 5.32c.07 1.37.28 2.31.6 3.14.34.85.77 1.58 1.5 2.29a6.51 6.51 0 002.28 1.5c.82.3 1.77.53 3.14.6 1.37.07 1.82.07 5.32.07s3.96-.02 5.32-.07a9.48 9.48 0 003.14-.6 6.14 6.14 0 002.29-1.5 6.36 6.36 0 001.5-2.29c.3-.81.53-1.77.6-3.14.07-1.36.07-1.82.07-5.32s-.02-3.95-.07-5.32a9.48 9.48 0 00-.6-3.14 6.14 6.14 0 00-1.5-2.28 6.36 6.36 0 00-2.29-1.5 9.84 9.84 0 00-3.14-.6c-1.38-.05-1.82-.07-5.32-.07zm0 2.32c3.45 0 3.85.02 5.22.07 1.27.05 1.94.26 2.4.45.6.25 1.03.52 1.48.97.45.45.73.89.97 1.5.18.44.39 1.14.45 2.39.07 1.37.07 1.76.07 5.21s-.01 3.85-.07 5.22a6.55 6.55 0 01-.45 2.4c-.24.6-.52 1.03-.97 1.48-.45.45-.88.73-1.49.97-.45.18-1.14.39-2.39.45-1.37.07-1.77.07-5.22.07-3.45 0-3.84-.01-5.21-.07a6.55 6.55 0 01-2.4-.45 4.11 4.11 0 01-1.49-.97 4.11 4.11 0 01-.97-1.49 7.52 7.52 0 01-.45-2.39c-.07-1.37-.07-1.77-.07-5.22 0-3.45.02-3.84.07-5.21.05-1.27.26-1.95.45-2.4.25-.6.52-1.04.97-1.49.45-.45.89-.72 1.5-.97a7.52 7.52 0 012.39-.45c1.35-.05 1.76-.07 5.21-.07z"/><path id="def-inst-b" d="M1480.93 349.2a4.3 4.3 0 110-8.59 4.3 4.3 0 010 8.6zm0-10.93a6.62 6.62 0 100 13.24 6.62 6.62 0 000-13.24z"/><path id="def-inst-c" d="M1486.27 338.01a1.54 1.54 0 113.09 0 1.54 1.54 0 01-3.09 0z"/>
<path id="def-like-down-a" d="M1004.33 543.66c-1.1 0-2.45-.86-2.61-3.31-.05-1.41.11-2.82.48-4.19h-2.96c-2.15 0-3.42-1.35-3.42-2.67 0-.39.05-.77.17-1.13a2.4 2.4 0 01-.99-2.03 2.35 2.35 0 011.02-2.05c-.12-.34-.18-.7-.17-1.06.86-.6 1.2-1.7.86-2.7 0-2.52 3.45-2.52 4.57-2.52h2.85c1.3.06 2.56.4 3.71 1 .67.36 1.41.6 2.18.67h3.23c.25 0 .5.11.65.31.12.14 1.1 1.47 1.1 4.69.03 1.8-.28 3.6-.9 5.31a.83.83 0 01-.67.5c-.03 0-3.27.4-4.85 1.98a10.32 10.32 0 00-2.8 5.94 1.4 1.4 0 01-1.45 1.26zm-6.84-10.17c0 .34.52 1 1.75 1h4.06a.83.83 0 01.8 1.1c-.5 1.5-.73 3.07-.72 4.65.08 1.1.44 1.6.79 1.72a11.94 11.94 0 013.23-6.67c1.57-1.58 4.2-2.18 5.32-2.38.41-1.37.62-2.8.61-4.24a8.18 8.18 0 00-.56-3.34h-2.75c-1-.07-1.97-.35-2.85-.81a7.53 7.53 0 00-3.04-.85h-2.85c-1.32 0-2.9.15-2.9.85-.02.11.02.22.09.3a.73.73 0 01.75.77.92.92 0 01-.85.87.85.85 0 00-.85.77c-.05.22.01.44.17.6.42.07.71.45.67.88a.87.87 0 01-.86.77.77.77 0 00-.83.85.8.8 0 00.87.85c.46.01.82.4.81.85 0 .43-.33.78-.76.8-.09.21-.12.44-.1.66z"/>
<path id="def-like-up-a" d="M944.67 520c1.1 0 2.45.87 2.61 3.32.05 1.4-.11 2.82-.48 4.18h2.96c2.15 0 3.42 1.36 3.42 2.67 0 .39-.05.77-.17 1.14a2.4 2.4 0 01.99 2.02c.04.81-.35 1.59-1.02 2.05.12.34.18.7.17 1.07-.86.6-1.2 1.7-.86 2.69 0 2.52-3.45 2.52-4.57 2.52h-2.85a8.94 8.94 0 01-3.71-.99 5.67 5.67 0 00-2.18-.67h-3.23a.83.83 0 01-.65-.32c-.12-.14-1.1-1.47-1.1-4.68-.03-1.81.28-3.62.9-5.32a.83.83 0 01.67-.5c.03 0 3.27-.4 4.85-1.98a10.32 10.32 0 002.8-5.93 1.4 1.4 0 011.45-1.27zm6.84 10.17c0-.34-.52-1-1.75-1h-4.06a.83.83 0 01-.8-1.1c.5-1.5.73-3.07.72-4.65-.08-1.1-.44-1.6-.79-1.72a11.94 11.94 0 01-3.23 6.67c-1.57 1.58-4.2 2.19-5.32 2.38a14.38 14.38 0 00-.61 4.25 8.18 8.18 0 00.56 3.33h2.75c1 .07 1.97.35 2.85.82.94.49 1.98.78 3.04.85h2.85c1.32 0 2.9-.15 2.9-.86a.35.35 0 00-.09-.3.73.73 0 01-.75-.77.92.92 0 01.85-.87c.44 0 .81-.33.85-.77a.65.65 0 00-.17-.6.81.81 0 01-.67-.87.87.87 0 01.86-.78.77.77 0 00.83-.85.8.8 0 00-.87-.85.83.83 0 01-.81-.85c0-.43.33-.78.76-.8.09-.21.12-.43.1-.66z"/>
<path id="def-like-a" d="M701.32 8960.32a.95.95 0 01-.95.95h-5.72c-.96 0-1.92-.95-2.87-.95h-.95v-6.68c.04-.6.4-1.12.95-1.36a4.78 4.78 0 002.87-4.37v-.96a.95.95 0 01.95-.95h.95c.53 0 .95.43.95.95v5.73h3.82a.9.9 0 01.96.96zm-14.31.95v-9.54h1.9a.96.96 0 01.97.95v7.64a.96.96 0 01-.96.95zm.99-8.3a.48.48 0 10.88.38.48.48 0 00-.88-.38z"/>
<path id="def-link-a" d="M626.02 1163.93l-.02 15.99 13.02.01v-4a.86.86 0 01.24-.68.9.9 0 01.66-.28 1 1 0 011 1v4.95a1 1 0 01-.29.7 1 1 0 01-.71.29H625a1 1 0 01-.71-.29 1 1 0 01-.29-.7V1163a1 1 0 011-1h3.95a1 1 0 011 1 .89.89 0 01-.93.93z"/><path id="def-link-b" d="M641.95 1171a1 1 0 01-1-1v-5.59l-9.25 9.3a.99.99 0 01-1.41-.01.99.99 0 01.01-1.41l9.24-9.29h-5.56a1 1 0 01-1-1 1 1 0 011-1h7.97a1 1 0 011 1v8a1 1 0 01-1 1z"/>
<path id="def-mail-a" d="M1058 261c0-.6-.4-1-1-1h-14c-.6 0-1 .4-1 1l8 6.5z"/><path id="def-mail-b" d="M1042 262.5v8.5c0 .6.4 1 1 1h14c.6 0 1-.4 1-1v-8.5l-8 6.5z"/>
<path id="def-outside-a" d="M1204.24 9231.16h-10.05c-.92 0-1.67-.75-1.67-1.68v-4.2c0-.46.38-.84.84-.84a.81.81 0 01.8.84v4.2h10.08v-16.8h-10.08v4.2a.81.81 0 01-.8.84.84.84 0 01-.84-.84v-4.2c0-.93.75-1.68 1.67-1.68h10.05c.92 0 1.67.75 1.67 1.68v16.8c0 .93-.75 1.68-1.67 1.68zm-15.56-10.92h11.37a.84.84 0 110 1.68h-11.36l1.91 1.92a.84.84 0 11-1.18 1.2l-3.35-3.36a.86.86 0 01-.24-.6v-.02a.83.83 0 01.24-.58l3.35-3.36a.83.83 0 011.18 0c.33.33.33.87 0 1.2z"/>
<path id="def-pencil-a" d="M1190.84 9818.68a.64.64 0 01-.19.13l-.07.06-4.42 1.82c-.1.05-.21.07-.32.07a.83.83 0 01-.77-1.15l1.84-4.4v-.02a.38.38 0 01.09-.13l.08-.13v-.01l10.82-10.82-.44-.44-3.56 3.57a.83.83 0 01-1.18-1.18l4.16-4.15a.81.81 0 011.17 0l1.03 1.03 1.86-1.86a.84.84 0 011.17 0l2.58 2.58c.33.32.33.85 0 1.18zm-2.88-1.7l-.58 1.41 1.41-.58zm.88-1.47l1.41 1.4 10.24-10.23-1.4-1.4zm12.69-12.68l-1.27 1.27 1.4 1.4 1.28-1.27z"/>
<path id="def-phone-a" d="M732.62 41c-2.25 0-6.37-2.73-10.24-6.78a33.08 33.08 0 01-5.22-6.96c-1.33-2.53-1.52-4.32-.56-5.31l2.91-2.72c.17-.16.4-.24.63-.23.24.02.46.13.61.32l3.79 4.58c.23.28.28.68.12 1.01l-1.47 3.08 5.24 5.48 2.93-1.54a.83.83 0 01.96.12l4.38 3.96c.17.16.28.38.3.63a.97.97 0 01-.22.67l-2.53 3.02c-.33.34-.81.67-1.63.67zm-14.76-17.78c-.15.21-.25 1.09.83 3.15 1.06 2 2.8 4.32 4.93 6.55 3.87 4.06 7.53 6.25 9 6.25.2 0 .3-.04.33-.08l1.94-2.3-3.27-2.95-2.98 1.56a.84.84 0 01-1.01-.17l-6.12-6.42a.92.92 0 01-.16-1.05l1.48-3.12-2.82-3.42z"/>
<path id="def-plus-a" d="M1223.33 4172.67h-6.66v6.66a.67.67 0 01-1.34 0v-6.66h-6.66a.67.67 0 010-1.34h6.66v-6.66a.67.67 0 011.34 0v6.66h6.66a.67.67 0 010 1.34z"/>
<path id="def-search-a" d="M1092.53 24.87a6.7 6.7 0 10-.05 13.4 6.7 6.7 0 00.05-13.4zm12.1 18.85a.95.95 0 01-1.35 0l-5.4-5.43a8.62 8.62 0 111.35-1.35l5.4 5.43c.37.37.37.98 0 1.35z"/>
<path id="def-shape-a" d="M879 13323h-4a1 1 0 01-1-1v-4a1 1 0 011-1h.85c-1.29-8.14-8.38-15.22-16.85-16.81v.81a1 1 0 01-1 1h-4a1 1 0 01-1-1v-.81c-8.47 1.6-15.56 8.67-16.85 16.81h.85a1 1 0 011 1v4a1 1 0 01-1 1h-4a1 1 0 01-1-1v-4a1 1 0 011-1h1.13c1.03-7.24 6.24-13.76 13.07-17h-6.48a1.98 1.98 0 01-1.72 1.01c-.97 0-1.8-.69-1.98-1.65a2 2 0 011.28-2.23 2 2 0 012.42.87H853v-1a1 1 0 011-1h4a1 1 0 011 1v1h12.27a2.01 2.01 0 110 2h-6.47c6.83 3.24 12.04 9.76 13.07 17H879a1 1 0 011 1v4a1 1 0 01-1 1zm-43-4h-2v2h2zm21-21h-2v2h2zm21 21h-2v2h2zm-22.93-12.51a.52.52 0 01.1-.18l.01-.03.03-.03a1 1 0 01.2-.21l.06-.04c.06-.04.12-.08.19-.1l.04-.02.09-.01.05-.01.16-.03.15.03h.04l.11.01.04.02.19.1.02.02.02.01a.92.92 0 01.24.25l.02.03c.04.05.08.12.1.18l.03.05c.02.07 2.33 7.26 8.51 10.59.26.14.45.39.51.68a.97.97 0 01-.2.82 23.7 23.7 0 00-3.99 8.81 8.02 8.02 0 012.21 5.57 1 1 0 01-1 1h-14a1 1 0 01-1-1 8.02 8.02 0 012.21-5.57 23.66 23.66 0 00-3.99-8.8 1 1 0 01.31-1.51c6.21-3.34 8.49-10.52 8.51-10.59l.03-.04zm.93 20.49a6 6 0 00-5.92 5.02h11.84a6 6 0 00-5.92-5.02zm-4.06-.9a8.17 8.17 0 018.12 0 25.8 25.8 0 013.47-7.78 20.33 20.33 0 01-6.53-6.96v6.93a2 2 0 01-.97 3.73 2.03 2.03 0 01-2.03-2 2 2 0 011-1.7v-6.96a20.33 20.33 0 01-6.53 6.96 25.8 25.8 0 013.47 7.78z"/>
<path id="def-strawberry-a" d="M873.26 13427.96a7.49 7.49 0 01-4.13-1.21 20.45 20.45 0 012.02 8.92c0 10.41-17.26 18.25-28.46 18.25-3.71 0-6.53-.86-8.17-2.48l-.1-.1c-3.9-4.01-2.65-13.97.62-21.78 3.77-9.01 9.53-14.39 15.41-14.39 3.1 0 6.17.68 8.97 1.99a8.12 8.12 0 01-.65-1.24c-1.09-2.7-.53-5.87 1.68-9.44a1 1 0 011.11-.45c.21.06 5.12 1.38 6.8 5.49.8 2.19.7 4.61-.29 6.72 1.25-.51 2.58-.79 3.92-.83 5.12 0 7.74 4.75 8.4 7.26a.97.97 0 01-.45 1.1 12.95 12.95 0 01-6.68 2.19zm-36.36 2.36c-3.42 8.19-3.85 16.84-.97 19.69l.08.09c1.26 1.18 3.62 1.82 6.68 1.82a38.27 38.27 0 0017.26-4.82c3.43-1.92 9.18-5.96 9.18-11.43a18.4 18.4 0 00-18.68-18.5c-5.93 0-10.89 6.79-13.55 13.15zm29.59-18.05c-.97-2.38-3.49-3.6-4.73-4.07-1.52 2.71-1.89 5.05-1.12 6.96.96 2.37 3.48 3.6 4.73 4.08 1.52-2.71 1.89-5.05 1.12-6.97zm5.5 7.13c-1.75.08-3.45.6-4.95 1.51.59 1.54 2.36 5.06 6.22 5.06 1.75-.08 3.45-.6 4.94-1.5-.59-1.55-2.36-5.07-6.21-5.07zm-13.43 13.54h3v3h-3zm-4-5h3v3h-3zm2 13h-3v-3h3zm-7-8h3v3h-3zm0-9h3v3h-3zm2 22h-3v-3h3zm-7-8h3v3h-3zm0-9h3v3h-3zm-5 14h3v3h-3zm0-9h3v3h-3z"/>
<path id="def-telegram-a" d="M823.8 272.93l-4.09 20.05c-.3 1.42-1.16 1.76-2.36 1.1l-6.52-4.77-3.13 3c-.55.47-.75.66-1.27.65-.5 0-.74-.3-1.03-1.1l-2.4-7.29-6.26-1.94c-1.01-.32-1.06-1.66.31-2.05l25.01-9.39c1.14-.52 2.18 0 1.74 1.74zm-17.39 18.55l.6-5.26 11.83-10.54c.31-.36.09-.88-.61-.42l-14.24 8.87z"/>
<path id="def-tm-a" d="M1406.46 346.34l13.28-8.34c.65-.44.86.05.57.39l-11.02 9.91-.57 4.96zm16.84-12.16l-23.32 8.83c-1.27.37-1.24 1.62-.3 1.93l5.84 1.82 2.24 6.86c.28.75.5 1.04.96 1.04.49 0 .67-.18 1.19-.62.58-.55 1.5-1.43 2.92-2.83l6.08 4.49c1.12.62 1.92.3 2.21-1.04l3.8-18.85c.41-1.63-.55-2.12-1.62-1.63z"/>
<path id="def-trash-a" d="M1175 9805h-1.09l-1.8 13.12a2.15 2.15 0 01-2.11 1.88h-8a2.14 2.14 0 01-2.1-1.88l-1.78-13.12H1157a1 1 0 010-2h5v-1a3 3 0 013-3h2a3 3 0 013 3v1h5a1 1 0 010 2zm-7-3a1 1 0 00-1-1h-2a1 1 0 00-1 1v1h4zm-7.87 3l1.75 12.9c.02.05.07.09.12.1h8c.06-.01.1-.05.12-.11l1.78-12.89zm6.87 3h2v6h-2zm-4 0h2v6h-2z"/>
<path id="def-triangle-a" d="M1238 6883l7.22 7.22 7.22-7.22z"/>
<path id="def-user-circle-a" d="M1265.24 30.18a10 10 0 01-2.18 10.9 6.94 6.94 0 00-4.7-4.69 5 5 0 10-4.66.01c-2.24.72-4 2.47-4.72 4.71a10 10 0 1116.26-10.93zm-6.22 1.82a3 3 0 11-6-.01 3 3 0 016 .01zm-8.3 10.48c.4-2.6 2.65-4.5 5.28-4.48 2.73 0 5.1 1.96 5.27 4.37l.03.09a9.9 9.9 0 01-10.57.02zM1256 46a12.01 12.01 0 000-24 12 12 0 100 24z"/>
<path id="def-vb-a" d="M955.45 276.38c.68 3.25.79 6.51-.02 9.76-.14.57-.36 1.11-.58 1.65-.84 2.05-2.5 3.13-4.57 3.73-1.63.48-3.31.69-5 .82-.89.07-2.29.03-3.18.02-.76-.01-.55-.04-1.04.45-.96.97-1.84 1.82-2.76 2.84a28 28 0 01-1.35 1.35v-4.93c0-.25-.07-.4-.3-.5-.26-.1-.5-.24-.75-.34a6.95 6.95 0 01-4.35-4.98 19.93 19.93 0 01-.51-6.16c.07-1.4.26-2.79.64-4.15a6.8 6.8 0 013.48-4.25 13.83 13.83 0 014.79-1.47 25.9 25.9 0 019.8.59 8.9 8.9 0 013.5 1.69 6.59 6.59 0 012.2 3.88zm-12.05-1.52c.54.04 1.07.15 1.6.28 1.98.5 3.52 1.53 4.32 3.43.42.99.63 2.02.7 3.08.02.27.15.42.43.42.27-.01.38-.19.39-.43.02-.21.01-.42.01-.64a7.41 7.41 0 00-1.39-4.12c-1.49-1.96-3.43-2.7-6-2.82-.31-.02-.49.1-.51.42-.01.31.21.36.45.38zm4.39 4.61c.11.4.21.81.26 1.22.03.27-.03.64.42.65.32.01.4-.13.43-.67a4.58 4.58 0 00-.68-2.46c-.96-1.52-2.37-2.16-4.16-2.32-.28-.03-.48.08-.52.37-.05.3.14.44.41.48.55.08 1.08.22 1.6.4a3.32 3.32 0 012.24 2.33zm-2.22-1.46a2.29 2.29 0 00-.89-.22c-.38.03-.58.19-.58.45.01.33.3.33.52.39l.27.06c.72.19 1.13.65 1.27 1.36.03.13.04.27.08.4.06.18.18.31.4.31.21-.01.34-.13.39-.32l.04-.35a2.4 2.4 0 00-1.5-2.08zm4.89 7.94c-.78-.65-1.6-1.25-2.47-1.78-1.02-.62-1.77-.45-2.47.49l-.11.14c-.32.39-.72.54-1.22.4a5.89 5.89 0 01-1.51-.74 6.76 6.76 0 01-2.77-3.19c-.35-.82-.19-1.35.54-1.88l.28-.2c.55-.45.68-.89.37-1.52a9.94 9.94 0 00-2.3-3.05 1.3 1.3 0 00-.97-.36 2.9 2.9 0 00-2.62 2.74c-.01.37.08.78.24 1.17 2.23 5.38 6.16 9.1 11.6 11.36.4.17.82.27 1.25.15a3.75 3.75 0 002.55-2.16c.28-.61.14-1.13-.39-1.57z"/>
<path id="def-ynadex-a" d="M471.93 10326.44h-.59c-.92 0-1.8-.64-1.8-2.24 0-1.67.83-2.35 1.68-2.35h.7v4.59zm.92-5.44h-1.6c-1.55 0-2.87 1.13-2.87 3.33 0 1.32.64 2.3 1.78 2.78l-2.13 3.68c-.07.12 0 .21.1.21h1c.08 0 .14-.03.17-.1l1.93-3.6h.7v3.6c0 .05.04.1.1.1h.86c.08 0 .11-.04.11-.1v-9.77c0-.09-.06-.13-.15-.13z"/>
<path id="def-ytube-a" d="M1343.37 349.72v-9.44l6.27 4.72zm-7.81-14.03a3.54 3.54 0 00-3.56 3.51v11.6a3.54 3.54 0 003.56 3.51h19.88a3.54 3.54 0 003.56-3.5V339.2a3.54 3.54 0 00-3.56-3.51h-19.88z"/>
</defs>
<symbol id="icon-arrow-chevron" viewBox="0 0 9 15"><path d="M7.07.862L0 7.93 7.072 15l1.06-1.06-6.011-6.01L8.13 1.922 7.07.862z"/></symbol>
<symbol id="icon-arrow-down" viewBox="0 0 8 5"><use xlink:href="#def-arrow-down-a" transform="translate(-223 -20813)"/></symbol>
<symbol id="icon-arrow-left" viewBox="0 0 18 12"><path d="M.1 6.3c-.1-.3 0-.6.1-.8l4.3-4.3c.3-.3.7-.3 1 0 .3.3.3.7 0 1l-3 3.1h14.1c.4 0 .7.3.7.7 0 .4-.3.7-.7.7H2.5l3.1 3.1c.3.3.3.8 0 1-.2.2-.3.2-.4.3-.2.1-.5 0-.7-.2L.2 6.6c-.1-.1-.1-.2-.1-.3z"/></symbol>
<symbol id="icon-arrow-menu" viewBox="0 0 10 5"><path fill-rule="evenodd" clip-rule="evenodd" d="M0 0l5 5 5-5H0z"/></symbol>
<symbol id="icon-arrow-right" viewBox="0 0 15 12"><path d="M14.19 5.77c.11.26.05.57-.15.78l-4.32 4.33a.72.72 0 01-1.02 0 .72.72 0 010-1.02l3.09-3.1H.69A.72.72 0 010 6.04c0-.38.31-.7.69-.72h11.1L8.7 2.23a.73.73 0 01.33-1.21c.24-.06.51.01.69.19l4.32 4.32a.6.6 0 01.15.24z"/></symbol>
<symbol id="icon-arrow" viewBox="0 0 20 17"><use xlink:href="#def-arrow-a" transform="translate(-1033 -789)"/></symbol>
<symbol id="icon-be" viewBox="0 0 25 16"><use xlink:href="#def-be-a" transform="translate(-39 -27)"/></symbol>
<symbol id="icon-be2-mob" viewBox="0 0 34 34"><path d="M15.426 16.508s1.507-.112 1.507-1.879S15.7 12 14.138 12H9v9.875h5.138s3.137.099 3.137-2.915c0 0 .137-2.452-1.85-2.452zm-4.162-2.753h2.874s.699 0 .699 1.027c0 1.028-.411 1.177-.877 1.177h-2.696v-2.204zm2.742 6.365h-2.742v-2.64h2.874s1.041-.013 1.041 1.357c0 1.142-.761 1.271-1.173 1.283zM23.408 12.582h-4.074v1.216h4.074v-1.216zM21.458 14.513c-3.797 0-3.794 3.793-3.794 3.793s-.26 3.775 3.794 3.775c0 0 3.38.193 3.38-2.626H23.1s.058 1.062-1.584 1.062c0 0-1.737.116-1.737-1.718h5.116s.56-4.286-3.437-4.286zm1.545 2.968h-3.244s.213-1.522 1.738-1.522 1.506 1.522 1.506 1.522z"/></symbol>
<symbol id="icon-be2" viewBox="0 0 56 56"><path d="M27.475 27.946s1.987-.148 1.987-2.479c0-2.33-1.625-3.467-3.685-3.467H19v13.024h6.777s4.137.13 4.137-3.844c0 0 .18-3.234-2.439-3.234zm-5.489-3.631h3.791s.921 0 .921 1.355-.542 1.551-1.156 1.551h-3.556v-2.906zm3.616 8.394h-3.616v-3.48h3.79s1.374-.018 1.374 1.788c0 1.506-1.004 1.677-1.548 1.692zM38.004 22.767H32.63v1.604h5.373v-1.604zM35.432 25.314c-5.009 0-5.004 5.003-5.004 5.003s-.344 4.98 5.004 4.98c0 0 4.456.254 4.456-3.464h-2.292s.077 1.4-2.088 1.4c0 0-2.291.154-2.291-2.266h6.748s.738-5.653-4.533-5.653zm2.037 3.915H33.19s.28-2.008 2.291-2.008c2.013 0 1.987 2.008 1.987 2.008z"/></symbol>
<symbol id="icon-briefcase" viewBox="834 13519 48 44"><path d="M836.5 13563c-1.4 0-2.5-1.2-2.5-2.6v-19.4c0 .6.4 1 1 1h1v18.4c0 .3.2.6.5.6h42.9c.3 0 .5-.3.5-.6v-18.4h1c.6 0 1-.4 1-1s-.4-1-1-1h-1v-10.4c0-.3-.2-.5-.5-.6h-42.9c-.3 0-.5.3-.5.6v10.4h-1c-.6 0-1 .4-1 1v-11.4c0-1.4 1.1-2.5 2.5-2.6H849v1c0 .6.4 1 1 1s1-.4 1-1v-1h14v1c0 .6.4 1 1 1 .3 0 .5-.1.7-.3.2-.2.3-.4.3-.7v-1h12.5c1.4 0 2.5 1.2 2.5 2.6v30.9c0 1.4-1.1 2.6-2.5 2.6h-43zm18.4-21H836v-2h18.9c.6 0 1 .4 1 1s-.4 1-1 1zm25.1-2v2h-18.9c-.6 0-1-.4-1-1s.4-1 1-1H880zm-13-16.8c0-2.3-1.9-4.2-4.2-4.2h-9.6c-2.3 0-4.2 1.9-4.2 4.2v3.8h2v-3.8c0-1.2 1-2.2 2.2-2.2h9.6c1.2 0 2.2 1 2.2 2.2v3.8h2v-3.8z"/><clipPath id="def-briefcase-b"><use xlink:href="#def-briefcase-a" overflow="visible"/></clipPath><g clip-path="url(#def-briefcase-b)"><path stroke-width="4" stroke-miterlimit="50" d="M855 13538c0-1.7 1.3-3 3-3s3 1.3 3 3v7c0 1.7-1.3 3-3 3s-3-1.3-3-3v-7z"/></g></symbol>
<symbol id="icon-burger" viewBox="0 0 20 14"><g fill-rule="evenodd"><path d="M0 0h20v2H0zM0 6h20v2H0zM0 12h20v2H0z"/></g></symbol>
<symbol id="icon-cancel-circle" viewBox="0 0 24 24"><path d="M12 24a12 12 0 110-24 12 12 0 010 24zm0-22a10 10 0 100 20 10 10 0 000-20zm4.71 13.29L13.41 12l3.3-3.29a1 1 0 00-.02-1.4 1 1 0 00-1.4-.02L12 10.59l-3.29-3.3a1 1 0 00-1.4.02 1 1 0 00-.02 1.4l3.3 3.29-3.3 3.29a1 1 0 00.02 1.4 1 1 0 001.4.02l3.29-3.3 3.29 3.3a1 1 0 001.42 0 1 1 0 000-1.42z"/></symbol>
<symbol id="icon-clip" viewBox="0 0 25 22"><path d="M12.1 21.37a1.02 1.02 0 01-.71-1.73L21.74 9.11a4.19 4.19 0 000-5.87 4.04 4.04 0 00-5.78 0l-12 12.21c-.59.49-.94 1.2-.97 1.97.05.49.28.95.63 1.29.31.35.77.53 1.23.48.74-.17 1.4-.57 1.89-1.15l9.42-9.58a.98.98 0 011.41 0c.39.4.39 1.04 0 1.44l-9.42 9.58A5.3 5.3 0 015.1 21.2a3.37 3.37 0 01-2.89-1.05A4.16 4.16 0 011 17.54a4.62 4.62 0 011.55-3.53l12-12.2a6.03 6.03 0 018.6 0 6.24 6.24 0 010 8.74L12.8 21.07a.98.98 0 01-.7.3z"/></symbol>
<symbol id="icon-clock" viewBox="0 0 24 24"><path d="M0 12a12 12 0 1124 0 12 12 0 01-24 0zm2 0a10 10 0 1020 0 10 10 0 00-20 0zm14 5a1 1 0 00.71-1.71L13 11.59V5a1 1 0 00-1-1 1 1 0 00-1 1v7a1 1 0 00.08.38c.05.12.12.24.21.33l4 4c.19.18.45.29.71.29z"/></symbol>
<symbol id="icon-close-menu" viewBox="0 0 16 16"><path fill-rule="evenodd" clip-rule="evenodd" d="M15.636 2.303L13.97.636 8.136 6.469 2.303.636.636 2.303 6.47 8.136.636 13.97l1.667 1.667 5.833-5.833 5.833 5.833 1.667-1.666-5.833-5.834 5.833-5.833z"/></symbol>
<symbol id="icon-close" viewBox="0 0 16 15"><g fill-rule="evenodd"><path d="M1.963.045l13.791 12.86-1.364 1.463L.6 1.508z"/><path d="M14.39.045L.6 12.905l1.364 1.463 13.79-12.86z"/></g></symbol>
<symbol id="icon-comments" viewBox="0 0 16 16"><use xlink:href="#def-comments-a" transform="translate(-748 -8949)"/></symbol>
<symbol id="icon-eaye" viewBox="0 0 16 11"><use xlink:href="#def-eaye-a" transform="translate(-614 -8951)"/></symbol>
<symbol id="icon-fb" viewBox="0 0 13 25"><path d="M8.44 25V13.6h3.83l.58-4.45H8.44V6.31c0-1.28.36-2.16 2.2-2.16H13V.18A29.7 29.7 0 009.57 0c-3.4 0-5.73 2.07-5.73 5.87v3.28H0v4.45h3.84V25z"/></symbol>
<symbol id="icon-fb2-mob" viewBox="0 0 34 34"><path fill-rule="evenodd" clip-rule="evenodd" d="M18.415 24.638v-7.131h2.457l.366-2.784h-2.823v-1.776c0-.8.23-1.351 1.411-1.351h1.514v-2.49A21.931 21.931 0 0019.14 9c-2.182 0-3.677 1.295-3.677 3.672v2.051H13v2.784h2.463v7.13h2.952z"/></symbol>
<symbol id="icon-fb2" viewBox="0 0 56 56"><path fill-rule="evenodd" clip-rule="evenodd" d="M30.142 38.625V29.22h3.24l.483-3.671H30.14v-2.343c0-1.056.305-1.782 1.862-1.782H34V18.14a28.937 28.937 0 00-2.902-.14c-2.877 0-4.849 1.708-4.849 4.843v2.706H23v3.671h3.25v9.405h3.892z"/></symbol>
<symbol id="icon-file" viewBox="0 0 24 20"><use xlink:href="#def-file-a" transform="translate(-491 -9437)"/></symbol>
<symbol id="icon-github-mob" viewBox="0 0 34 34"><path d="M17.2 10c-3.978 0-7.2 3.307-7.2 7.386 0 3.263 2.063 6.031 4.923 7.007.36.07.492-.16.492-.355 0-.175-.006-.64-.009-1.256-2.003.445-2.425-.99-2.425-.99-.328-.853-.801-1.081-.801-1.081-.652-.458.05-.449.05-.449.723.052 1.103.761 1.103.761.642 1.13 1.685.803 2.097.615.065-.478.25-.803.456-.988-1.599-.185-3.28-.82-3.28-3.65 0-.806.28-1.464.741-1.981-.08-.187-.324-.938.063-1.955 0 0 .603-.198 1.98.757a6.754 6.754 0 011.8-.25 6.754 6.754 0 011.8.25c1.368-.955 1.971-.757 1.971-.757.387 1.017.144 1.768.072 1.955.46.517.738 1.175.738 1.981 0 2.838-1.683 3.462-3.285 3.644.252.222.486.674.486 1.366 0 .989-.009 1.783-.009 2.023 0 .193.126.424.495.35 2.881-.969 4.942-3.739 4.942-6.997 0-4.079-3.224-7.386-7.2-7.386z"/></symbol>
<symbol id="icon-github" viewBox="0 0 56 56"><path d="M27.913 19C22.436 19 18 23.362 18 28.741c0 4.305 2.84 7.955 6.778 9.242.496.092.677-.21.677-.468 0-.232-.008-.844-.012-1.657-2.758.588-3.34-1.306-3.34-1.306-.45-1.125-1.102-1.425-1.102-1.425-.898-.604.07-.592.07-.592.995.068 1.518 1.004 1.518 1.004.884 1.49 2.32 1.059 2.887.81.09-.63.344-1.059.628-1.302-2.202-.244-4.515-1.082-4.515-4.814 0-1.063.384-1.932 1.02-2.614-.112-.246-.446-1.236.086-2.578 0 0 .83-.26 2.727.999a9.676 9.676 0 012.478-.329 9.676 9.676 0 012.478.329c1.883-1.26 2.714-.999 2.714-.999.532 1.342.198 2.332.099 2.578a3.737 3.737 0 011.016 2.614c0 3.742-2.317 4.566-4.523 4.805.347.293.67.89.67 1.803 0 1.303-.013 2.35-.013 2.667 0 .255.173.56.681.463 3.966-1.279 6.804-4.932 6.804-9.23 0-5.38-4.439-9.741-9.913-9.741z"/></symbol>
<symbol id="icon-gplus" viewBox="0 0 13 8"><use xlink:href="#def-gplus-a" transform="translate(-466 -10165)"/><use xlink:href="#def-gplus-b" transform="translate(-466 -10165)"/></symbol>
<symbol id="icon-head" viewBox="0 0 54 45"><g transform="translate(2 2)" fill-rule="evenodd"><path d="M9.23 19.458v17.61s14.232 8.328 28.462 0V19.231" fill-rule="nonzero"/><path stroke-width="3" fill-rule="nonzero" stroke-linecap="round" stroke-linejoin="round" d="M46.923 13.25L22.99 0 0 14.007l23.179 13.44L46.923 13.25V30"/><path d="M9.23 19.458v17.61s14.232 8.328 28.462 0V19.231" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/><circle stroke-width="3" fill-rule="nonzero" stroke-linecap="round" stroke-linejoin="round" cx="47.308" cy="32.692" r="2.692"/><path d="M32.733 18.745c.53.295 1.074.575 1.604.87 1.302.7 2.468-1.164 1.181-1.865-3.694-1.99-7.403-3.98-11.097-5.957-.53-.294-1.075-.575-1.604-.869-1.302-.7-2.468 1.163-1.181 1.864 3.694 1.99 7.403 3.981 11.097 5.957zM36.733 15.745c.53.295 1.074.575 1.604.87 1.302.7 2.468-1.164 1.181-1.865a4281.61 4281.61 0 00-11.097-5.957c-.53-.294-1.075-.575-1.604-.869-1.302-.7-2.468 1.163-1.181 1.864 3.694 1.99 7.403 3.981 11.097 5.957z" fill-rule="nonzero"/></g></symbol>
<symbol id="icon-inst" viewBox="0 0 26 26"><use xlink:href="#def-inst-a" transform="translate(-1468 -332)"/><use xlink:href="#def-inst-b" transform="translate(-1468 -332)"/><use xlink:href="#def-inst-c" transform="translate(-1468 -332)"/></symbol>
<symbol id="icon-instagram-mob" viewBox="0 0 34 34"><path fill-rule="evenodd" clip-rule="evenodd" d="M24.027 20.23a3.801 3.801 0 01-3.797 3.797h-6.433A3.801 3.801 0 0110 20.23v-6.433A3.801 3.801 0 0113.797 10h6.433a3.801 3.801 0 013.797 3.797v6.433zm-7.014-7.052a3.84 3.84 0 00-3.835 3.835 3.84 3.84 0 003.835 3.836 3.84 3.84 0 003.836-3.836 3.84 3.84 0 00-3.836-3.835zm0 6.848A3.016 3.016 0 0114 17.013 3.016 3.016 0 0117.013 14a3.016 3.016 0 013.013 3.013 3.016 3.016 0 01-3.013 3.013zm2.794-7.077c0-.625.509-1.133 1.133-1.133.625 0 1.134.508 1.134 1.133s-.509 1.134-1.134 1.134a1.135 1.135 0 01-1.133-1.134z"/></symbol>
<symbol id="icon-instagram" viewBox="0 0 56 56"><path fill-rule="evenodd" clip-rule="evenodd" d="M37.5 32.492a5.014 5.014 0 01-5.008 5.008h-8.484A5.014 5.014 0 0119 32.492v-8.484A5.014 5.014 0 0124.008 19h8.484a5.014 5.014 0 015.008 5.008v8.484zm-9.25-9.3a5.064 5.064 0 00-5.058 5.058c0 2.79 2.269 5.059 5.058 5.059 2.79 0 5.059-2.27 5.059-5.059 0-2.79-2.27-5.058-5.059-5.058zm0 9.032a3.978 3.978 0 01-3.974-3.974 3.978 3.978 0 013.974-3.974 3.978 3.978 0 013.974 3.974 3.978 3.978 0 01-3.974 3.974zm3.685-9.334c0-.825.67-1.495 1.494-1.495.825 0 1.495.67 1.495 1.495 0 .824-.67 1.495-1.495 1.495-.824 0-1.494-.67-1.494-1.495z"/></symbol>
<symbol id="icon-like-down" viewBox="0 0 20 22"><use xlink:href="#def-like-down-a" transform="translate(-995 -522)"/></symbol>
<symbol id="icon-like-up" viewBox="0 0 20 22"><use xlink:href="#def-like-up-a" transform="translate(-934 -520)"/></symbol>
<symbol id="icon-like" viewBox="0 0 16 16"><use xlink:href="#def-like-a" transform="translate(-687 -8946)"/></symbol>
<symbol id="icon-link" viewBox="0 0 19 21"><use xlink:href="#def-link-a" transform="translate(-624 -1161)"/><use xlink:href="#def-link-b" transform="translate(-624 -1161)"/></symbol>
<symbol id="icon-mail" viewBox="0 0 16 12"><use xlink:href="#def-mail-a" transform="translate(-1042 -260)"/><use xlink:href="#def-mail-b" transform="translate(-1042 -260)"/></symbol>
<symbol id="icon-minus-zoom" viewBox="0 0 26 2"><path stroke-linecap="square" stroke-miterlimit="50" stroke-width="2" d="M1.5 1h23.19"/></symbol>
<symbol id="icon-outside" viewBox="0 0 21 21"><use xlink:href="#def-outside-a" transform="translate(-1185 -9211)"/></symbol>
<symbol id="icon-pencil" viewBox="0 0 20 21"><use xlink:href="#def-pencil-a" transform="translate(-1185 -9800)"/></symbol>
<symbol id="icon-phone" viewBox="0 0 21 22"><use xlink:href="#def-phone-a" transform="translate(-716 -19)"/></symbol>
<symbol id="icon-play-circle" viewBox="0 0 24 24"><path d="M12 24a12 12 0 110-24 12 12 0 010 24zM2 12a10 10 0 1020 0 10 10 0 00-20 0z"/><path d="M11.01 14.52c-.05.28.1.55.35.67.25.13.55.07.74-.14l2.85-2.94c.26-.27.27-.7.02-.98l-2.83-2.94a.69.69 0 00-.75-.13.67.67 0 00-.38.65z"/></symbol>
<symbol id="icon-play-reviews" viewBox="0 0 9 9"><path fill-rule="evenodd" clip-rule="evenodd" d="M8.074 4.507c0 .41-.745.741-.745.741l-5.854 2.91a.619.619 0 01-.563-.054.649.649 0 01-.294-.494V1.392A.586.586 0 01.895.853a.557.557 0 01.595.01l5.839 2.903s.745.331.745.741z"/></symbol>
<symbol id="icon-play" viewBox="0 0 17 17"><path d="M17 9.02c0 .88-1.6 1.59-1.6 1.59L2.84 16.86c-.4.16-.84.12-1.21-.12A1.4 1.4 0 011 15.68V2.33c-.03-.47.2-.92.6-1.16.39-.24.89-.23 1.27.02L15.4 7.43s1.6.71 1.6 1.59z"/></symbol>
<symbol id="icon-plus-zoom" viewBox="0 0 24 24"><path d="M23 13H13v10a1 1 0 01-1 1 1 1 0 01-1-1V13H1a1 1 0 01-1-1 1 1 0 011-1h10V1a1 1 0 011-1 1 1 0 011 1v10h10a1 1 0 011 1 1 1 0 01-1 1z"/></symbol>
<symbol id="icon-plus" viewBox="0 0 16 16"><use xlink:href="#def-plus-a" transform="translate(-1208 -4164)"/></symbol>
<symbol id="icon-search" viewBox="0 0 22 22"><use xlink:href="#def-search-a" transform="translate(-1083 -22)"/></symbol>
<symbol id="icon-shape" viewBox="0 0 48 38"><use xlink:href="#def-shape-a" transform="translate(-832 -13296)"/></symbol>
<symbol id="icon-share" viewBox="0 0 26 24"><path d="M21.03 8a3.95 3.95 0 01-3.02-1.41l-9.08 4.54c.12.55.13 1.11.02 1.66l9.06 4.61a3.98 3.98 0 11-.9 1.79l-9.05-4.61a4 4 0 11-.05-5.22l9.1-4.55A4 4 0 1121.03 8zm0 14a2 2 0 002-2 2 2 0 10-2 2zm-18-10a2 2 0 104 0 2 2 0 00-4 0zm16-8a2 2 0 104 0 2 2 0 00-4 0z"/></symbol>
<symbol id="icon-smile" viewBox="0 0 23 24"><path fill-rule="evenodd" clip-rule="evenodd" d="M11.5 23.278c-6.351 0-11.5-5.148-11.5-11.5C0 5.427 5.149.278 11.5.278S23 5.427 23 11.778c-.005 6.35-5.15 11.495-11.5 11.5zm0-21.083a9.583 9.583 0 00-9.583 9.583 9.584 9.584 0 1019.167 0A9.599 9.599 0 0011.5 2.195zm-6.613 12.87a7.38 7.38 0 006.613 4.38 7.333 7.333 0 006.613-4.38.957.957 0 00-.93-1.427.96.96 0 00-.796.603 5.277 5.277 0 01-9.774 0 .959.959 0 00-1.726.824zm10.447-3.287a1.917 1.917 0 110-3.833 1.917 1.917 0 010 3.833zM5.75 9.862a1.917 1.917 0 103.833 0 1.917 1.917 0 00-3.833 0z"/></symbol>
<symbol id="icon-socials" viewBox="0 0 40 40"><g fill-rule="evenodd"><circle cx="20" cy="20" r="20"/><path d="M20.021 31h-.485C13.717 31 9 26.08 9 20.009c0-6.07 4.717-10.991 10.536-10.991.309-.024.619-.024.928 0 5.819 0 10.536 4.92 10.536 10.99C31 26.08 26.283 31 20.464 31h-.443zm0-2.198h.316c4.655 0 8.43-3.937 8.43-8.793s-3.775-8.793-8.43-8.793h-.632c-4.655 0-8.43 3.937-8.43 8.793s3.775 8.793 8.43 8.793h.316z"/><path d="M19.382 31C13.648 31 9 26.08 9 20.009c0-6.07 4.648-10.991 10.382-10.991.305-.024.61-.024.914 0 .252.02.488.138.665.33 5.385 5.95 5.385 15.338 0 21.29a.998.998 0 01-1.142.252.992.992 0 01-.437.11zm.322-19.784h-.238c-4.588 0-8.306 3.937-8.306 8.793s3.718 8.793 8.306 8.793a.981.981 0 01.26 0c4.23-5.007 4.23-12.58 0-17.586h-.022z" clip-rule="evenodd"/><path d="M19.91 30.967a1.101 1.101 0 01-.419-.077 1.101 1.101 0 01-1.21-.253c-5.708-5.95-5.708-15.337 0-21.288a1.1 1.1 0 01.704-.33 6.664 6.664 0 011.012 0C26.074 9.02 31 13.94 31 20.01S26.074 31 19.997 31l-.088-.033zm-.353-19.783a13.177 13.177 0 000 17.585c.091-.012.184-.012.275 0 4.861 0 8.802-3.936 8.802-8.792s-3.94-8.793-8.802-8.793h-.275z" clip-rule="evenodd"/><path d="M27.944 17H11.056C10.473 17 10 16.552 10 16s.473-1 1.056-1h16.888c.583 0 1.056.448 1.056 1s-.473 1-1.056 1zM27.944 25H11.056C10.473 25 10 24.552 10 24s.473-1 1.056-1h16.888c.583 0 1.056.448 1.056 1s-.473 1-1.056 1z"/></g></symbol>
<symbol id="icon-strawberry" viewBox="0 0 49 48"><use xlink:href="#def-strawberry-a" transform="translate(-832 -13406)"/></symbol>
<symbol id="icon-telegram" viewBox="0 0 29 24"><use xlink:href="#def-telegram-a" transform="translate(-795 -271)"/></symbol>
<symbol id="icon-telegram2-mob" viewBox="0 0 34 34"><path d="M14.95 19.329l-.25 3.528c.358 0 .514-.154.7-.34l1.683-1.607 3.486 2.553c.64.356 1.09.168 1.263-.588L24.12 12.15c.204-.946-.341-1.316-.964-1.084l-13.452 5.15c-.918.357-.904.869-.156 1.1l3.44 1.07 7.988-4.998c.375-.25.717-.112.436.137L14.95 19.33z"/></symbol>
<symbol id="icon-telegram2" viewBox="0 0 56 56"><path d="M25.848 30.985l-.331 4.653c.473 0 .678-.203.924-.447l2.22-2.121 4.598 3.367c.843.47 1.437.223 1.665-.776l3.018-14.143.001-.001c.268-1.247-.45-1.734-1.272-1.428L18.929 26.88c-1.211.47-1.193 1.145-.206 1.451l4.536 1.411 10.536-6.593c.495-.328.946-.146.575.182l-8.522 7.653z"/></symbol>
<symbol id="icon-tm" viewBox="0 0 26 22"><use xlink:href="#def-tm-a" transform="translate(-1399 -334)"/></symbol>
<symbol id="icon-trash" viewBox="0 0 20 21"><use xlink:href="#def-trash-a" transform="translate(-1156 -9799)"/></symbol>
<symbol id="icon-triangle" viewBox="0 0 16 8"><use xlink:href="#def-triangle-a" transform="translate(-1237 -6883)"/></symbol>
<symbol id="icon-tw" viewBox="0 0 18 15"><path d="M18 1.75c-.66.3-1.37.5-2.12.59A3.7 3.7 0 0017.5.27c-.71.43-1.5.74-2.34.91a3.68 3.68 0 00-6.39 2.56c0 .3.03.58.09.85A10.45 10.45 0 011.25.69 3.75 3.75 0 002.4 5.68a3.67 3.67 0 01-1.68-.47v.05a3.75 3.75 0 002.97 3.67 3.51 3.51 0 01-1.67.06 3.7 3.7 0 003.45 2.6A7.33 7.33 0 010 13.14a10.37 10.37 0 005.66 1.68c6.79 0 10.51-5.7 10.51-10.64l-.01-.49A7.35 7.35 0 0018 1.76z"/></symbol>
<symbol id="icon-twitter-mob" viewBox="0 0 34 34"><path d="M24.406 12.386a6.16 6.16 0 01-1.702.466 2.937 2.937 0 001.3-1.632c-.572.34-1.202.58-1.873.715a2.952 2.952 0 00-5.109 2.02c0 .233.02.458.068.672a8.36 8.36 0 01-6.087-3.089 2.957 2.957 0 00.908 3.947 2.917 2.917 0 01-1.335-.363v.032a2.967 2.967 0 002.366 2.902c-.24.066-.502.097-.774.097-.189 0-.38-.01-.56-.05a2.981 2.981 0 002.76 2.057 5.934 5.934 0 01-3.661 1.26c-.242 0-.475-.011-.707-.04a8.314 8.314 0 004.53 1.325c5.435 0 8.406-4.502 8.406-8.404 0-.13-.004-.257-.01-.382a5.89 5.89 0 001.48-1.533z"/></symbol>
<symbol id="icon-twitter" viewBox="0 0 56 56"><path d="M38 21.828c-.707.31-1.46.515-2.244.615a3.874 3.874 0 001.713-2.153 7.783 7.783 0 01-2.47.943 3.894 3.894 0 00-6.738 2.664c0 .308.026.605.09.887a11.025 11.025 0 01-8.028-4.074 3.922 3.922 0 00-.533 1.969 3.9 3.9 0 001.73 3.237 3.847 3.847 0 01-1.76-.48v.043a3.913 3.913 0 003.12 3.827 3.887 3.887 0 01-1.02.129c-.25 0-.502-.015-.738-.067.505 1.543 1.937 2.677 3.64 2.714a7.827 7.827 0 01-4.83 1.66c-.32 0-.626-.013-.932-.052a10.966 10.966 0 005.976 1.748c7.167 0 11.086-5.938 11.086-11.085a9.95 9.95 0 00-.014-.503A7.77 7.77 0 0038 21.828z"/></symbol>
<symbol id="icon-user-circle" viewBox="0 0 24 24"><use xlink:href="#def-user-circle-a" transform="translate(-1244 -22)"/></symbol>
<symbol id="icon-vb" viewBox="0 0 25 27"><use xlink:href="#def-vb-a" transform="translate(-931 -270)"/></symbol>
<symbol id="icon-view-list" viewBox="0 0 15 15"><path d="M0 6V0h15v6zm0 9V9h15v6z"/></symbol>
<symbol id="icon-view-tile" viewBox="0 0 15 15"><path d="M0 6V0h6v6zm9 0V0h6v6zm0 9V9h6v6zm-9 0V9h6v6z"/></symbol>
<symbol id="icon-vk" viewBox="0 0 22 14"><path d="M10.61 13.8h1.3s.39-.04.59-.27c.19-.2.18-.59.18-.59s-.02-1.8.78-2.07c.8-.26 1.82 1.75 2.91 2.52.81.58 1.44.46 1.44.46l2.89-.05s1.52-.09.8-1.33c-.06-.1-.42-.92-2.15-2.59-1.82-1.75-1.58-1.47.61-4.5 1.33-1.84 1.87-2.97 1.7-3.45-.16-.46-1.14-.34-1.14-.34l-3.26.02s-.24-.03-.42.08-.29.36-.29.36-.52 1.43-1.2 2.64c-1.46 2.57-2.04 2.7-2.27 2.54-.56-.37-.42-1.49-.42-2.28 0-2.49.36-3.52-.71-3.79A5.26 5.26 0 0010.43 1c-1.16-.01-2.15.01-2.7.29-.38.19-.66.61-.49.63.22.03.71.14.97.51.33.47.32 1.53.32 1.53s.19 2.92-.45 3.29c-.44.25-1.04-.26-2.34-2.59-.66-1.19-1.16-2.5-1.16-2.5s-.1-.25-.27-.38c-.21-.16-.5-.21-.5-.21l-3.1.02s-.47.01-.64.22c-.15.19-.01.58-.01.58s2.43 5.89 5.17 8.87c2.52 2.72 5.38 2.54 5.38 2.54z"/></symbol>
<symbol id="icon-vk2-mob" viewBox="0 0 34 34"><path fill-rule="evenodd" clip-rule="evenodd" d="M16.79 21.913h.947a.77.77 0 00.436-.201.795.795 0 00.13-.459s-.016-1.399.573-1.608c.588-.209 1.336 1.351 2.13 1.954.297.259.68.383 1.063.346l2.123-.032s1.116-.073.589-1.03a7.642 7.642 0 00-1.582-2.002c-1.337-1.35-1.153-1.134.451-3.473.978-1.424 1.367-2.3 1.245-2.67a.866.866 0 00-.832-.257l-2.4.016a.463.463 0 00-.305.056.702.702 0 00-.214.282 15.134 15.134 0 01-.886 2.042c-1.062 1.978-1.49 2.082-1.665 1.962-.405-.29-.306-1.15-.306-1.77 0-1.913.268-2.717-.511-2.926a4.053 4.053 0 00-1.123-.12 4.804 4.804 0 00-1.987.225c-.275.144-.48.466-.351.49.273.03.524.167.703.386.165.37.246.774.237 1.182 0 0 .145 2.26-.329 2.54-.32.194-.764-.2-1.719-1.993a17.581 17.581 0 01-.848-1.938.803.803 0 00-.198-.29.84.84 0 00-.367-.16l-2.276.016a.723.723 0 00-.466.169.581.581 0 00-.016.442s1.788 4.559 3.805 6.859c.99 1.217 2.427 1.931 3.95 1.962z"/></symbol>
<symbol id="icon-vk2" viewBox="0 0 56 56"><path fill-rule="evenodd" clip-rule="evenodd" d="M28.274 34.074h1.25c.213-.024.413-.117.574-.265.117-.177.177-.39.172-.605 0 0-.02-1.845.755-2.12.776-.276 1.763 1.78 2.811 2.576.391.342.895.506 1.4.456l2.802-.042s1.47-.096.775-1.358a10.079 10.079 0 00-2.085-2.64c-1.763-1.782-1.522-1.495.594-4.582 1.29-1.877 1.804-3.033 1.642-3.52a1.143 1.143 0 00-1.098-.34l-3.163.021a.61.61 0 00-.403.075.925.925 0 00-.282.37 19.972 19.972 0 01-1.17 2.694c-1.4 2.61-1.964 2.747-2.196 2.588-.534-.382-.403-1.516-.403-2.333 0-2.524.353-3.584-.675-3.86a5.345 5.345 0 00-1.48-.16 6.336 6.336 0 00-2.62.298c-.363.19-.635.615-.464.646.36.039.691.221.927.51.218.487.325 1.02.312 1.558 0 0 .192 2.98-.433 3.352-.423.254-1.007-.265-2.267-2.63a23.184 23.184 0 01-1.118-2.556 1.06 1.06 0 00-.262-.382 1.109 1.109 0 00-.484-.212l-3.002.021a.953.953 0 00-.615.223.767.767 0 00-.02.583s2.358 6.013 5.018 9.046c1.305 1.606 3.2 2.548 5.209 2.588z"/></symbol>
<symbol id="icon-yandex" viewBox="0 0 5 11"><path d="M4.847 0H3.259C1.7 0 .376 1.169.376 3.438c0 1.36.64 2.364 1.783 2.86L.028 10.092c-.07.123 0 .22.111.22h.99c.083 0 .139-.028.166-.097L3.231 6.49h.697v3.726c0 .041.041.097.097.097h.864c.083 0 .111-.042.111-.11V.138C5 .04 4.944 0 4.847 0zm-.92 5.61h-.584c-.92 0-1.81-.66-1.81-2.31 0-1.719.835-2.42 1.684-2.42h.71v4.73z" fill-rule="nonzero"/></symbol>
<symbol id="icon-ynadex" viewBox="0 0 5 10"><use xlink:href="#def-ynadex-a" transform="translate(-468 -10321)"/></symbol>
<symbol id="icon-ytube" viewBox="0 0 27 20"><use xlink:href="#def-ytube-a" transform="translate(-1332 -335)"/></symbol>
</svg>
<div class="header-banner topBanner" data-type="header" style="display: block; position: sticky; top: 0; z-index: 999;">
<a data-source="203703" data-banner="226288" class="universal-notice js-universal-notice-notice universal-notice--webp universal-notice--bitrix universal-notice--active" href="https://skillbox.ru/sale/main/?utm_source=media&utm_medium=banners&utm_campaign=all_all_media_banners_banners_header_all_all_skillbox" target="_blank" style="--banner-bg: #5927E9;--banner-color: #fff;--button-font-color: #000000;--button-bg-color: #FFFFFF;--banner-img-left: url(https://cdn.skillbox.pro/mainsite/banners/promo_picture_left/602754/f9ac17dd-a1d4-46c6-aa14-4f7b949defd1.png);--banner-img-left-webp: url(https://cdn.skillbox.pro/mainsite/banners/promo_picture_left/602754/f9ac17dd-a1d4-46c6-aa14-4f7b949defd1.webp);--banner-img-center: url(https://cdn.skillbox.pro/mainsite/banners/promo_picture_center/602507/232fc4a5-b130-4af2-a629-bdb293a4dd2e.png);--banner-img-center-webp: url(https://cdn.skillbox.pro/mainsite/banners/promo_picture_center/602507/232fc4a5-b130-4af2-a629-bdb293a4dd2e.webp);--banner-img-center-mobile: url(https://cdn.skillbox.pro/mainsite/banners/promo_picture_center/602507/232fc4a5-b130-4af2-a629-bdb293a4dd2e.png);--banner-img-center-mobile-webp: url(https://cdn.skillbox.pro/mainsite/banners/promo_picture_center/602507/232fc4a5-b130-4af2-a629-bdb293a4dd2e.webp);--banner-img-right: url(https://cdn.skillbox.pro/mainsite/banners/promo_picture_right/602755/ad7a7fe5-b8d3-47a3-885b-51a7971c12a9.png);--banner-img-right-webp: url(https://cdn.skillbox.pro/mainsite/banners/promo_picture_right/602755/ad7a7fe5-b8d3-47a3-885b-51a7971c12a9.webp);">
<span class="universal-notice__wrapper">
<b class="universal-notice__title">
Скидка до 55% и 3 курса в подарок
</b>
<span class="universal-timer js-universal-notice-timer js-universal-notice-active">
<span class="universal-timer__days js-universal-notice-days">2 дня</span>
<span class="js-universal-notice-hours">13</span>
:<span class="js-universal-notice-minutes">30</span>
:<span class="js-universal-notice-seconds">09</span>
</span>
<span class="universal-notice__button">Выбрать курс</span>
</span>
</a><script>
document.addEventListener('DOMContentLoaded', () => {
// Установите конечную дату
const deadline = new Date();
deadline.setDate(5);
deadline.setHours(0, 0, 0);
// Найдите элементы DOM
var timer = document.querySelector('.universal-timer');
const elDays = timer.querySelector('.js-universal-notice-days');
const elHours = timer.querySelector('.js-universal-notice-hours');
const elMinutes = timer.querySelector('.js-universal-notice-minutes');
const elSeconds = timer.querySelector('.js-universal-notice-seconds');
// Функция обновления таймера
const updateTimer = () => {
const now = new Date();
let diff = Math.max(0, deadline - now);
if (diff === 0) {
let lastDayOfMonth = new Date(now.getFullYear(), now.getMonth() + 1, 0);
let lastDay = lastDayOfMonth.getDate();
if (lastDay - now.getDate() < 4) {
deadline.setMonth(deadline.getMonth() + 1, 1);
} else {
deadline.setDate(deadline.getDate() + 4);
}
diff = Math.max(0, deadline - now);
}
// Time calculations for days, hours, minutes and seconds
var days = Math.floor(diff / (1000 * 60 * 60 * 24));
var hours = Math.floor((diff % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)).toString();
var minutes = Math.floor((diff % (1000 * 60 * 60)) / (1000 * 60)).toString();
var seconds = Math.floor((diff % (1000 * 60)) / 1000).toString();
if (timer) {
let dayTitles = ['день', 'дня', 'дней'];
let daySuffix = dayTitles[(days % 100 > 4 && days % 100 < 20) ? 2 : [2, 0, 1, 1, 1, 2][days % 10 < 5 ? days % 10 : 5]]
elDays.innerHTML = days + ' ' + daySuffix;
elHours.innerHTML = hours.padStart(2, '0');
elMinutes.innerHTML = minutes.padStart(2, '0');
elSeconds.innerHTML = seconds.padStart(2, '0');
}
};
updateTimer();
const timerId = setInterval(updateTimer, 1000);
});
</script>
<style>@font-face{font-display:swap;font-family:Graphik;font-weight:500;font-style:normal;src:url(https://248006.selcdn.ru/Shared/fonts/GraphikLCTT-VA-Medium.woff2) format("woff2")}@font-face{font-display:swap;font-family:Graphik;font-weight:700;font-style:normal;src:url(https://248006.selcdn.ru/Shared/fonts/GraphikLCTT-VA-Bold.woff2) format("woff2")}.universal-notice{position:sticky;z-index:5;top:0;box-sizing:border-box;text-decoration:none;display:none;justify-content:space-between;overflow:hidden;color:var(--banner-color);background-color:var(--banner-bg);font-family:Graphik,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:opacity .25s ease-in-out}.universal-notice--active{display:flex}.universal-notice--bitrix{z-index:1000}.universal-notice *,.universal-notice ::after,.universal-notice ::before{box-sizing:inherit}.universal-notice::after,.universal-notice::before{display:none;width:194px;height:56px;content:"";background-size:194px 56px;background-repeat:no-repeat}.universal-notice--no-webp::before{background-image:var(--banner-img-left)}.universal-notice--no-webp::after{background-image:var(--banner-img-right)}.universal-notice--webp::before{background-image:var(--banner-img-left-webp)}.universal-notice--webp::after{background-image:var(--banner-img-right-webp)}.universal-notice--new-design{position:static;margin:4px;border-radius:16px}.universal-notice--new-design::after,.universal-notice--new-design::before{width:166px;height:48px;background-size:166px 48px}.universal-notice__wrapper{display:grid;grid-template-columns:1fr auto;align-items:center;grid-gap:12px;padding:12px;width:100%}.universal-notice--new-design .universal-notice__wrapper::after{height:48px}.universal-notice__title{font-weight:500;font-size:15px;line-height:16px}.universal-notice--new-design .universal-notice__title{font-size:14px;line-height:15px}.universal-timer{display:none;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-weight:500;font-size:24px;line-height:26px}.universal-notice--new-design .universal-timer{font-size:22px;line-height:24px}.universal-timer__days{margin-right:8px}.universal-notice__button{grid-column:2/3;padding:6px 16px;border-radius:6px;color:var(--button-font-color);background-color:var(--button-bg-color);font-weight:500;font-size:14px;line-height:20px}.universal-notice-sticky{position:fixed;z-index:5;top:0;left:0;width:100%;padding:11px 8px;color:var(--banner-color);background-color:var(--banner-bg);text-align:center;transition:transform .3s ease-in-out;will-change:transform;transform:translateY(-200%)}.universal-notice-sticky--show{transform:translateY(0)}@media (min-width:360px) and (max-width:0px){.universal-notice__wrapper{padding:0 12px;grid-template-columns:1fr 56px auto}.universal-notice__wrapper::after{grid-column:2/3;grid-row:1/2;width:100%;height:56px;background-size:cover;background-repeat:no-repeat;content:""}.universal-notice--new-design .universal-notice__wrapper{grid-template-columns:1fr 48px auto}.universal-notice--no-webp .universal-notice__wrapper::after{background-image:var(--banner-img-center-mobile)}.universal-notice--webp .universal-notice__wrapper::after{background-image:var(--banner-img-center-mobile-webp)}.universal-notice__button{grid-column:3/4}}@media (min-width:360px){.universal-notice__wrapper{padding:0 12px;grid-template-columns:1fr 56px auto}.universal-notice__wrapper::after{grid-column:2/3;grid-row:1/2;width:100%;height:56px;background-size:cover;background-repeat:no-repeat;content:""}.universal-notice--new-design .universal-notice__wrapper{grid-template-columns:1fr 48px auto}.universal-notice--no-webp .universal-notice__wrapper::after{background-image:var(--banner-img-center-mobile)}.universal-notice--webp .universal-notice__wrapper::after{background-image:var(--banner-img-center-mobile-webp)}.universal-notice__button{grid-column:3/4}}@media (min-width:768px){.universal-notice::before{background-position:right center;flex-shrink:0;display:block}.universal-notice--no-webp .universal-notice__wrapper::after{background-image:var(--banner-img-center)}.universal-notice--webp .universal-notice__wrapper::after{background-image:var(--banner-img-center-webp)}}@media (min-width:768px) and (max-width:0px){.universal-notice::before{background-position:right center;flex-shrink:0;display:block}.universal-notice--no-webp .universal-notice__wrapper::after{background-image:var(--banner-img-center)}.universal-notice--webp .universal-notice__wrapper::after{background-image:var(--banner-img-center-webp)}}@media (min-width:1024px){.universal-notice::after,.universal-notice::before{width:250px;height:72px;background-size:250px 72px}.universal-notice--new-design{height:64px;border-radius:32px}.universal-notice--new-design::after,.universal-notice--new-design::before{width:226px;height:64px;background-size:226px 64px}.universal-notice__wrapper{grid-template-columns:1fr 72px auto;grid-gap:24px;padding-right:16px;padding-left:24px}.universal-notice__wrapper::after{height:72px}.universal-notice--new-design .universal-notice__wrapper{grid-template-columns:1fr 64px auto}.universal-notice--new-design .universal-notice__wrapper::after{height:64px}.universal-notice__title{font-size:24px;line-height:26px}.universal-notice--new-design .universal-notice__title{font-size:22px;line-height:24px}.universal-notice__button{padding:10px 24px;border-radius:8px}.universal-notice-sticky{padding:14px 24px}}@media (min-width:1024px) and (max-width:0px){.universal-notice::after,.universal-notice::before{width:250px;height:72px;background-size:250px 72px}.universal-notice--new-design{height:64px;border-radius:32px}.universal-notice--new-design::after,.universal-notice--new-design::before{width:226px;height:64px;background-size:226px 64px}.universal-notice__wrapper{grid-template-columns:1fr 72px auto;grid-gap:24px;padding-right:16px;padding-left:24px}.universal-notice__wrapper::after{height:72px}.universal-notice--new-design .universal-notice__wrapper{grid-template-columns:1fr 64px auto}.universal-notice--new-design .universal-notice__wrapper::after{height:64px}.universal-notice__title{font-size:24px;line-height:26px}.universal-notice--new-design .universal-notice__title{font-size:22px;line-height:24px}.universal-notice__button{padding:10px 24px;border-radius:8px}.universal-notice-sticky{padding:14px 24px}}@media (min-width:1280px){.universal-notice::before{flex-shrink:1}.universal-notice::after{background-position:left center;display:block}.universal-notice__wrapper{grid-template-columns:1fr 72px minmax(202px,auto) auto;min-width:940px;max-width:1020px;padding-right:24px}.universal-notice--new-design .universal-notice__wrapper{grid-template-columns:1fr 64px minmax(202px,auto) auto}.universal-timer.js-universal-notice-active{display:flex}.universal-notice__timer-nuxt{display:flex}.universal-notice__button{grid-column:4/5}}@media (min-width:1280px) and (max-width:0px){.universal-notice::before{flex-shrink:1}.universal-notice::after{background-position:left center;display:block}.universal-notice__wrapper{grid-template-columns:1fr 72px minmax(202px,auto) auto;min-width:940px;max-width:1020px;padding-right:24px}.universal-notice--new-design .universal-notice__wrapper{grid-template-columns:1fr 64px minmax(202px,auto) auto}.universal-timer.js-universal-notice-active{display:flex}.universal-notice__timer-nuxt{display:flex}.universal-notice__button{grid-column:4/5}}@media (min-width:1400px) and (max-width:0px){.universal-notice::before{flex-shrink:0}.universal-notice::after{flex-shrink:0}}@media (min-width:1400px){.universal-notice::before{flex-shrink:0}.universal-notice::after{flex-shrink:0}}</style> </div>
<script>
document.addEventListener("DOMContentLoaded", function(event) {
window.TopBanner = true;
});
$(document).ready(function () {
$.ajax({
url: '/local/ajax/advert.php',
type: 'POST',
data: {
'type': 'top-banner-show',
'id': 226288,
'section_id': 0,
},
success: function (result) {
}
});
});
$(document).on('click', '.header-banner', function () {
$.ajax({
url: '/local/ajax/advert.php',
type: 'POST',
data: {
'type': 'top-banner-click',
'id': 226288,
'section_id': 0,
},
success: function (result) {
}
});
var page = window.location;
var $article = $('section[data-article-text]');
var pageId = $article.data('articleid');
if(pageId === undefined)
{
pageId = 0;
}
window.dataLayer.push({
'event': 'go_to_course',
'courseID': 226288,
'page': page,
'pageID': pageId
});
});
</script>
<header class="header">
<div id="menu" class="header__wrapper container">
<div class="header__logo link-active">
<a href="/media/" class="header__media-main-link">
<img src="/local/templates/media/images/logo/skillbox-media.svg" alt="Skillbox"/>
</a>
<a href="/media/code/" class="header__media-category-link">
<span class="header__media-category js-category hidden"></span>
</a>
</div>
<a href="/media/about-media/" v-if="!isMobile" rel="nofollow" class="menu-nav__link menu-nav__link--about" target="_blank" style="display: none">
Про медиа
</a>
<button v-if="!isMobile" v-show="!isMobile" rel="nofollow" class="toggle-menu header__toggle toggle-menu--course"
@click="openCourseMenu()"
:class="{ 'toggle-menu--active': isOpenCourseMenu }"
style="display: none">
Онлайн-курсы
<svg width="13" height="12" viewBox="0 0 13 12" fill="none" xmlns="http://www.w3.org/2000/svg"
:class="{
'animated-chevron--default': isOpenCourseMenu,
'animated-chevron--active animated-chevron--default': ! isOpenCourseMenu
}"
class="animated-chevron toggle-menu__arrow select-arrow select-arrow--small">
<line x1="6.48415" y1="5.92242" x2="11.4909" y2="10.9291" stroke="currentColor" stroke-width="1.78"
class=" animated-chevron__line animated-chevron__line1 animated-chevron__line1--default"></line>
<line x1="6.3701" y1="5.9224" x2="11.3768" y2="0.915678" stroke="currentColor" stroke-width="1.78"
class="animated-chevron__line"></line>
<line x1="1.36337" y1="10.9291" x2="6.3701" y2="5.9224" stroke="currentColor" stroke-width="1.78"
class="animated-chevron__line animated-chevron__line2 animated-chevron__line2--default"></line>
<line x1="1.47743" y1="0.915681" x2="6.48415" y2="5.9224" stroke="currentColor" stroke-width="1.78"
class="animated-chevron__line"></line>
</svg>
</button>
<a href="https://skillbox.ru/?utm_source=media&utm_medium=button&utm_campaign=button_main_skillbox&utm_term=mainskillbox" v-if="!isMobile" v-show="!isMobile" rel="nofollow" class="menu-nav__link menu-nav__link-ml0 menu-nav__link--main" target="_blank" style="display: none">
Главная Skillbox
<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M3.9375 10.0618L9.9161 4.08203" stroke="black" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M3.93811 3.93665H10.0631V10.0616" stroke="black" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</a>
<div v-if="isOpenCourseMenu && !isMobile" class="menu-block menu-block--desktop" @click="closeCourseMenu($event)" style="display: none">
<div class="menu-block__wrapper menu-block__wrapper--desktop">
<div class="menu-block__content vue-container">
<span class="menu-block__title">
Направления обучения
</span>
<ul class="menu-directions menu-block__direction">
<li class="menu-directions__item">
<a href="https://skillbox.ru/courses/?utm_source=media&utm_medium=button&utm_campaign=button_courses_all&utm_term=button" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="All directions">
Все направления
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/code/?utm_source=media&utm_medium=button&utm_campaign=button_courses_code&utm_term=button" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="Code">
Программирование
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/design/?utm_source=media&utm_medium=button&utm_campaign=button_courses_design&utm_term=button" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="Design">
Дизайн
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/management?utm_source=media&utm_medium=button&utm_campaign=button_courses_management&utm_term=button" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="Management">
Управление
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/marketing?utm_source=media&utm_medium=button&utm_campaign=button_courses_marketing&utm_term=button" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="Marketing">
Маркетинг
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/games?utm_source=media&utm_medium=button&utm_campaign=button_courses_games&utm_term=button" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="GameDev">
Игры
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/multimedia?utm_source=media&utm_medium=button&utm_campaign=button_courses_multimedia&utm_term=button" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="">
Кино и Музыка
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/psychology?utm_source=media&utm_medium=button&utm_campaign=button_courses_psychology&utm_term=button" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="Development">
Психология
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/health?utm_source=media&utm_medium=button&utm_campaign=button_courses_health&utm_term=button" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="Development">
Здоровье
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/spo/?utm_source=media&utm_medium=button&utm_campaign=button_courses_spo&utm_term=button" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="Development">
Цифровой колледж
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/general-development/?utm_source=media&utm_medium=button&utm_campaign=button_courses_general-development&utm_term=button" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="Education">
Общее развитие
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/engineering/?utm_source=media&utm_medium=button&utm_campaign=button_courses_engineering&utm_term=button" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="engineering">
Инженерия
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/english/?utm_source=media&utm_medium=button&utm_campaign=button_courses_english&utm_term=button" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="english">
Английский язык
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/other/?utm_source=media&utm_medium=button&utm_campaign=button_courses_other&utm_term=button" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="Other">
Другое
</a>
</li>
</ul>
</div>
</div>
</div>
<div v-show="isOpenMenu" class="menu-block" @click="closeMenu($event)" style="display: none">
<div class="menu-block__wrapper">
<div class="menu-block__content vue-container">
<h2 class="menu-block__header">Редакции</h2>
<div class="tab-nav" data-tab-parent="" data-action="index">
<div class="tab-nav__item">
<a class="tab-active" data-tab-name="media_nav" data-section-id="0" data-code="All directions" href="/media/">
<img src="/local/templates/media/images/common/menu-icon-mobile-1.png" alt=""/>
Все
</a>
</div>
<div class="tab-nav__item tab-nav__item--custom tab-nav__item--spec"
data-nav-parent-item>
<a
data-tab-name="media_nav"
data-code=""
href="/media/topic/history/">
<img src="/local/templates/media/images/common/menu-icon-mobile-19.png"
alt=""/>
Истории</a>
</div>
<div class="tab-nav__item">
<a class=""
data-tab-name="media_nav"
data-section-id="8"
data-code="Design"
href="/media/design/">
<img src="/local/templates/media/images/common/menu-icon-mobile-2.png" alt=""/>
Дизайн</a>
</div>
<div class="tab-nav__item">
<a class=""
data-tab-name="media_nav"
data-section-id="10"
data-code="Code"
href="/media/code/">
<img src="/local/templates/media/images/common/menu-icon-mobile-3.png" alt=""/>
Код</a>
</div>
<div class="tab-nav__item">
<a class=""
data-tab-name="media_nav"
data-section-id="18"
data-code="GameDev"
href="/media/gamedev/">
<img src="/local/templates/media/images/common/menu-icon-mobile-4.png" alt=""/>
Геймдев</a>
</div>
<div class="tab-nav__item">
<a class=""
data-tab-name="media_nav"
data-section-id="21"
data-code="Business"
href="/media/business/">
<img src="/local/templates/media/images/common/menu-icon-mobile-9.png" alt=""/>
Бизнес</a>
</div>
<div class="tab-nav__item">
<a class=""
data-tab-name="media_nav"
data-section-id="9"
data-code="Marketing"
href="/media/marketing/">
<img src="/local/templates/media/images/common/menu-icon-mobile-5.png" alt=""/>
Маркетинг</a>
</div>
<div class="tab-nav__item">
<a class=""
data-tab-name="media_nav"
data-section-id="11"
data-code=""
href="/media/management/">
<img src="/local/templates/media/images/common/menu-icon-mobile-6.png" alt=""/>
Управление</a>
</div>
<div class="tab-nav__item">
<a class=""
data-tab-name="media_nav"
data-section-id="29"
data-code=""
href="/media/cinemusic/">
<img src="/local/templates/media/images/common/menu-icon-mobile-22.png" alt=""/>
Кино</a>
</div>
<div class="tab-nav__item">
<a class=""
data-tab-name="media_nav"
data-section-id="36"
data-code=""
href="/media/music/">
<img src="/local/templates/media/images/common/menu-icon-mobile-23.png" alt=""/>
Музыка</a>
</div>
<div class="tab-nav__item">
<a class=""
data-tab-name="media_nav"
data-section-id="34"
data-code=""
href="/media/photo/">
<img src="/local/templates/media/images/common/menu-icon-mobile-20.png" alt=""/>
Проектная фотография</a>
</div>
<div class="tab-nav__item">
<a class=""
data-tab-name="media_nav"
data-section-id="17"
data-code="Development"
href="/media/growth/">
<img src="/local/templates/media/images/common/menu-icon-mobile-7.png" alt=""/>
Развитие</a>
</div>
<div class="tab-nav__item">
<a class=""
data-tab-name="media_nav"
data-section-id="33"
data-code=""
href="/media/health/">
<img src="/local/templates/media/images/common/menu-icon-mobile-16.png" alt=""/>
Здоровье</a>
</div>
<div class="tab-nav__item">
<a class=""
data-tab-name="media_nav"
data-section-id="32"
data-code=""
href="/media/money/">
<img src="/local/templates/media/images/common/menu-icon-mobile-17.png" alt=""/>
Деньги</a>
</div>
<div class="tab-nav__item">
<a class=""
data-tab-name="media_nav"
data-section-id="22"
data-code="Education"
href="/media/education/">
<img src="/local/templates/media/images/common/menu-icon-mobile-8.png" alt=""/>
Образование</a>
</div>
<div class="tab-nav__item">
<a class=""
data-tab-name="media_nav"
data-section-id="31"
data-code=""
href="/media/edtech/">
<img src="/local/templates/media/images/common/menu-icon-mobile-11.png" alt=""/>
EdTech</a>
</div>
<div class="tab-nav__item">
<a class=""
data-tab-name="media_nav"
data-section-id="30"
data-code=""
href="/media/corptrain/">
<img src="/local/templates/media/images/common/menu-icon-mobile-10.png" alt=""/>
Корп. обучение</a>
</div>
<div class="tab-nav__item">
<a class=""
data-tab-name="media_nav"
data-section-id="35"
data-code=""
href="/media/skillbox-blog/">
<img src="/local/templates/media/images/common/menu-icon-mobile-21.png" alt=""/>
Блог Skillbox</a>
</div>
<div class="tab-nav__item tab-nav__item--custom tab-nav__item--spec"
data-nav-parent-item>
<a
data-tab-name="media_nav"
data-code=""
href="https://skillbox.ru/media/glossary/">
<img src="/local/templates/media/images/common/menu-icon-mobile-18.png"
alt=""/>
Глоссарий</a>
</div>
<div class="tab-nav__item tab-nav__item--custom tab-nav__item--spec"
data-nav-parent-item>
<a
data-tab-name="media_nav"
data-code=""
href="/media/topic/specials/">
<img src="/local/templates/media/images/common/menu-icon-mobile-13.png"
alt=""/>
Спецпроекты</a>
</div>
<div class="tab-nav__item tab-nav__item--custom tab-nav__item--spec"
data-nav-parent-item>
<a
data-tab-name="media_nav"
data-code=""
href="https://skillbox.ru/course/career-guide-free/">
<img src="/local/templates/media/images/common/menu-icon-mobile-15.png"
alt=""/>
Профориентация</a>
</div>
</div>
<h2 class="menu-block__header">Онлайн-курсы</h2>
<ul class="menu-directions menu-block__direction">
<li class="menu-directions__item">
<a href="https://skillbox.ru/courses/" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="All directions">
Все направления
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/code/" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="Code">
Программирование
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/design/" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="Design">
Дизайн
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/marketing/" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="Marketing">
Маркетинг
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/management/" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="Management">
Управление
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/games/" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="GameDev">
Игры
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/multimedia/" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="">
Мультимедиа
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/psychology/" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="Development">
Психология
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/general-development/" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="Education">
Общее развитие
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/engineering/" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="engineering">
Инженерия
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/english/" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="english">
Английский язык
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/other/" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="Other">
Другое
</a>
</li>
</ul>
<a href="/media/about-media/" rel="nofollow" class="menu-nav__link">
Про медиа
</a>
<a href="https://skillbox.ru/" rel="nofollow" class="menu-nav__link">
Главная Skillbox
<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M3.9375 10.0618L9.9161 4.08203" stroke="black" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M3.93811 3.93665H10.0631V10.0616" stroke="black" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</a>
</div>
</div>
</div>
<button v-if="isMobile" class="menu-toggle"
@click="openMenu()"
:class="{ 'menu-toggle--opened': isOpenMenu }" style="opacity: 0">
<span v-if="isOpenMenu" class="menu-toggle__line"></span>
<svg v-if="!isOpenMenu" width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M24 5.5H0V4H24V5.5ZM24 11.5H0V13H24V11.5ZM24 19H0V20.5H24V19Z" fill="black"/>
</svg>
</button>
</div>
<script>
BX.Vue.create({
el: '#menu',
data: {
isOpenMenu: false,
isOpenCourseMenu: false,
isMobile: false,
isSubOpen: false,
display: 'none'
},
computed: {
isMobile() {
const w = window.innerWidth
|| document.documentElement.clientWidth
|| document.body.clientWidth;
return w < 1024;
}
},
methods: {
openMenu() {
this.isOpenMenu = !this.isOpenMenu;
document.getElementsByTagName('body')[0].classList.toggle('scroll-locked');
window.addEventListener('keyup', this.closeMenu);
},
closeMenu(event) {
if (event.target.classList.contains('menu-block') || event.keyCode === 27) {
this.isOpenMenu = false;
document.getElementsByTagName('body')[0].classList.remove('scroll-locked');
window.removeEventListener('keyup', this.closeMenu);
}
},
openCourseMenu() {
this.isOpenCourseMenu = !this.isOpenCourseMenu;
if (this.isOpenCourseMenu) {
document.getElementsByTagName('body')[0].classList.add('scroll-locked');
window.addEventListener('keyup', this.closeCourseMenu);
} else {
document.getElementsByTagName('body')[0].classList.remove('scroll-locked');
window.removeEventListener('keyup', this.closeCourseMenu);
}
},
closeCourseMenu(event) {
if (event.target.classList.contains('menu-block') || event.keyCode === 27) {
this.isOpenCourseMenu = false;
document.getElementsByTagName('body')[0].classList.remove('scroll-locked');
window.removeEventListener('keyup', this.closeCourseMenu);
}
},
openSub() {
this.isSubOpen = !this.isSubOpen;
},
isMobileFn() {
const w = window.innerWidth
|| document.documentElement.clientWidth
|| document.body.clientWidth;
this.isMobile = (w < 1024);
}
},
created() {
window.addEventListener("resize", this.isMobileFn);
document.querySelector('.menu-block').style.display = '';
document.querySelector('.menu-toggle').style.opacity = '1';
document.querySelector('.menu-nav__link').style.display = '';
this.display = 'block';
this.isMobileFn();
},
destroyed() {
window.removeEventListener("resize", this.isMobileFn);
}
});
</script>
</header>
<main class="content">
<div class="page style-update">
<div class="page-wrap">
<style>
.article-inner .rr-widget__title {
padding-top: 0 !important;
}
.article-inner div[data-retailrocket-markup-block] {
margin-top: -32px;
display: none;
}
.article-inner {
font-family: 'Graphik';
}
</style>
<div class="under_header_banner" data-type="under_header"><!-- Yandex.RTB R-A-13443663-10 -->
<div id="yandex_rtb_R-A-13443663-10"></div>
<script>
window.yaContextCb.push(() => {
Ya.Context.AdvManager.render({
"blockId": "R-A-13443663-10",
"renderTo": "yandex_rtb_R-A-13443663-10"
})
})
</script>
</div> <div data-area="article" data-title="Циклы в Java / Skillbox Media" class=" noFullClass">
<div class="article-inner">
<section class="top-section-detail-page ">
<div class="container">
<div class="article-preview-info">
<div class="article-preview-info__tags ">
<div class="tag article-preview-info__tag">
<a href="/media/code/"
class="tag-item programming">
Код </a>
</div>
</div>
<div class="tag article-preview-info__tag">
<a href="/media/base/code/java/">
<div class="tag-item programming">
Java </div>
</a>
</div>
<a class="info-hashtag article-preview-info__hashtag" href="/media/base/">
#База знаний </a>
<ul class="info article-preview__info-box">
<li class="info-item"> <time class="info-text" datatime="#">11 июн 2021</time></li>
<li class="info-item hidden">
<span class="info-icon"><img src="/local/templates/media/images/icons/like.svg" alt=""></span>
<span class="info__text js-article-like-value">0</span>
</li>
</ul>
</div>
<div class="row">
<div class="top-section-detail-page__title-block col-xl-9 col-lg-10">
<div class="article-preview">
<h1 class="article-preview__title">Как использовать циклы в языке Java. Полное руководство</h1>
<p class="article-preview__description">Всё — от простейших конструкций до тонкостей и самых неочевидных моментов — в одной статье.</p>
</div>
</div>
</div>
</div>
</section>
<section data-article-text
data-articleId="203703"
data-courseId="3869"
>
<div class="container">
<noindex>
<div class="share" data-nosnippet>
<button class="share__handler-btn ">
<span class="share__handler-icon">
<svg width="11" height="12" viewBox="0 0 11 12" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M11 4.99902L6 0V2.99805C2.688 2.99805 0 5.68505 0 8.99805V11.498H0.0980225C0.765022 8.91205 3.107 6.99805 5.901 6.99805H6.00098V9.99805L11 4.99902Z" fill="currentColor"/>
</svg>
</span>
<span class="share__handler-text">Поделиться</span>
</button>
<div class="share__list">
<a href="#" class="share__item" data-code="vk">
<span class="share__item-icon share__item-icon--vk">
<svg width="9" height="5" viewBox="0 0 9 5" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M4.04776 4.98054H4.53996C4.62377 4.97136 4.70279 4.9361 4.76621 4.87951C4.81226 4.81209 4.83594 4.73139 4.83369 4.64925C4.83369 4.64925 4.82574 3.94629 5.1314 3.84125C5.43701 3.73621 5.826 4.51998 6.23879 4.82297C6.39281 4.95308 6.59128 5.01558 6.79053 4.99669L7.89399 4.98054C7.89399 4.98054 8.47355 4.94415 8.19965 4.46339C7.98372 4.08315 7.70589 3.743 7.37799 3.45744C6.68338 2.77872 6.77865 2.8878 7.61219 1.71216C8.12024 0.997077 8.32269 0.556717 8.25918 0.370875C8.14651 0.254767 7.98299 0.205914 7.82655 0.241594L6.58018 0.249674C6.52565 0.241067 6.46984 0.251007 6.42141 0.277954C6.37298 0.314507 6.33466 0.363228 6.31025 0.419356C6.18259 0.772814 6.0287 1.11586 5.8498 1.44552C5.29807 2.43936 5.07579 2.49188 4.98451 2.43128C4.77416 2.28584 4.82574 1.85356 4.82574 1.54248C4.82574 0.580957 4.96468 0.176954 4.55979 0.0719133C4.36879 0.0254376 4.17259 0.00505841 3.97631 0.0113129C3.62834 -0.0214164 3.27745 0.017045 2.94429 0.124433C2.8014 0.197154 2.69423 0.358753 2.76171 0.370875C2.90334 0.385518 3.03406 0.454932 3.12688 0.564795C3.21268 0.750336 3.25481 0.953675 3.24993 1.15868C3.24993 1.15868 3.32535 2.29392 3.07925 2.43532C2.91254 2.53228 2.68232 2.33432 2.18616 1.4334C2.01958 1.11848 1.87243 0.793298 1.74557 0.459754C1.72231 0.404013 1.68704 0.354309 1.64236 0.314316C1.58589 0.272672 1.52066 0.245006 1.45184 0.233514L0.268986 0.241594C0.181167 0.241154 0.0958013 0.271066 0.0268587 0.326434C-0.00595087 0.396174 -0.00882613 0.476652 0.0189202 0.548633C0.0189202 0.548633 0.947737 2.83932 1.99563 3.99477C2.51 4.60651 3.2568 4.96526 4.04776 4.98054Z" fill="white"/>
</svg>
</span>
<span class="share__item-text">Vkontakte</span>
</a>
<a href="#" class="share__item" data-code="tw">
<span class="share__item-icon share__item-icon--tw">
<svg width="9" height="7" viewBox="0 0 9 7" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M5.52788 0.00144284V0H5.9158L6.05754 0.027414C6.15204 0.0452114 6.23783 0.068535 6.31491 0.0973918C6.39201 0.126249 6.46661 0.159917 6.53872 0.198391C6.61083 0.236864 6.67623 0.276066 6.73492 0.315982C6.79311 0.355422 6.84533 0.397265 6.89158 0.441509C6.93733 0.486237 7.0087 0.49778 7.10568 0.476138C7.20266 0.454495 7.3071 0.424433 7.419 0.38596C7.5309 0.347487 7.64156 0.304201 7.75097 0.256104C7.86039 0.208007 7.92703 0.177469 7.95091 0.164484C7.97428 0.151022 7.98671 0.143808 7.98821 0.142841L7.98969 0.140677L7.99715 0.13707L8.00461 0.133463L8.01207 0.129856L8.01953 0.126249L8.02102 0.124084L8.02326 0.122642L8.02551 0.121199L8.02699 0.119034L8.03445 0.11687L8.04191 0.115427L8.04043 0.126249L8.03818 0.13707L8.03445 0.147891L8.03072 0.158713L8.02699 0.165927L8.02326 0.173141L8.01953 0.183962C8.01705 0.191176 8.01456 0.200793 8.01207 0.212819C8.00959 0.224845 7.98596 0.272935 7.9412 0.357103C7.89644 0.441271 7.84049 0.526637 7.77335 0.613208C7.70621 0.699778 7.64604 0.765182 7.59283 0.809434C7.53911 0.854162 7.50355 0.885421 7.48614 0.903219C7.46874 0.921492 7.4476 0.938323 7.42273 0.953718L7.38543 0.977525L7.37797 0.981132L7.37051 0.984739L7.36902 0.986903L7.36678 0.988346L7.36454 0.989789L7.36305 0.991953L7.35559 0.99556L7.34813 0.999168L7.34664 1.00133L7.3444 1.00277L7.34216 1.00422L7.34067 1.00638L7.33918 1.00855L7.33694 1.00999L7.3347 1.01143L7.33321 1.0136H7.37051L7.57939 0.970311C7.71865 0.941454 7.85168 0.906588 7.9785 0.865705L8.17992 0.800777L8.2023 0.793563L8.21349 0.789956L8.22095 0.786348L8.22841 0.782741L8.23587 0.779134L8.24333 0.775527L8.25825 0.773363L8.27317 0.77192V0.786348L8.26944 0.787791L8.26571 0.789956L8.26423 0.79212L8.26198 0.793563L8.25974 0.795006L8.25825 0.79717L8.25677 0.799334L8.25452 0.800777L8.25228 0.80222L8.25079 0.804384L8.24931 0.806548L8.24706 0.807991L8.24333 0.815205L8.2396 0.82242L8.23736 0.823862C8.23637 0.825305 8.20479 0.866181 8.14262 0.946504C8.08046 1.0273 8.04689 1.06818 8.04191 1.06915C8.03694 1.07059 8.02997 1.0778 8.02102 1.09079C8.01257 1.10425 7.95985 1.15788 7.86287 1.25166C7.76589 1.34545 7.67091 1.42889 7.57791 1.502C7.48441 1.57558 7.43716 1.666 7.43616 1.77325C7.43467 1.88002 7.42895 2.00074 7.419 2.13541C7.40905 2.27007 7.3904 2.41555 7.36305 2.57186C7.3357 2.72817 7.29342 2.90492 7.23623 3.10211C7.17904 3.29929 7.10941 3.49168 7.02735 3.67925C6.94529 3.86681 6.8595 4.03514 6.76998 4.18424C6.68046 4.33334 6.5984 4.45958 6.5238 4.56299C6.4492 4.66639 6.37336 4.76378 6.29626 4.85516C6.21918 4.94654 6.12171 5.04947 6.00384 5.16393C5.88547 5.27791 5.82082 5.34044 5.80988 5.3515C5.79844 5.36208 5.74971 5.40152 5.66365 5.46981C5.57812 5.53858 5.48611 5.60736 5.38763 5.67614C5.28966 5.74443 5.19964 5.80143 5.11758 5.84711C5.03552 5.8928 4.93655 5.94498 4.82067 6.00366C4.70529 6.06282 4.58046 6.11765 4.44618 6.16815C4.3119 6.21865 4.17016 6.26554 4.02096 6.30882C3.87176 6.35211 3.72753 6.38578 3.58827 6.40982C3.44903 6.43387 3.29112 6.45431 3.11456 6.47114L2.84973 6.49639V6.5H2.36483V6.49639L2.30142 6.49279C2.25915 6.49038 2.22433 6.48797 2.19698 6.48557C2.16963 6.48317 2.06643 6.46994 1.88739 6.44589C1.70835 6.42185 1.56785 6.3978 1.4659 6.37375C1.36395 6.34971 1.21225 6.30401 1.01083 6.23668C0.809413 6.16935 0.637087 6.10129 0.493854 6.03252C0.351121 5.96422 0.261601 5.92094 0.225293 5.90266C0.189485 5.88487 0.149201 5.86275 0.10444 5.83629L0.0373001 5.79661L0.0358156 5.79445L0.0335701 5.79301L0.0313321 5.79156L0.0298401 5.7894L0.0223801 5.78579L0.0149201 5.78219L0.0134355 5.78002L0.01119 5.77858L0.00895204 5.77714L0.00746003 5.77497L0.00597548 5.77281L0.00373001 5.77137H0V5.75694L0.00746003 5.75838L0.0149201 5.76054L0.0484902 5.76415C0.0708703 5.76655 0.131796 5.77016 0.231261 5.77497C0.330733 5.77978 0.436412 5.77978 0.548312 5.77497C0.660213 5.77016 0.774605 5.75934 0.891474 5.74251C1.00835 5.72568 1.14636 5.69682 1.30551 5.65594C1.46466 5.61505 1.61087 5.56648 1.74416 5.51021C1.87695 5.45346 1.97144 5.41114 2.02764 5.38324C2.08334 5.35583 2.16838 5.30484 2.28277 5.2303L2.45435 5.11848L2.45584 5.11632L2.45808 5.11487L2.46033 5.11343L2.46181 5.11127L2.4633 5.1091L2.46554 5.10766L2.46779 5.10622L2.46927 5.10405L2.47673 5.10189L2.48419 5.10044L2.48568 5.09323L2.48792 5.08602L2.49017 5.08457L2.49165 5.08241L2.43197 5.0788C2.39219 5.0764 2.35364 5.07399 2.31634 5.07159C2.27904 5.06918 2.2206 5.05836 2.14103 5.03912C2.06146 5.01988 1.97567 4.99103 1.88366 4.95255C1.79165 4.91408 1.70213 4.86838 1.6151 4.81548C1.52807 4.76258 1.46515 4.71857 1.42636 4.68346C1.38807 4.64883 1.33833 4.59978 1.27716 4.53629C1.21648 4.47233 1.16376 4.40668 1.119 4.33934C1.07424 4.27202 1.03148 4.19433 0.990699 4.10633L0.928774 3.97503L0.925044 3.96421L0.921314 3.95339L0.919076 3.94617L0.917584 3.93896L0.928774 3.9404L0.939964 3.94256L1.02202 3.95339C1.07674 3.9606 1.16253 3.963 1.27939 3.9606C1.39627 3.9582 1.47709 3.95339 1.52185 3.94617C1.56661 3.93896 1.59396 3.93414 1.60391 3.93174L1.61883 3.92814L1.63748 3.92453L1.65613 3.92092L1.65762 3.91876L1.65986 3.91731L1.6621 3.91587L1.66359 3.91371L1.64867 3.9101L1.63375 3.90649L1.61883 3.90289L1.60391 3.89928L1.58899 3.89567C1.57904 3.89327 1.56164 3.88846 1.53677 3.88124C1.5119 3.87403 1.44476 3.84757 1.33535 3.80189C1.22594 3.7562 1.1389 3.71171 1.07424 3.66842C1.00943 3.62501 0.947626 3.57754 0.889235 3.5263C0.831047 3.47436 0.767145 3.40751 0.697513 3.32575C0.627888 3.24399 0.565724 3.149 0.511012 3.04079C0.456308 2.93257 0.415277 2.82917 0.387922 2.73058C0.360676 2.63256 0.3427 2.53235 0.334217 2.43119L0.320781 2.27969L0.328241 2.28113L0.335701 2.2833L0.343161 2.2869L0.350621 2.29051L0.358081 2.29412L0.365541 2.29772L0.481172 2.34822C0.558264 2.38189 0.653998 2.41075 0.768383 2.43479C0.882775 2.45884 0.951154 2.47207 0.973534 2.47447L1.0071 2.47808H1.07424L1.07276 2.47592L1.07051 2.47447L1.06828 2.47303L1.06678 2.47087L1.0653 2.4687L1.06305 2.46726L1.06082 2.46582L1.05932 2.46365L1.05186 2.46004L1.0444 2.45644L1.04292 2.45427L1.04067 2.45283L1.03844 2.45139L1.03694 2.44922L1.02948 2.44562L1.02202 2.44201L1.02054 2.43984C1.01905 2.43888 0.99766 2.42349 0.956376 2.39367C0.915592 2.36337 0.872823 2.32418 0.828063 2.27608C0.783303 2.22798 0.738543 2.17749 0.693783 2.12458C0.64894 2.07156 0.609 2.01483 0.574422 1.95505C0.539614 1.89493 0.502806 1.81846 0.464014 1.72564C0.425721 1.6333 0.396627 1.54023 0.376731 1.44645C0.356843 1.35266 0.345653 1.26008 0.343161 1.1687C0.340677 1.07732 0.343161 0.999168 0.350621 0.93424C0.358081 0.869312 0.373001 0.795965 0.395382 0.714206C0.417762 0.632448 0.450093 0.545877 0.492362 0.454495L0.555772 0.317425L0.559502 0.306604L0.563232 0.295782L0.565478 0.29434L0.566962 0.292175L0.568454 0.290011L0.570692 0.288568L0.572938 0.290011L0.574422 0.292175L0.575914 0.29434L0.578152 0.295782L0.580398 0.297225L0.581882 0.29939L0.583374 0.301554L0.585612 0.302997L0.589342 0.310211L0.593072 0.317425L0.595318 0.318868L0.596802 0.321032L0.697513 0.429245C0.764653 0.501387 0.844229 0.581948 0.936234 0.670921C1.02825 0.759894 1.07922 0.806065 1.08916 0.809434C1.09912 0.813279 1.11154 0.824338 1.12646 0.842619C1.14138 0.860417 1.19112 0.902981 1.27567 0.970311C1.36022 1.03764 1.47087 1.1158 1.60764 1.20477C1.74441 1.29375 1.89609 1.38152 2.0627 1.46809C2.22931 1.55466 2.40835 1.63281 2.59982 1.70255C2.7913 1.77229 2.92558 1.81798 3.00266 1.83962C3.07975 1.86127 3.21154 1.88892 3.39804 1.92259C3.58454 1.95625 3.72505 1.9779 3.81954 1.98751C3.91403 1.99713 3.97869 2.00266 4.0135 2.00411L4.06572 2.00555L4.06423 1.99473L4.06199 1.98391L4.04707 1.89373C4.03712 1.83361 4.03215 1.74944 4.03215 1.64123C4.03215 1.53302 4.04085 1.43322 4.05826 1.34184C4.07567 1.25046 4.10178 1.15788 4.13659 1.0641C4.1714 0.970311 4.20547 0.895038 4.23879 0.838291C4.27261 0.78202 4.31687 0.717814 4.37158 0.645671C4.42629 0.573529 4.49716 0.498985 4.58419 0.422031C4.67122 0.345077 4.77069 0.276542 4.88259 0.216426C4.99449 0.15631 5.09769 0.110615 5.19218 0.0793563C5.28668 0.0480971 5.36625 0.0276521 5.4309 0.0180355C5.49556 0.00841898 5.52788 0.00288568 5.52788 0.00144284Z" fill="white"/>
</svg>
</span>
<span class="share__item-text">Twitter</span>
</a>
<a href="#" class="share__item" data-code="tg">
<span class="share__item-icon share__item-icon--tg">
<svg width="10" height="7" viewBox="0 0 10 7" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M1.39589 3.04852C1.39589 3.04852 5.05491 1.51189 6.32392 0.9708C6.8104 0.754384 8.46012 0.0617918 8.46012 0.0617918C8.46012 0.0617918 9.22155 -0.241191 9.15809 0.494655C9.13692 0.797667 8.96773 1.85815 8.79854 3.00523C8.54472 4.62846 8.26976 6.40316 8.26976 6.40316C8.26976 6.40316 8.22746 6.90097 7.86791 6.98753C7.50836 7.0741 6.91613 6.68455 6.8104 6.59795C6.72577 6.53304 5.22411 5.5591 4.6742 5.08295C4.52614 4.9531 4.35695 4.6934 4.69533 4.39039C5.45676 3.67617 6.36622 2.78882 6.91613 2.2261C7.16995 1.96638 7.42374 1.36038 6.36622 2.09622C4.86456 3.15674 3.38403 4.15231 3.38403 4.15231C3.38403 4.15231 3.04561 4.36873 2.41111 4.17394C1.77657 3.97918 1.03631 3.71945 1.03631 3.71945C1.03631 3.71945 0.528726 3.39481 1.39589 3.04852Z" fill="white"/>
</svg>
</span>
<span class="share__item-text">Telegram</span>
</a>
<a href="#" class="share__item js-share-item-copy">
<span class="share__item-icon share__item-icon--copy">
<svg width="10" height="10" viewBox="0 0 10 10" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M4.19922 5.40327C4.37217 5.63449 4.59283 5.8258 4.84622 5.96425C5.09962 6.10269 5.37982 6.18501 5.66783 6.20564C5.95584 6.22627 6.24492 6.18471 6.51546 6.08379C6.78599 5.98287 7.03166 5.82495 7.2358 5.62074L8.44399 4.41255C8.81079 4.03277 9.01375 3.52412 9.00917 2.99615C9.00458 2.46818 8.79281 1.96313 8.41946 1.58978C8.04611 1.21644 7.54106 1.00466 7.01309 1.00008C6.48512 0.995488 5.97647 1.19845 5.59669 1.56525L4.904 2.25392" stroke="black" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M5.81002 4.59658C5.63707 4.36536 5.41641 4.17404 5.16302 4.0356C4.90962 3.89716 4.62942 3.81483 4.34141 3.79421C4.0534 3.77358 3.76432 3.81514 3.49379 3.91605C3.22325 4.01697 2.97758 4.17489 2.77344 4.3791L1.56525 5.58729C1.19845 5.96707 0.995488 6.47572 1.00008 7.0037C1.00466 7.53167 1.21644 8.03672 1.58978 8.41006C1.96313 8.78341 2.46818 8.99518 2.99615 8.99977C3.52412 9.00436 4.03277 8.80139 4.41255 8.43459L5.10122 7.74592" stroke="black" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</span>
<span class="share__item-text">Скопировать ссылку</span>
</a>
</div>
</div> <!-- //share -->
</noindex>
<div class="row">
<div class="col-xl-9 col-lg-8 col-poster">
<div class="article-poster">
<picture >
<img src="https://248006.selcdn.ru/main/iblock/752/752797e9c5544522bf7929753c6db779/0c4781a733092e010496cbbb484722ef.png" itemprop='image' class='hidden-xs' />
</picture> <picture >
<img src="https://248006.selcdn.ru/main/iblock/752/752797e9c5544522bf7929753c6db779/0c4781a733092e010496cbbb484722ef.png" itemprop='image' class='visible-xs' />
</picture> </div>
<noindex>
<p class="article-poster-text" data-nosnippet>
</p>
</noindex>
</div>
<div class="col-xl-3 col-lg-4 col-author">
<div class="article-author">
<div class="article-author__image">
<a href="/media/authors/artem-avdeev/">
<img src="https://248006.selcdn.ru/main/iblock/cec/cec53c38a38c5f5b0c3ae9f212c86b5b/c56ca71fb5fed6e6c67e0291835c7dcc.png" alt="Артём Авдеев">
</a>
</div>
<div class="article-author__info">
<div class="article-author__name">
Артём Авдеев </div>
<div class="article-author__description">
Java-разработчик, преподаёт в Skillbox, осваивает машинное обучение. </div>
</div>
</div>
</div>
</div>
</div>
<div class="container">
<div class="row flex-row-rev">
<div class="col-xl-3 col-lg-4 col-author">
<div class="js-article-banner" data-article-banner-mobile data-type="side_mounted" data-article-banner-sticky-start>
<!--AdFox START-->
<!--yandex_skillbox.media-->
<!--Площадка: Skillbox / Сквозной для застройщика Легенда / Боковой баннер сквозной для застройщика Легенда-->
<!--Категория: <не задана>-->
<!--Тип баннера: Media banner-->
<div id="adfox_176131540100027244"></div>
<script>
window.yaContextCb.push(()=>{
Ya.adfoxCode.create({
ownerId: 11649869,
containerId: 'adfox_176131540100027244',
params: {
p1: 'dkugb',
p2: 'p'
}
})
})
</script> </div>
<div class="js-article-banner" data-article-banner-mobile data-type="vertical" data-article-banner-sticky-end></div>
</div>
<div class="col-xl-9 col-lg-8 col-poster">
<div class="container container--setka">
<div class="js-article-banner" data-type="top"></div>
<div class="article-detail-text__setka" data-detail-text>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<?xml encoding="utf-8" ?><html><body><div class="stk-post stk-layout_12col_18068 stk-theme_26309" data-ui-id="post" data-reset-type="class" data-editor-version="3.0.10" data-stk='{"images":[{"id":14044,"alt":"","caption":""},{"id":14043,"alt":"","caption":""},{"id":14042,"alt":"","caption":""},{"id":14041,"alt":"","caption":""}]}' data-layout-type="limited"><div class="stk-theme_26309__mb_15 stk-grid__layout_reverse stk-grid" data-ce-tag="grid"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><p class="stk-reset" data-ce-tag="paragraph">Цикл — это конструкция, которая позволяет многократно выполнять один и тот же участок кода. Например, вы хотите написать в консоль слово «Привет» 10 раз. Это можно сделать таким образом:</p><div class="stk-container sklbx-browser" data-ce-tag="container" data-container-name="Окно браузера"><div class="sklbx-browser__header">
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
</div><figure class="stk-reset stk-embed-figure stk-embed_rendered" data-ce-tag="embed"><code class="stk-reset stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;">System<span class="hljs-selector-class">.out</span><span class="hljs-selector-class">.println</span>(<span class="hljs-string" style="color: #a8ff60;">"Привет"</span>);
System<span class="hljs-selector-class">.out</span><span class="hljs-selector-class">.println</span>(<span class="hljs-string" style="color: #a8ff60;">"Привет"</span>);
System<span class="hljs-selector-class">.out</span><span class="hljs-selector-class">.println</span>(<span class="hljs-string" style="color: #a8ff60;">"Привет"</span>);
System<span class="hljs-selector-class">.out</span><span class="hljs-selector-class">.println</span>(<span class="hljs-string" style="color: #a8ff60;">"Привет"</span>);
System<span class="hljs-selector-class">.out</span><span class="hljs-selector-class">.println</span>(<span class="hljs-string" style="color: #a8ff60;">"Привет"</span>);
System<span class="hljs-selector-class">.out</span><span class="hljs-selector-class">.println</span>(<span class="hljs-string" style="color: #a8ff60;">"Привет"</span>);</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure></div><p class="stk-reset" data-ce-tag="paragraph">Вроде бы и не очень сложно, но код постоянно дублируется. А если нам нужно повторить это 100 раз — не добавлять же в программу 100 одинаковых строк? В таких случаях на помощь приходят циклы.</p><p class="stk-reset" data-ce-tag="paragraph">Вот как можно записать этот же код с помощью одного из циклов (далее мы рассмотрим его подробнее) — получилось всего три строчки вместо десяти:</p><div class="stk-container sklbx-browser" data-ce-tag="container" data-container-name="Окно браузера"><div class="sklbx-browser__header">
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
</div><figure class="stk-reset stk-embed-figure stk-embed_rendered" data-ce-tag="embed"><code class="stk-reset stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;"><span class="hljs-keyword" style="color: #96cbfe;">for</span> (<span class="hljs-keyword" style="color: #96cbfe;">int</span> i = <span class="hljs-number" style="color: #ff73fd;">0</span>; i < <span class="hljs-number" style="color: #ff73fd;">10</span>; i++) {
System.out.<span class="hljs-keyword" style="color: #96cbfe;">println</span>(<span class="hljs-string" style="color: #a8ff60;">"Привет"</span>);
}</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure></div><p class="stk-reset" data-ce-tag="paragraph">А вот вариант для стократного вывода в консоль сообщения «Привет»:</p><div class="stk-container sklbx-browser" data-ce-tag="container" data-container-name="Окно браузера"><div class="sklbx-browser__header">
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
</div><figure class="stk-reset stk-embed-figure stk-embed_rendered" data-ce-tag="embed"><code class="stk-reset stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;"><span class="hljs-keyword" style="color: #96cbfe;">for</span> (<span class="hljs-keyword" style="color: #96cbfe;">int</span> i = <span class="hljs-number" style="color: #ff73fd;">0</span>; i < <span class="hljs-number" style="color: #ff73fd;">100</span>; i++) {
System.out.<span class="hljs-keyword" style="color: #96cbfe;">println</span>(<span class="hljs-string" style="color: #a8ff60;">"Привет"</span>);
}</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure></div><p class="stk-reset" data-ce-tag="paragraph">Количество строк не увеличилось, мы просто заменили число 10 на число 100. Ровно так же будет и в случае с тысячей строк, и с миллионом, и с любым другим числом повторений.</p><p class=" stk-theme_26309__mb_05 stk-reset" data-ce-tag="paragraph">В языке Java существует четыре вида циклов:</p><ul class=" stk-theme_26309__pad_hor_1 stk-reset" data-ce-tag="list"><li class="stk-list-item stk-reset " data-ce-tag="list-item">циклы <u class="stk-reset">for</u>;</li><li class="stk-list-item stk-reset " data-ce-tag="list-item">циклы <u class="stk-reset">while</u>;</li><li class="stk-list-item stk-reset " data-ce-tag="list-item">циклы <u class="stk-reset">do…while</u>;</li><li class="stk-list-item stk-reset " data-ce-tag="list-item">и циклы <u class="stk-reset">foreach</u>.</li></ul><p class="stk-reset" data-ce-tag="paragraph">Начнём рассматривать их по порядку.</p></div></div><div class="stk-theme_26309__mb_15 stk-grid" data-ce-tag="grid"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><h2 class="stk-theme_26309__style_large_header stk-reset" data-ce-tag="paragraph"><strong class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">Содержание</strong></h2><div class="stk-grid" data-ce-tag="grid"><div data-col-width="6" class="stk-grid-col" data-ce-tag="grid-col"><ul class="stk-reset stk-theme_26309__style_small_text" data-ce-tag="list"><li class="stk-list-item stk-reset stk-theme_26309__style_small_text" data-ce-tag="list-item"><a class="stk-reset" href="#for">Цикл for</a></li><li class="stk-list-item stk-reset stk-theme_26309__style_small_text" data-ce-tag="list-item"><a class="stk-reset" href="#while_with">Цикл while — цикл с предусловием</a></li><li class="stk-list-item stk-reset stk-theme_26309__style_small_text" data-ce-tag="list-item"><a class="stk-reset" href="#do-while">Цикл do…while — цикл с постусловием</a></li><li class="stk-list-item stk-reset stk-theme_26309__style_small_text" data-ce-tag="list-item"><a class="stk-reset" href="#foreach">Цикл foreach</a></li><li class="stk-list-item stk-reset stk-theme_26309__style_small_text" data-ce-tag="list-item"><a class="stk-reset" href="#break">Оператор break</a></li></ul></div><div data-col-width="6" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col" data-stk-css="" data-stk-css-m=""><ul class="stk-reset stk-theme_26309__style_small_text" data-ce-tag="list"><li class="stk-list-item stk-reset stk-theme_26309__style_small_text" data-ce-tag="list-item"><a class="stk-reset" href="#continue">Оператор continue</a></li><li class="stk-list-item stk-reset stk-theme_26309__style_small_text" data-ce-tag="list-item"><a class="stk-reset" href="#limitless">Бесконечный цикл</a></li><li class="stk-list-item stk-reset stk-theme_26309__style_small_text" data-ce-tag="list-item"><a class="stk-reset" href="#vloj">Вложенные циклы</a></li><li class="stk-list-item stk-reset stk-theme_26309__style_small_text" data-ce-tag="list-item"><a class="stk-reset" href="#break_continue_with">Конструкция break (continue) с указателем</a></li><li class="stk-list-item stk-reset stk-theme_26309__style_small_text" data-ce-tag="list-item"><a class="stk-reset" href="#last">Подытожим</a></li></ul></div></div></div></div><div class="stk-theme_26309__mb_15 stk-grid" data-ce-tag="grid"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><h2 class="stk-theme_26309__style_large_header stk-reset" data-ce-tag="paragraph" id="for"><strong class="stk-reset">Цикл</strong> for</h2><p class="stk-reset" data-ce-tag="paragraph">В самом начале мы уже привели пример, в котором использовался именно цикл <u class="stk-reset">for</u> — для вывода повторяющихся строк. Рассмотрим его подробнее.</p><p class="stk-reset" data-ce-tag="paragraph">Синтаксис цикла <u class="stk-reset">for</u> имеет такой вид:</p><div class="stk-container sklbx-browser" data-ce-tag="container" data-container-name="Окно браузера"><div class="sklbx-browser__header">
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
</div><figure class="stk-reset stk-embed-figure stk-embed_rendered" data-ce-tag="embed"><code class="stk-reset stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;"><span class="hljs-keyword" style="color: #96cbfe;">for</span> (<span class="hljs-variable" style="color: #c6c5fe;"><начальное действие></span>; <span class="hljs-variable" style="color: #c6c5fe;"><условие выполнения цикла></span>; <span class="hljs-variable" style="color: #c6c5fe;"><действие после итерации></span>) {
<span class="hljs-variable" style="color: #c6c5fe;"><тело цикла></span>
}</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure></div><p class="stk-theme_26309__mb_05 stk-reset" data-ce-tag="paragraph">Здесь <strong class="stk-reset">итерация</strong> — одно выполнение тела цикла. Смысл параметров, используемых в записи цикла:</p><ul class=" stk-theme_26309__pad_hor_1 stk-reset" data-ce-tag="list"><li class="stk-list-item stk-reset " data-ce-tag="list-item"><u class="stk-reset"><начальное действие></u> — в этом месте обычно объявляется счётчик цикла, но может быть произведено любое иное действие. Данная часть выполнится только единожды, перед началом цикла.</li><li class="stk-list-item stk-reset " data-ce-tag="list-item"><u class="stk-reset"><условие выполнения цикла></u> — в этой части мы указываем условие для цикла. Если условие возвращает <u class="stk-reset">true</u>, то цикл выполняет указанные в его цикле действия, иначе — прекращает работу.</li><li class="stk-list-item stk-reset " data-ce-tag="list-item"><u class="stk-reset"><действие после итерации></u> — действие, которое будет выполнено после каждой итерации, если она не была прервана. Если в параметре <начальное действие> счётчик цикла обычно объявляется, то здесь он, как правило, увеличивается. Но может быть совершено и любое другое действие.</li></ul><p class=" stk-theme_26309__mb_05 stk-reset" data-ce-tag="paragraph">Эти три части цикла указываются в круглых скобках цикла и обязательно разделяются знаком точки с запятой. За ними следует:</p><ul class=" stk-theme_26309__pad_hor_1 stk-reset" data-ce-tag="list"><li class="stk-list-item stk-reset " data-ce-tag="list-item"><u class="stk-reset"><тело цикла></u> — код, который будет выполняться при каждой итерации.</li></ul><p class="stk-reset" data-ce-tag="paragraph">Последовательность выполнения цикла (пошаговый алгоритм работы):</p><p class="stk-reset" data-ce-tag="paragraph"><strong class="stk-reset">Шаг 1.</strong> Выполняем <u class="stk-reset"><начальное действие></u>, переходим к шагу 2.</p><p class="stk-reset" data-ce-tag="paragraph"><strong class="stk-reset">Шаг 2.</strong> Проверяем <u class="stk-reset"><условие выполнения цикла></u>. Если условие вернуло <u class="stk-reset">true</u>, переходим к шагу 3, иначе — к шагу 5.</p><p class="stk-reset" data-ce-tag="paragraph"><strong class="stk-reset">Шаг 3.</strong> Выполняем итерацию цикла (команды, которые записаны в строках <u class="stk-reset"><тело цикла></u>). Если выполнение итерации не было прервано, то переходим к шагу 4, иначе — к шагу 5.</p><p class="stk-reset" data-ce-tag="paragraph"><strong class="stk-reset">Шаг 4.</strong> Выполняем <u class="stk-reset"><действие после итерации></u>, затем переходим к шагу 2.</p><p class="stk-reset" data-ce-tag="paragraph"><strong class="stk-reset">Шаг 5.</strong> Выходим из цикла, продолжаем работу программы.</p><p class="stk-reset" data-ce-tag="paragraph">Для нашего примера (вывод повторяющихся строк) можно нарисовать такую блок-схему:</p><div class="stk-grid" data-ce-tag="grid"><div data-col-width="2" class="stk-grid-col stk-grid-col_empty" data-stk-css="" data-stk-css-m="" data-ce-tag="grid-col"><p class="ce-element--empty stk-element_no-text stk-reset" data-ce-tag="paragraph"></p></div><div data-col-width="7" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><div class="stk-container sklbx-browser" data-ce-tag="container" data-container-name="Окно браузера"><div class="sklbx-browser__header">
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
</div><figure class="stk-reset stk-image-figure" data-ce-tag="image-figure"><div data-ce-tag="mask" class="stk-mask"><span>
<source srcset="https://248006.selcdn.ru/main/upload/setka_images/08004808062021_27e9aa5bdf801f94f7728fe14d1ac08405e5a691.png.webp" data-image-id="14042" data-image-name="image1.png" alt="" title="" class="stk-reset stk-image" width="621" height="885" type="image/webp">
<picture >
<source srcset="https://248006.selcdn.ru/main/upload/setka_images/08004808062021_27e9aa5bdf801f94f7728fe14d1ac08405e5a691.png.webp" width='621' height='885' data-image-id='14042' data-image-name='image1.png' alt='' title='' class='stk-reset stk-image' type='image/webp' />
<img src="https://248006.selcdn.ru/main/upload/setka_images/08004808062021_27e9aa5bdf801f94f7728fe14d1ac08405e5a691.png" width='621' height='885' data-image-id='14042' data-image-name='image1.png' alt='' title='' class='stk-reset stk-image' />
</picture>
</source></span></div></figure></div></div><div data-col-width="3" class="stk-grid-col stk-grid-col_empty" data-ce-tag="grid-col"><p class="ce-element--empty stk-element_no-text stk-reset" data-ce-tag="paragraph"></p></div></div><p class="stk-reset" data-ce-tag="paragraph">Разберём детально, как это работает. Наш код:</p><div class="stk-container sklbx-browser" data-ce-tag="container" data-container-name="Окно браузера"><div class="sklbx-browser__header">
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
</div><figure class="stk-reset stk-embed-figure stk-embed_rendered" data-ce-tag="embed"><code class="stk-reset stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;"><span class="hljs-keyword" style="color: #96cbfe;">for</span> (<span class="hljs-keyword" style="color: #96cbfe;">int</span> i = <span class="hljs-number" style="color: #ff73fd;">0</span>; i < <span class="hljs-number" style="color: #ff73fd;">10</span>; i++) {
System.out.<span class="hljs-keyword" style="color: #96cbfe;">println</span>(<span class="hljs-string" style="color: #a8ff60;">"Привет"</span>);
}</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure></div><p class="stk-reset" data-ce-tag="paragraph">Цикл объявляет переменную <u class="stk-reset">i</u> со значением 0, задаёт условие «пока <u class="stk-reset">i</u> меньше 10», действие после итерации «увеличивать <u class="stk-reset">i</u> на 1» и команду «выводить в консоль слово „Привет“» для каждой итерации.</p><p class="stk-reset" data-ce-tag="paragraph">В соответствии с синтаксисом <u class="stk-reset" data-gtm-vis-has-fired-10171822_255="1"><начальное действие></u> здесь — это объявление переменной <u class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">i</u> типа <u class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">int</u> и присвоение ей значения 0 (<u class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">int i = 0</u>), <u class="stk-reset" data-gtm-vis-has-fired-10171822_255="1"><условие выполнения цикла></u> — условие <u class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">i < 10</u>. <u class="stk-reset" data-gtm-vis-has-fired-10171822_255="1"><Действием после итерации></u> в примере является инкремент переменной <u class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">i (i++)</u>. В процессе итерации <u class="stk-reset" data-gtm-vis-has-fired-10171822_255="1"><тела цикла></u> происходить вывод в консоль сообщения <u class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">(System.out.println («Привет»)</u>.</p><p class="stk-reset" data-ce-tag="paragraph">Попробуем слегка изменить наш код, чтобы вывести в консоль не приветствие, а значение счётчика <u class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">i</u> (оно должно увеличиваться с 0 до 9):</p><div class="stk-container sklbx-browser" data-ce-tag="container" data-container-name="Окно браузера"><div class="sklbx-browser__header">
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
</div><figure class="stk-reset stk-embed-figure stk-embed_rendered" data-ce-tag="embed"><code class="stk-reset stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;">for (int i = 0; i < 10; i++) {
System.out.println(i);
}
-<span class="ruby">-OUTPUT> <span class="hljs-number" style="color: #ff73fd;">0</span>
</span>-<span class="ruby">-OUTPUT> <span class="hljs-number" style="color: #ff73fd;">1</span>
</span>-<span class="ruby">-OUTPUT> <span class="hljs-number" style="color: #ff73fd;">2</span>
</span>-<span class="ruby">-OUTPUT> <span class="hljs-number" style="color: #ff73fd;">3</span>
</span>-<span class="ruby">-OUTPUT> <span class="hljs-number" style="color: #ff73fd;">4</span>
</span>-<span class="ruby">-OUTPUT> <span class="hljs-number" style="color: #ff73fd;">5</span>
</span>-<span class="ruby">-OUTPUT> <span class="hljs-number" style="color: #ff73fd;">6</span>
</span>-<span class="ruby">-OUTPUT> <span class="hljs-number" style="color: #ff73fd;">7</span>
</span>-<span class="ruby">-OUTPUT> <span class="hljs-number" style="color: #ff73fd;">8</span>
</span>-<span class="ruby">-OUTPUT> <span class="hljs-number" style="color: #ff73fd;">9</span></span></pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure></div><p class="stk-reset" data-ce-tag="paragraph">Как видим, последним числом выводится 9, потому что в условии цикла указано, что он выполняется, пока счётчик <u class="stk-reset">i < 10</u>. После завершения последней (десятой) итерации, когда <u class="stk-reset">i = 9</u>, отработает инкремент и значение счётчика станет равно 10.</p><p class="stk-reset" data-ce-tag="paragraph">Если нужно, мы можем сделать счётчик от 0 до 10. Для этого достаточно изменить условие c <u class="stk-reset">i < 10</u> на <u class="stk-reset">i <= 10</u>. Но в этом случае на печать будет выведено не 10, а 11 строк:</p><div class="stk-container sklbx-browser" data-ce-tag="container" data-container-name="Окно браузера"><div class="sklbx-browser__header">
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
</div><figure class="stk-reset stk-embed-figure stk-embed_rendered" data-ce-tag="embed"><code class="stk-reset stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;">for (int i = 0; i <= 10; i++) {
System.out.println(i);
}
-<span class="ruby">-OUTPUT> <span class="hljs-number" style="color: #ff73fd;">0</span>
</span>-<span class="ruby">-OUTPUT> <span class="hljs-number" style="color: #ff73fd;">1</span>
</span>-<span class="ruby">-OUTPUT> <span class="hljs-number" style="color: #ff73fd;">2</span>
</span>-<span class="ruby">-OUTPUT> <span class="hljs-number" style="color: #ff73fd;">3</span>
</span>-<span class="ruby">-OUTPUT> <span class="hljs-number" style="color: #ff73fd;">4</span>
</span>-<span class="ruby">-OUTPUT> <span class="hljs-number" style="color: #ff73fd;">5</span>
</span>-<span class="ruby">-OUTPUT> <span class="hljs-number" style="color: #ff73fd;">6</span>
</span>-<span class="ruby">-OUTPUT> <span class="hljs-number" style="color: #ff73fd;">7</span>
</span>-<span class="ruby">-OUTPUT> <span class="hljs-number" style="color: #ff73fd;">8</span>
</span>-<span class="ruby">-OUTPUT> <span class="hljs-number" style="color: #ff73fd;">9</span>
</span>-<span class="ruby">-OUTPUT> <span class="hljs-number" style="color: #ff73fd;">10</span></span></pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure></div><h3 class="stk-theme_26309__style_medium_header stk-reset" data-ce-tag="paragraph"><strong class="stk-reset">Важные замечания насчёт цикла</strong> <strong class="stk-reset">for:</strong></h3><p class=" stk-theme_26309__pad_hor_1 stk-reset" data-ce-tag="paragraph">1. Переменную, которую мы объявляем в параметрах цикла, нельзя использовать за его пределами, так как область видимости i ограничена телом цикла. Такая запись, например, не будет скомпилирована:</p><div class="stk-container sklbx-browser" data-ce-tag="container" data-container-name="Окно браузера"><div class="sklbx-browser__header">
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
</div><figure class="stk-reset stk-embed-figure stk-embed_rendered" data-ce-tag="embed"><code class="stk-reset stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;"><span class="hljs-keyword" style="color: #96cbfe;">for</span> (int <span class="hljs-built_in">i</span> = <span class="hljs-number" style="color: #ff73fd;">0</span>; <span class="hljs-built_in">i</span> < <span class="hljs-number" style="color: #ff73fd;">10</span>; <span class="hljs-built_in">i</span>++) {
System.out.println(i);
}
System.out.println(<span class="hljs-built_in">i</span>);</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure></div><p class="stk-reset" data-ce-tag="paragraph">Чтобы получить доступ к значению переменной <u class="stk-reset">i</u> за пределами цикла, её нужно объявить за пределами цикла. Например:</p><div class="stk-container sklbx-browser" data-ce-tag="container" data-container-name="Окно браузера"><div class="sklbx-browser__header">
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
</div><figure class="stk-reset stk-embed-figure stk-embed_rendered" data-ce-tag="embed"><code class="stk-reset stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;">int <span class="hljs-built_in">i</span> = <span class="hljs-number" style="color: #ff73fd;">0</span>;
<span class="hljs-keyword" style="color: #96cbfe;">for</span> (; <span class="hljs-built_in">i</span> < <span class="hljs-number" style="color: #ff73fd;">10</span>; <span class="hljs-built_in">i</span>++) {
System.out.println(i);
}
System.out.println(<span class="hljs-built_in">i</span>);</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure></div><p class="stk-theme_26309__pad_hor_1 stk-theme_26309__mb_05 stk-reset" data-ce-tag="paragraph">2. В цикле for ни одно действие не является обязательным, главное — указать два знака точки с запятой. Это значит, что в цикле мы можем опустить:</p><ul class="stk-theme_26309__pad_hor_1 stk-reset" data-ce-tag="list"><li class="stk-list-item stk-reset" data-ce-tag="list-item">условие (важно проследить, чтобы цикл обязательно был прерван, иначе он станет бесконечным);</li><li class="stk-list-item stk-reset" data-ce-tag="list-item">параметр, задающий действие после итерации;</li><li class="stk-list-item stk-reset" data-ce-tag="list-item">действие перед циклом;</li><li class="stk-list-item stk-reset" data-ce-tag="list-item">два любых параметра либо абсолютно все.</li></ul><p class="stk-theme_26309__pad_hor_1 stk-reset" data-ce-tag="paragraph">Пример:</p><div class="stk-container sklbx-browser" data-ce-tag="container" data-container-name="Окно браузера"><div class="sklbx-browser__header">
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
</div><figure class="stk-reset stk-embed-figure stk-embed_rendered" data-ce-tag="embed"><code class="stk-reset stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;">int <span class="hljs-built_in">i</span> = <span class="hljs-number" style="color: #ff73fd;">0</span>;
<span class="hljs-keyword" style="color: #96cbfe;">for</span> (; <span class="hljs-built_in">i</span> < <span class="hljs-number" style="color: #ff73fd;">10</span>; <span class="hljs-built_in">i</span>++) {
System.out.println(i);
}</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure></div><p class="stk-theme_26309__pad_hor_1 stk-reset" data-ce-tag="paragraph">Следующий вариант эквивалентен, так как инкремент <u class="stk-reset">i++</u> происходит прямо в конце итерации:</p><div class="stk-container sklbx-browser" data-ce-tag="container" data-container-name="Окно браузера"><div class="sklbx-browser__header">
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
</div><figure class="stk-reset stk-embed-figure stk-embed_rendered" data-ce-tag="embed"><code class="stk-reset stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;">int i = <span class="hljs-number" style="color: #ff73fd;">0</span><span class="hljs-comment" style="color: #7c7c7c;">;</span>
for (<span class="hljs-comment" style="color: #7c7c7c;">; i < 10;) {</span>
System.out.println(i)<span class="hljs-comment" style="color: #7c7c7c;">;</span>
i++<span class="hljs-comment" style="color: #7c7c7c;">;</span>
}</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure></div><p class="stk-theme_26309__pad_hor_1 stk-reset" data-ce-tag="paragraph">Ещё вариант, тоже аналогичный первому, так как мы поставили условие прерывания цикла <u class="stk-reset">break</u> (о прерываниях поговорим позже):</p><div class="stk-container sklbx-browser" data-ce-tag="container" data-container-name="Окно браузера"><div class="sklbx-browser__header">
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
</div><figure class="stk-reset stk-embed-figure stk-embed_rendered" data-ce-tag="embed"><code class="stk-reset stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;"><span class="hljs-keyword" style="color: #96cbfe;">int</span> i = <span class="hljs-number" style="color: #ff73fd;">0</span>;
<span class="hljs-keyword" style="color: #96cbfe;">for</span> (;;) {
<span class="hljs-keyword" style="color: #96cbfe;">if</span> (i < <span class="hljs-number" style="color: #ff73fd;">10</span>) {
<span class="hljs-keyword" style="color: #96cbfe;">break</span>;
}
System.out.<span class="hljs-keyword" style="color: #96cbfe;">println</span>(i);
i++;
}</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure></div><p class="stk-theme_26309__pad_hor_1 stk-reset" data-ce-tag="paragraph">3. Первым параметром цикла <начальное действие> может быть всё что угодно. Например, вызов метода:</p><div class="stk-container sklbx-browser" data-ce-tag="container" data-container-name="Окно браузера"><div class="sklbx-browser__header">
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
</div><figure class="stk-reset stk-embed-figure stk-embed_rendered" data-ce-tag="embed"><code class="stk-reset stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;">int <span class="hljs-built_in">i</span> = <span class="hljs-number" style="color: #ff73fd;">0</span>;
<span class="hljs-keyword" style="color: #96cbfe;">for</span> (someMethod(); <span class="hljs-built_in">i</span> < <span class="hljs-number" style="color: #ff73fd;">10</span>; <span class="hljs-built_in">i</span>++) {
//code
}</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure></div><p class="stk-theme_26309__pad_hor_1 stk-reset" data-ce-tag="paragraph">Мы можем даже увеличить число, поместив прямо здесь инкремент <u class="stk-reset">i++</u> (в этом случае начальное значение <u class="stk-reset">i</u> в цикле будет равно 1):</p><div class="stk-container sklbx-browser" data-ce-tag="container" data-container-name="Окно браузера"><div class="sklbx-browser__header">
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
</div><figure class="stk-reset stk-embed-figure stk-embed_rendered" data-ce-tag="embed"><code class="stk-reset stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;">int <span class="hljs-built_in">i</span> = <span class="hljs-number" style="color: #ff73fd;">0</span>;
<span class="hljs-keyword" style="color: #96cbfe;">for</span> (<span class="hljs-built_in">i</span>++; <span class="hljs-built_in">i</span> < <span class="hljs-number" style="color: #ff73fd;">10</span>; <span class="hljs-built_in">i</span>++) {
//code
}</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure></div><p class="stk-theme_26309__pad_hor_1 stk-reset" data-ce-tag="paragraph">Аналогично можно делать всё, что пожелаем, и в <u class="stk-reset"><действие после итерации></u>. Например, тоже вызвать какой-то метод:</p><div class="stk-container sklbx-browser" data-ce-tag="container" data-container-name="Окно браузера"><div class="sklbx-browser__header">
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
</div><figure class="stk-reset stk-embed-figure stk-embed_rendered" data-ce-tag="embed"><code class="stk-reset stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;">int <span class="hljs-built_in">i</span> = <span class="hljs-number" style="color: #ff73fd;">0</span>;
<span class="hljs-keyword" style="color: #96cbfe;">for</span> (<span class="hljs-built_in">i</span>++; <span class="hljs-built_in">i</span> < <span class="hljs-number" style="color: #ff73fd;">10</span>; someMethod()) {
//code
i++;
}</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure></div><p class="stk-theme_26309__pad_hor_1 stk-reset" data-ce-tag="paragraph">Важно понимать, что между собой параметры <u class="stk-reset">for</u> никак не связаны. Поэтому в качестве условия цикла может выступать любое выражение. Пример:</p><div class="stk-container sklbx-browser" data-ce-tag="container" data-container-name="Окно браузера"><div class="sklbx-browser__header">
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
</div><figure class="stk-reset stk-embed-figure stk-embed_rendered" data-ce-tag="embed"><code class="stk-reset stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;"><span class="hljs-keyword" style="color: #96cbfe;">int</span> <span class="hljs-keyword" style="color: #96cbfe;">any</span> = <span class="hljs-number" style="color: #ff73fd;">0</span>;
<span class="hljs-keyword" style="color: #96cbfe;">for</span> (<span class="hljs-keyword" style="color: #96cbfe;">int</span> i = <span class="hljs-number" style="color: #ff73fd;">0</span>; <span class="hljs-keyword" style="color: #96cbfe;">any</span> != <span class="hljs-number" style="color: #ff73fd;">10</span>; i++) {
<span class="hljs-keyword" style="color: #96cbfe;">any</span> += <span class="hljs-number" style="color: #ff73fd;">2</span>;
}</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure></div><p class="stk-theme_26309__pad_hor_1 stk-reset" data-ce-tag="paragraph">4. Первое действие цикла <u class="stk-reset">for</u> может состоять из любого числа команд либо объявления любого количества переменных одного типа. Например, здесь мы вызываем метод, увеличиваем <u class="stk-reset">any</u> на 2 и увеличиваем <u class="stk-reset">i</u> на 1:</p><div class="stk-container sklbx-browser" data-ce-tag="container" data-container-name="Окно браузера"><div class="sklbx-browser__header">
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
</div><figure class="stk-reset stk-embed-figure stk-embed_rendered" data-ce-tag="embed"><code class="stk-reset stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;"><span class="hljs-keyword" style="color: #96cbfe;">int</span> <span class="hljs-keyword" style="color: #96cbfe;">any</span> = <span class="hljs-number" style="color: #ff73fd;">0</span>;
<span class="hljs-keyword" style="color: #96cbfe;">int</span> i = <span class="hljs-number" style="color: #ff73fd;">0</span>;
<span class="hljs-keyword" style="color: #96cbfe;">for</span> (someMethod(), <span class="hljs-keyword" style="color: #96cbfe;">any</span> += <span class="hljs-number" style="color: #ff73fd;">2</span>, i++; i < <span class="hljs-number" style="color: #ff73fd;">10</span>; i++) {
<span class="hljs-comment" style="color: #7c7c7c;">//code</span>
}</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure></div><p class="stk-reset" data-ce-tag="paragraph">А тут первым действием объявляем три переменные <u class="stk-reset">i</u>, <u class="stk-reset">c</u>, <u class="stk-reset">g</u> типа <u class="stk-reset">int</u> со значениями 0, 5, 10 — их все можно использовать в цикле. Но в нашем случае изменяться будет только переменная <u class="stk-reset">i</u>:</p><div class="stk-container sklbx-browser" data-ce-tag="container" data-container-name="Окно браузера"><div class="sklbx-browser__header">
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
</div><figure class="stk-reset stk-embed-figure stk-embed_rendered" data-ce-tag="embed"><code class="stk-reset stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;">for (<span class="hljs-name" style="color: #96cbfe;">int</span> i = <span class="hljs-number" style="color: #ff73fd;">0</span>, c = <span class="hljs-number" style="color: #ff73fd;">5</span>, g = <span class="hljs-number" style="color: #ff73fd;">10</span><span class="hljs-comment" style="color: #7c7c7c;">; i < 10; i++) {</span>
System.out.println(<span class="hljs-name" style="color: #96cbfe;">i</span>)<span class="hljs-comment" style="color: #7c7c7c;">;</span>
System.out.println(<span class="hljs-name" style="color: #96cbfe;">c</span>)<span class="hljs-comment" style="color: #7c7c7c;">;</span>
System.out.println(<span class="hljs-name" style="color: #96cbfe;">g</span>)<span class="hljs-comment" style="color: #7c7c7c;">;</span>
}</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure></div><p class="stk-reset" data-ce-tag="paragraph">При желании можно изменять все три переменных, причём разными способами, в параметре <u class="stk-reset"><действие после итерации></u> цикла <u class="stk-reset">for</u>. Например:</p><div class="stk-container sklbx-browser" data-ce-tag="container" data-container-name="Окно браузера"><div class="sklbx-browser__header">
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
</div><figure class="stk-reset stk-embed-figure stk-embed_rendered" data-ce-tag="embed"><code class="stk-reset stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;"><span class="hljs-keyword" style="color: #96cbfe;">for</span> (int i = <span class="hljs-number" style="color: #ff73fd;">0</span>, <span class="hljs-built_in">c</span> = <span class="hljs-number" style="color: #ff73fd;">5</span>, g = <span class="hljs-number" style="color: #ff73fd;">10</span>; i < <span class="hljs-number" style="color: #ff73fd;">10</span>; i++, <span class="hljs-built_in">c</span> +=<span class="hljs-number" style="color: #ff73fd;">2</span>, g -= <span class="hljs-number" style="color: #ff73fd;">100</span>) {
<span class="hljs-type" style="color: #ffffb6;">System</span>.out.<span class="hljs-built_in">println</span>(i);
<span class="hljs-type" style="color: #ffffb6;">System</span>.out.<span class="hljs-built_in">println</span>(<span class="hljs-built_in">c</span>);
<span class="hljs-type" style="color: #ffffb6;">System</span>.out.<span class="hljs-built_in">println</span>(g);
}</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure></div><p class="stk-reset" data-ce-tag="paragraph">Или, в дополнение к этому, даже вызвать метод в третьей части цикла:</p><div class="stk-container sklbx-browser" data-ce-tag="container" data-container-name="Окно браузера"><div class="sklbx-browser__header">
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
</div><figure class="stk-reset stk-embed-figure stk-embed_rendered" data-ce-tag="embed"><code class="stk-reset stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;"><span class="hljs-keyword" style="color: #96cbfe;">for</span> (int i = <span class="hljs-number" style="color: #ff73fd;">0</span>, <span class="hljs-built_in">c</span> = <span class="hljs-number" style="color: #ff73fd;">5</span>, g = <span class="hljs-number" style="color: #ff73fd;">10</span>; i < <span class="hljs-number" style="color: #ff73fd;">10</span>; i++, <span class="hljs-built_in">c</span> +=<span class="hljs-number" style="color: #ff73fd;">2</span>, g -= <span class="hljs-number" style="color: #ff73fd;">100</span>, someMethod()) {
<span class="hljs-type" style="color: #ffffb6;">System</span>.out.<span class="hljs-built_in">println</span>(i);
<span class="hljs-type" style="color: #ffffb6;">System</span>.out.<span class="hljs-built_in">println</span>(<span class="hljs-built_in">c</span>);
<span class="hljs-type" style="color: #ffffb6;">System</span>.out.<span class="hljs-built_in">println</span>(g);
}</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure></div><p class="stk-theme_26309__mb_05 stk-reset" data-ce-tag="paragraph">Несмотря на то, что параметрами <u class="stk-reset"><начальное действие></u> и <u class="stk-reset"><действие после итерации></u> может быть всё что угодно, чаще всего цикл <u class="stk-reset">for</u> применяют в следующих случаях:</p><ul class=" stk-theme_26309__pad_hor_1 stk-reset" data-ce-tag="list"><li class="stk-list-item stk-reset " data-ce-tag="list-item">если требуется считать число итераций цикла или нужно использовать значение счётчика итераций — то есть <u class="stk-reset"><начальным действием></u> является объявление переменной, а в <u class="stk-reset"><действии после итерации></u> происходит инкремент/декремент этой переменной;</li><li class="stk-list-item stk-reset " data-ce-tag="list-item">когда число итераций известно заранее — происходит обход массива, работа с символами строки, коллекцией и тому подобное.</li></ul><p class="stk-reset" data-ce-tag="paragraph">Если же эта информация нам не нужна или количество итераций нельзя предсказать заранее, то обычно используют цикл <u class="stk-reset">while</u> <u class="stk-reset">(do…while)</u></p></div></div><div class="stk-theme_26309__mb_15 stk-grid" data-ce-tag="grid"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><h2 class="stk-theme_26309__style_large_header stk-reset" data-ce-tag="paragraph" id="while_with"><strong class="stk-reset">Цикл</strong> while<strong class="stk-reset"> (с предусловием)</strong></h2><p class="stk-reset" data-ce-tag="paragraph">Этот цикл имеет следующую синтаксическую структуру:</p><div class="stk-container sklbx-browser" data-ce-tag="container" data-container-name="Окно браузера"><div class="sklbx-browser__header">
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
</div><figure class="stk-reset stk-embed-figure stk-embed_rendered" data-ce-tag="embed"><code class="stk-reset stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;"><span class="hljs-keyword" style="color: #96cbfe;">while</span> (<span class="xml"><span class="hljs-tag" style="color: #96cbfe;"><<span class="hljs-name" style="color: #96cbfe;">условие</span> выполнения цикла></span>) {
<span class="hljs-tag" style="color: #96cbfe;"><<span class="hljs-name" style="color: #96cbfe;">тело</span> цикла></span>
}</span></pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure></div><p class="stk-reset" data-ce-tag="paragraph">В целом он не сильно отличается от цикла <u class="stk-reset">for</u> — цикл <u class="stk-reset">while</u> не имеет параметров <u class="stk-reset"><начальное действие></u> и <u class="stk-reset"><действие после итерации></u>, а содержит лишь условие. Это позволяет выполнять <u class="stk-reset"><тело цикла></u> до тех пор, пока выражение в условии возвращает <u class="stk-reset">true</u> перед каждой итерацией.</p><p class="stk-reset" data-ce-tag="paragraph">Ранее мы рассматривали пример цикла <u class="stk-reset">for</u>, в котором не были указаны параметры <u class="stk-reset"><начальное действие></u> и <u class="stk-reset"><действие после итерации></u>:</p><div class="stk-container sklbx-browser" data-ce-tag="container" data-container-name="Окно браузера"><div class="sklbx-browser__header">
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
</div><figure class="stk-reset stk-embed-figure stk-embed_rendered" data-ce-tag="embed"><code class="stk-reset stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;">int i = <span class="hljs-number" style="color: #ff73fd;">0</span><span class="hljs-comment" style="color: #7c7c7c;">;</span>
for (<span class="hljs-comment" style="color: #7c7c7c;">; i < 10;) {</span>
System.out.println(i)<span class="hljs-comment" style="color: #7c7c7c;">;</span>
i++<span class="hljs-comment" style="color: #7c7c7c;">;</span>
}</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure></div><p class="stk-reset" data-ce-tag="paragraph">Его несложно переписать с использованием <u class="stk-reset">while</u>:</p><div class="stk-container sklbx-browser" data-ce-tag="container" data-container-name="Окно браузера"><div class="sklbx-browser__header">
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
</div><figure class="stk-reset stk-embed-figure stk-embed_rendered" data-ce-tag="embed"><code class="stk-reset stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;"><span class="hljs-built_in">int</span> i = <span class="hljs-number" style="color: #ff73fd;">0</span>;
<span class="hljs-keyword" style="color: #96cbfe;">while</span> (i < <span class="hljs-number" style="color: #ff73fd;">10</span>) {
System.<span class="hljs-keyword" style="color: #96cbfe;">out</span>.println(i);
i++;
}</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure></div><p class="stk-reset" data-ce-tag="paragraph">Графически алгоритм работы можно представить такой схемой:</p><div class="stk-grid" data-ce-tag="grid"><div data-col-width="2" class="stk-grid-col stk-grid-col_empty" data-stk-css="" data-stk-css-m="" data-ce-tag="grid-col"><p class="ce-element--empty stk-element_no-text stk-reset" data-ce-tag="paragraph"></p></div><div data-col-width="7" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><div class="stk-container sklbx-browser" data-ce-tag="container" data-container-name="Окно браузера"><div class="sklbx-browser__header">
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
</div><figure class="stk-reset stk-image-figure stk-layout__overhangs_both" data-ce-tag="image-figure"><div data-ce-tag="mask" class="stk-mask"><span>
<source srcset="https://248006.selcdn.ru/main/upload/setka_images/08004808062021_e3ea06ecc4efe66fd609360c227a5daace25eda6.png.webp" data-image-id="14043" data-image-name="image2.png" alt="" title="" class="stk-reset stk-image" width="461" height="765" type="image/webp">
<picture >
<source srcset="https://248006.selcdn.ru/main/upload/setka_images/08004808062021_e3ea06ecc4efe66fd609360c227a5daace25eda6.png.webp" width='461' height='765' data-image-id='14043' data-image-name='image2.png' alt='' title='' class='stk-reset stk-image' type='image/webp' />
<img src="https://248006.selcdn.ru/main/upload/setka_images/08004808062021_e3ea06ecc4efe66fd609360c227a5daace25eda6.png" width='461' height='765' data-image-id='14043' data-image-name='image2.png' alt='' title='' class='stk-reset stk-image' />
</picture>
</source></span></div></figure></div></div><div data-col-width="3" class="stk-grid-col stk-grid-col_empty" data-ce-tag="grid-col"><p class="ce-element--empty stk-element_no-text stk-reset" data-ce-tag="paragraph"></p></div></div><p class="stk-reset" data-ce-tag="paragraph">В отличие от <u class="stk-reset">for</u>, в цикле <u class="stk-reset">while</u> нельзя не указывать параметр <u class="stk-reset"><условие выполнения цикла></u>, то есть запрещена такая запись:</p><div class="stk-container sklbx-browser" data-ce-tag="container" data-container-name="Окно браузера"><div class="sklbx-browser__header">
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
</div><figure class="stk-reset stk-embed-figure stk-embed_rendered" data-ce-tag="embed"><code class="stk-reset stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;"><span class="hljs-built_in">int</span> i = <span class="hljs-number" style="color: #ff73fd;">0</span>;
<span class="hljs-keyword" style="color: #96cbfe;">while</span> () {
System.<span class="hljs-keyword" style="color: #96cbfe;">out</span>.println(i);
i++;
}</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure></div><div class="stk-grid" data-ce-tag="grid" data-stk-css="stkXuS9u"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><p class="stk-reset " data-ce-tag="paragraph">Цикл <u class="stk-reset">while</u> называется циклом с предусловием, потому что первый раз условие выполнения проверяется перед первой итерацией. Если проверка вернёт значение <u class="stk-reset">false</u>, то ни одна итерация не будет выполнена.</p></div></div><p class="stk-theme_26309__mb_05 stk-reset" data-ce-tag="paragraph">Цикл <u class="stk-reset">while</u> обычно используется в случаях, когда:</p><ul class=" stk-theme_26309__pad_hor_1 stk-theme_26309__mb_0 stk-reset" data-ce-tag="list"><li class="stk-list-item stk-reset " data-ce-tag="list-item">число итераций не известно заранее;</li><li class="stk-list-item stk-reset " data-ce-tag="list-item">счётчик итераций не требуется по логике программы.</li></ul><style data-stk-css="stkXuS9u" media="all" class="">
[data-stk-css="stkXuS9u"]:not(#stk):not(#stk):not(style) {
border-left: 4px solid #f5a74f;
padding: 20px;
background-color: rgba(254, 245, 224, 1)
}
</style></div></div><div class="stk-theme_26309__mb_15 stk-grid" data-ce-tag="grid"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><h2 class="stk-theme_26309__style_large_header stk-reset" data-ce-tag="paragraph" id="do-while"><strong class="stk-reset">Цикл</strong> do…while<strong class="stk-reset"> (с постусловием)</strong></h2><p class="stk-reset" data-ce-tag="paragraph">Кроме цикла с предусловием <u class="stk-reset">while</u> существует вариант, который выполняет хотя бы одну итерацию, а после этого проверяет условие. Это цикл <u class="stk-reset">do…while</u>, который называется циклом с постусловием.</p><p class="stk-reset" data-ce-tag="paragraph">Синтаксис <u class="stk-reset">do…while</u>:</p><div class="stk-container sklbx-browser" data-ce-tag="container" data-container-name="Окно браузера"><div class="sklbx-browser__header">
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
</div><figure class="stk-reset stk-embed-figure stk-embed_rendered" data-ce-tag="embed"><code class="stk-reset stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;"><span class="hljs-keyword" style="color: #96cbfe;">do</span> {
<тело цикла>
} <span class="hljs-keyword" style="color: #96cbfe;">while</span> <span class="hljs-comment" style="color: #7c7c7c;">(<условие выполнения цикла>)</span>;</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure></div><p class="stk-reset" data-ce-tag="paragraph">Сначала отрабатывает действие в <u class="stk-reset"><теле цикла></u>, а потом проверяется <u class="stk-reset"><условие выполнения цикла></u>. Если оно возвращает <u class="stk-reset">true</u>, то цикл выполнит действие повторно.</p><p class="stk-reset" data-ce-tag="paragraph">Предположим, что нам обязательно нужно вывести на консоль слово «Привет» хотя бы один раз. Для этого можно использовать следующую конструкцию:</p><div class="stk-container sklbx-browser" data-ce-tag="container" data-container-name="Окно браузера"><div class="sklbx-browser__header">
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
</div><figure class="stk-reset stk-embed-figure stk-embed_rendered" data-ce-tag="embed"><code class="stk-reset stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;"><span class="hljs-keyword" style="color: #96cbfe;">int</span> i = <span class="hljs-number" style="color: #ff73fd;">0</span>;
<span class="hljs-keyword" style="color: #96cbfe;">int</span> b = <span class="hljs-number" style="color: #ff73fd;">1</span>;
<span class="hljs-keyword" style="color: #96cbfe;">do</span> {
System.out.<span class="hljs-keyword" style="color: #96cbfe;">println</span>(<span class="hljs-string" style="color: #a8ff60;">"Привет!"</span>);
i++;
} <span class="hljs-keyword" style="color: #96cbfe;">while</span> (i < b);</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure></div><p class="stk-theme_26309__mb_05 stk-reset" data-ce-tag="paragraph">Цикл <u class="stk-reset">do…while</u> редко применяется на практике, но его всё же используют:</p><ul class=" stk-theme_26309__pad_hor_1 stk-reset" data-ce-tag="list"><li class="stk-list-item stk-reset " data-ce-tag="list-item">если нужно сделать что-то хотя бы единожды — например, вывести слово «Привет», как выше;</li><li class="stk-list-item stk-reset " data-ce-tag="list-item">если значение, от которого зависит условие, инициализируется внутри тела цикла.</li></ul><p class="stk-reset" data-ce-tag="paragraph">Пример кода:</p><div class="stk-container sklbx-browser" data-ce-tag="container" data-container-name="Окно браузера"><div class="sklbx-browser__header">
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
</div><figure class="stk-reset stk-embed-figure stk-embed_rendered" data-ce-tag="embed"><code class="stk-reset stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;">int <span class="hljs-keyword" style="color: #96cbfe;">r</span><span class="hljs-comment" style="color: #7c7c7c;">;</span>
<span class="hljs-keyword" style="color: #96cbfe;">do</span> {
<span class="hljs-keyword" style="color: #96cbfe;">r</span> = <span class="hljs-keyword" style="color: #96cbfe;">new</span> Random().nextInt()<span class="hljs-comment" style="color: #7c7c7c;">;</span>
System.out.println(<span class="hljs-keyword" style="color: #96cbfe;">r</span>)<span class="hljs-comment" style="color: #7c7c7c;">;</span>
} <span class="hljs-keyword" style="color: #96cbfe;">while</span> (<span class="hljs-keyword" style="color: #96cbfe;">r</span> > <span class="hljs-number" style="color: #ff73fd;">50</span>)<span class="hljs-comment" style="color: #7c7c7c;">;</span></pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure></div><p class="stk-reset" data-ce-tag="paragraph">С помощью конструкции <u class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">new Random().nextInt()</u> здесь берётся очередное случайное число. Итог работы таков: цикл будет находить и выводить на консоль случайные числа до тех пор, пока их значение не будет превышать 50.</p><p class="stk-reset" data-ce-tag="paragraph">Диаграмма работы цикла <u class="stk-reset">do…while</u>:</p><div class="stk-grid" data-ce-tag="grid"><div data-col-width="2" class="stk-grid-col stk-grid-col_empty" data-stk-css="" data-stk-css-m="" data-ce-tag="grid-col"><p class="ce-element--empty stk-element_no-text stk-reset" data-ce-tag="paragraph"></p></div><div data-col-width="7" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><div class="stk-container sklbx-browser" data-ce-tag="container" data-container-name="Окно браузера"><div class="sklbx-browser__header">
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
</div><figure class="stk-reset stk-image-figure stk-layout__overhangs_both" data-ce-tag="image-figure"><div data-ce-tag="mask" class="stk-mask"><span>
<source srcset="https://248006.selcdn.ru/main/upload/setka_images/08004808062021_db52642fc67f6c7c46657360f234a883af322464.png.webp" data-image-id="14044" data-image-name="image3.png" alt="" title="" class="stk-reset stk-image" width="650" height="753" type="image/webp">
<picture >
<source srcset="https://248006.selcdn.ru/main/upload/setka_images/08004808062021_db52642fc67f6c7c46657360f234a883af322464.png.webp" width='650' height='753' data-image-id='14044' data-image-name='image3.png' alt='' title='' class='stk-reset stk-image' type='image/webp' />
<img src="https://248006.selcdn.ru/main/upload/setka_images/08004808062021_db52642fc67f6c7c46657360f234a883af322464.png" width='650' height='753' data-image-id='14044' data-image-name='image3.png' alt='' title='' class='stk-reset stk-image' />
</picture>
</source></span></div></figure></div></div><div data-col-width="3" class="stk-grid-col stk-grid-col_empty" data-ce-tag="grid-col"><p class="ce-element--empty stk-element_no-text stk-reset" data-ce-tag="paragraph"></p></div></div></div></div><div class="stk-theme_26309__mb_15 stk-grid" data-ce-tag="grid"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><h2 class="stk-theme_26309__style_large_header stk-reset" data-ce-tag="paragraph" id="foreach"><strong class="stk-reset">Цикл foreach</strong></h2><p class="stk-reset" data-ce-tag="paragraph">Для обхода массива или коллекции можно применять циклы <u class="stk-reset">for</u>:</p><div class="stk-container sklbx-browser" data-ce-tag="container" data-container-name="Окно браузера"><div class="sklbx-browser__header">
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
</div><figure class="stk-reset stk-embed-figure stk-embed_rendered" data-ce-tag="embed"><code class="stk-reset stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;">int[] mas = {<span class="hljs-number" style="color: #ff73fd;">4</span>, <span class="hljs-number" style="color: #ff73fd;">0</span>, <span class="hljs-number" style="color: #ff73fd;">3</span>, <span class="hljs-number" style="color: #ff73fd;">4</span>, <span class="hljs-number" style="color: #ff73fd;">5</span>};
<span class="hljs-keyword" style="color: #96cbfe;">for</span> (int <span class="hljs-built_in">i</span> = <span class="hljs-number" style="color: #ff73fd;">0</span>; <span class="hljs-built_in">i</span> < mas.<span class="hljs-built_in">length</span>; <span class="hljs-built_in">i</span>++) {
System.out.println(mas[i]);
}</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure></div><p class="stk-reset" data-ce-tag="paragraph">Синтаксис цикла <u class="stk-reset">foreach</u>:</p><div class="stk-container sklbx-browser" data-ce-tag="container" data-container-name="Окно браузера"><div class="sklbx-browser__header">
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
</div><figure class="stk-reset stk-embed-figure stk-embed_rendered" data-ce-tag="embed"><code class="stk-reset stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;">List<<span class="hljs-built_in">String</span>> <span class="hljs-built_in">list</span> = <span class="hljs-keyword" style="color: #96cbfe;">new</span> ArrayList<<span class="hljs-built_in">String</span>>();
<span class="hljs-built_in">list</span>.add(<span class="hljs-string" style="color: #a8ff60;">"s1"</span>);
<span class="hljs-built_in">list</span>.add(<span class="hljs-string" style="color: #a8ff60;">"s2"</span>);
<span class="hljs-built_in">list</span>.add(<span class="hljs-string" style="color: #a8ff60;">"s3"</span>);
<span class="hljs-built_in">list</span>.add(<span class="hljs-string" style="color: #a8ff60;">"s4"</span>);
<span class="hljs-keyword" style="color: #96cbfe;">for</span> (<span class="hljs-built_in">int</span> i = <span class="hljs-number" style="color: #ff73fd;">0</span>; i < <span class="hljs-built_in">list</span>.size(); i++) {
System.out.println(<span class="hljs-built_in">list</span>.get(i));
}</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure></div><p class="stk-reset" data-ce-tag="paragraph">С его помощью можно переписать приведённые примеры обхода массива и коллекции. Получится такой код:</p><div class="stk-container sklbx-browser" data-ce-tag="container" data-container-name="Окно браузера"><div class="sklbx-browser__header">
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
</div><figure class="stk-reset stk-embed-figure stk-embed_rendered" data-ce-tag="embed"><code class="stk-reset stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;"><span class="hljs-keyword" style="color: #96cbfe;">int</span>[] mas = {<span class="hljs-number" style="color: #ff73fd;">4</span>, <span class="hljs-number" style="color: #ff73fd;">0</span>, <span class="hljs-number" style="color: #ff73fd;">3</span>, <span class="hljs-number" style="color: #ff73fd;">4</span>, <span class="hljs-number" style="color: #ff73fd;">5</span>};
<span class="hljs-keyword" style="color: #96cbfe;">for</span> (<span class="hljs-keyword" style="color: #96cbfe;">int</span> <span class="hljs-keyword" style="color: #96cbfe;">ma</span> : mas) {
System.out.println(<span class="hljs-keyword" style="color: #96cbfe;">ma</span>);
}</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure></div><div class="stk-container sklbx-browser" data-ce-tag="container" data-container-name="Окно браузера"><div class="sklbx-browser__header">
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
</div><figure class="stk-reset stk-embed-figure stk-embed_rendered" data-ce-tag="embed"><code class="stk-reset stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;"><span class="hljs-built_in">List</span><<span class="hljs-built_in">String</span>> <span class="hljs-built_in">list</span> = <span class="hljs-literal" style="color: #c6c5fe;">new</span> ArrayList<<span class="hljs-built_in">String</span>>();
<span class="hljs-built_in">list</span>.add(<span class="hljs-string" style="color: #a8ff60;">"s1"</span>);
<span class="hljs-built_in">list</span>.add(<span class="hljs-string" style="color: #a8ff60;">"s2"</span>);
<span class="hljs-built_in">list</span>.add(<span class="hljs-string" style="color: #a8ff60;">"s3"</span>);
<span class="hljs-built_in">list</span>.add(<span class="hljs-string" style="color: #a8ff60;">"s4"</span>);
for (<span class="hljs-built_in">String</span> s : <span class="hljs-built_in">list</span>) {
System.out.println(s);
}</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure></div><p class="stk-reset" data-ce-tag="paragraph">Результат выполнения обоих вариантов будет одинаковым, но конструкция сильно упростилась — теперь не нужно следить за счётчиком итераций. Цикл foreach сам поочерёдно берёт значения из массива/коллекции и помещает их в указанную перед двоеточием переменную.</p><p class="stk-reset" data-ce-tag="paragraph">Важно, чтобы тип переменной, указанной перед двоеточием, совпадал с типом массива/коллекции.</p><div class="stk-grid" data-ce-tag="grid" data-stk-css="stkuwtWB"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><p class="stk-reset " data-ce-tag="paragraph"><strong class="stk-reset">Внимание:</strong> далее материал повышенной сложности (необходимо знание интерфейсов).</p></div></div><p class="stk-reset" data-ce-tag="paragraph">На самом деле параметром после двоеточия может быть любой класс, который имплементирует интерфейс <u class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">Iterable</u> (а все коллекции-наследники <u class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">java.util.Collection</u> его имплементируют) и реализует метод <u class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">iterator()</u>. Мы можем даже самостоятельно создать класс, который будет передаваться в качестве параметра.</p><p class="stk-reset" data-ce-tag="paragraph">Пример такого кода:</p><div class="stk-container sklbx-browser" data-ce-tag="container" data-container-name="Окно браузера"><div class="sklbx-browser__header">
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
</div><figure class="stk-reset stk-embed-figure stk-embed_rendered" data-ce-tag="embed"><code class="stk-reset stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;"><span class="hljs-keyword" style="color: #96cbfe;">public</span> <span class="hljs-class"><span class="hljs-keyword" style="color: #96cbfe;">class</span> <span class="hljs-title" style="color: #ffffb6;">Main</span> </span>{
<span class="hljs-function"><span class="hljs-keyword" style="color: #96cbfe;">public</span> <span class="hljs-keyword" style="color: #96cbfe;">static</span> <span class="hljs-keyword" style="color: #96cbfe;">void</span> <span class="hljs-title" style="color: #ffffb6;">main</span><span class="hljs-params">(String[] args)</span> </span>{
MyIterable myIterable = <span class="hljs-keyword" style="color: #96cbfe;">new</span> MyIterable();
<span class="hljs-keyword" style="color: #96cbfe;">for</span> (Integer s : myIterable) {
System.out.println(s);
}
}
}
<span class="hljs-class"><span class="hljs-keyword" style="color: #96cbfe;">class</span> <span class="hljs-title" style="color: #ffffb6;">MyIterable</span> <span class="hljs-keyword" style="color: #96cbfe;">implements</span> <span class="hljs-title" style="color: #ffffb6;">Iterable</span><<span class="hljs-title" style="color: #ffffb6;">Integer</span>> </span>{
<span class="hljs-keyword" style="color: #96cbfe;">private</span> <span class="hljs-keyword" style="color: #96cbfe;">int</span>[] mas = {<span class="hljs-number" style="color: #ff73fd;">1</span>, <span class="hljs-number" style="color: #ff73fd;">2</span>, <span class="hljs-number" style="color: #ff73fd;">3</span>, <span class="hljs-number" style="color: #ff73fd;">4</span>};
<span class="hljs-meta" style="color: #7c7c7c;">@Override</span>
<span class="hljs-function"><span class="hljs-keyword" style="color: #96cbfe;">public</span> Iterator<Integer> <span class="hljs-title" style="color: #ffffb6;">iterator</span><span class="hljs-params">()</span> </span>{
<span class="hljs-keyword" style="color: #96cbfe;">return</span> <span class="hljs-keyword" style="color: #96cbfe;">new</span> Iterator<Integer>() {
<span class="hljs-keyword" style="color: #96cbfe;">private</span> <span class="hljs-keyword" style="color: #96cbfe;">int</span> pos = <span class="hljs-number" style="color: #ff73fd;">0</span>;
<span class="hljs-meta" style="color: #7c7c7c;">@Override</span>
<span class="hljs-function"><span class="hljs-keyword" style="color: #96cbfe;">public</span> <span class="hljs-keyword" style="color: #96cbfe;">boolean</span> <span class="hljs-title" style="color: #ffffb6;">hasNext</span><span class="hljs-params">()</span> </span>{
<span class="hljs-keyword" style="color: #96cbfe;">return</span> pos < mas.length;
}
<span class="hljs-meta" style="color: #7c7c7c;">@Override</span>
<span class="hljs-function"><span class="hljs-keyword" style="color: #96cbfe;">public</span> Integer <span class="hljs-title" style="color: #ffffb6;">next</span><span class="hljs-params">()</span> </span>{
<span class="hljs-keyword" style="color: #96cbfe;">int</span> predPos = pos;
pos++;
<span class="hljs-keyword" style="color: #96cbfe;">return</span> mas[predPos];
}
};
}
}</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure></div><p class="stk-reset" data-ce-tag="paragraph">Мы объявляем класс <u class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">MyIterable</u>, в нём создаём массив, по которому будем итерироваться. Реализуем метод <u class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">iterator()</u>, возвращающий объект интерфейса <u class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">Iterator</u>, а также <u class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">hasNext</u> и <u class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">next</u>. Метод <u class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">hasNext</u> вызывается перед каждой итерацией и проверяет, есть ли следующий элемент. Если не дошли до конца массива, то <u class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">hasNext</u> вернёт <u class="stk-reset" data-gtm-vis-has-fired-10171822_255="1">true</u>.</p><p class="stk-reset" data-ce-tag="paragraph">Когда метод <u class="stk-reset">hasNext</u> возвращает <u class="stk-reset">true</u>, цикл <u class="stk-reset">foreach</u> вызывает метод <u class="stk-reset">next</u>, который должен вернуть следующий элемент. В нашем случае он, кроме того, увеличивает на 1 текущую позицию элемента массива для последующей итерации.</p><p class="stk-reset" data-ce-tag="paragraph">Под капотом цикл <u class="stk-reset">foreach</u> выглядит как простой <u class="stk-reset">while</u>, но такой код будет более громоздким:</p><div class="stk-container sklbx-browser stk-theme_26309__mb_0" data-ce-tag="container" data-container-name="Окно браузера"><div class="sklbx-browser__header">
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
</div><figure class="stk-reset stk-embed-figure stk-embed_rendered" data-ce-tag="embed"><code class="stk-reset stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;"><span class="hljs-type" style="color: #ffffb6;">MyIterable</span> myIterable = new <span class="hljs-type" style="color: #ffffb6;">MyIterable</span>();
<span class="hljs-type" style="color: #ffffb6;">Iterator</span><<span class="hljs-type" style="color: #ffffb6;">Integer</span>> <span class="hljs-keyword" style="color: #96cbfe;">iterator</span> = myIterable.<span class="hljs-keyword" style="color: #96cbfe;">iterator</span>();
<span class="hljs-keyword" style="color: #96cbfe;">while</span> (<span class="hljs-keyword" style="color: #96cbfe;">iterator</span>.hasNext()) {
<span class="hljs-type" style="color: #ffffb6;">Integer</span> s = <span class="hljs-keyword" style="color: #96cbfe;">iterator</span>.next();
<span class="hljs-type" style="color: #ffffb6;">System</span>.<span class="hljs-keyword" style="color: #96cbfe;">out</span>.println(s);
}</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure></div><style data-stk-css="stkuwtWB" media="all" class="">
[data-stk-css="stkuwtWB"]:not(#stk):not(#stk):not(style) {
border-left: 4px solid #f5a74f;
padding: 20px;
background-color: rgba(254, 245, 224, 1)
}
</style></div></div><div class="stk-theme_26309__mb_15 stk-grid" data-ce-tag="grid"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><h2 class="stk-theme_26309__style_large_header stk-reset" data-ce-tag="paragraph" id="break"><strong class="stk-reset">Оператор break</strong></h2><div class="stk-grid" data-ce-tag="grid" data-stk-css="stkbqYN4"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><p class="stk-reset " data-ce-tag="paragraph"><strong class="stk-reset">Внимание:</strong> для освоения этого раздела необходимо понимание принципов работы с массивами.</p></div></div><p class="stk-reset" data-ce-tag="paragraph">Не всегда нужно, чтобы цикл отработал до конца, — бывают ситуации, когда нам требуется его прервать. Допустим, мы обходим некий массив и хотим остановить выполнение цикла, если в нём найдено число 5. Для таких ситуаций существует оператор <u class="stk-reset">break</u>, который полностью прекращает работу цикла.</p><p class="stk-reset" data-ce-tag="paragraph">Вот варианты кода для всех четырёх типов циклов (для цикла <u class="stk-reset">do…while</u> дополнительное важное условие — размер массива должен быть больше 0):</p><div class="stk-container sklbx-browser" data-ce-tag="container" data-container-name="Окно браузера"><div class="sklbx-browser__header">
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
</div><figure class="stk-reset stk-embed-figure stk-embed_rendered" data-ce-tag="embed"><code class="stk-reset stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;"><span class="hljs-keyword" style="color: #96cbfe;">int</span>[] mas = {<span class="hljs-number" style="color: #ff73fd;">4</span>, <span class="hljs-number" style="color: #ff73fd;">6</span>, <span class="hljs-number" style="color: #ff73fd;">32</span>, <span class="hljs-number" style="color: #ff73fd;">9</span>, <span class="hljs-number" style="color: #ff73fd;">5</span>, <span class="hljs-number" style="color: #ff73fd;">24</span>, <span class="hljs-number" style="color: #ff73fd;">4</span>};
<span class="hljs-keyword" style="color: #96cbfe;">for</span> (<span class="hljs-keyword" style="color: #96cbfe;">int</span> i = <span class="hljs-number" style="color: #ff73fd;">0</span>; i < mas.length; i++) {
<span class="hljs-keyword" style="color: #96cbfe;">if</span> (mas[i] == <span class="hljs-number" style="color: #ff73fd;">5</span>) {
System.out.<span class="hljs-keyword" style="color: #96cbfe;">println</span>(<span class="hljs-string" style="color: #a8ff60;">"Число 5 найдено, его позиция "</span> + i);
<span class="hljs-keyword" style="color: #96cbfe;">break</span>;
}
System.out.<span class="hljs-keyword" style="color: #96cbfe;">println</span>(<span class="hljs-string" style="color: #a8ff60;">"Текущее число "</span> + mas[i] + <span class="hljs-string" style="color: #a8ff60;">". Позиция "</span> + i);
}</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure></div><div class="stk-container sklbx-browser" data-ce-tag="container" data-container-name="Окно браузера"><div class="sklbx-browser__header">
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
</div><figure class="stk-reset stk-embed-figure stk-embed_rendered" data-ce-tag="embed"><code class="stk-reset stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;"><span class="hljs-keyword" style="color: #96cbfe;">int</span>[] mas = {<span class="hljs-number" style="color: #ff73fd;">4</span>, <span class="hljs-number" style="color: #ff73fd;">6</span>, <span class="hljs-number" style="color: #ff73fd;">32</span>, <span class="hljs-number" style="color: #ff73fd;">9</span>, <span class="hljs-number" style="color: #ff73fd;">5</span>, <span class="hljs-number" style="color: #ff73fd;">24</span>, <span class="hljs-number" style="color: #ff73fd;">4</span>};
<span class="hljs-keyword" style="color: #96cbfe;">int</span> i = <span class="hljs-number" style="color: #ff73fd;">0</span>;
<span class="hljs-keyword" style="color: #96cbfe;">while</span> (i < mas.length) {
<span class="hljs-keyword" style="color: #96cbfe;">if</span> (mas[i] == <span class="hljs-number" style="color: #ff73fd;">5</span>) {
System.out.<span class="hljs-keyword" style="color: #96cbfe;">println</span>(<span class="hljs-string" style="color: #a8ff60;">"Число 5 найдено, его позиция "</span> + i);
<span class="hljs-keyword" style="color: #96cbfe;">break</span>;
}
System.out.<span class="hljs-keyword" style="color: #96cbfe;">println</span>(<span class="hljs-string" style="color: #a8ff60;">"Текущее число "</span> + mas[i] + <span class="hljs-string" style="color: #a8ff60;">". Позиция "</span> + i);
i++;
}</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure></div><div class="stk-container sklbx-browser" data-ce-tag="container" data-container-name="Окно браузера"><div class="sklbx-browser__header">
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
</div><figure class="stk-reset stk-embed-figure stk-embed_rendered" data-ce-tag="embed"><code class="stk-reset stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;"><span class="hljs-keyword" style="color: #96cbfe;">int</span>[] mas = {<span class="hljs-number" style="color: #ff73fd;">4</span>, <span class="hljs-number" style="color: #ff73fd;">6</span>, <span class="hljs-number" style="color: #ff73fd;">32</span>, <span class="hljs-number" style="color: #ff73fd;">9</span>, <span class="hljs-number" style="color: #ff73fd;">5</span>, <span class="hljs-number" style="color: #ff73fd;">24</span>, <span class="hljs-number" style="color: #ff73fd;">4</span>};
<span class="hljs-keyword" style="color: #96cbfe;">int</span> i = <span class="hljs-number" style="color: #ff73fd;">0</span>;
<span class="hljs-keyword" style="color: #96cbfe;">do</span> {
<span class="hljs-keyword" style="color: #96cbfe;">if</span> (mas[i] == <span class="hljs-number" style="color: #ff73fd;">5</span>) {
System.out.<span class="hljs-keyword" style="color: #96cbfe;">println</span>(<span class="hljs-string" style="color: #a8ff60;">"Число 5 найдено, его позиция "</span> + i);
<span class="hljs-keyword" style="color: #96cbfe;">break</span>;</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure></div><div class="stk-container sklbx-browser" data-ce-tag="container" data-container-name="Окно браузера"><div class="sklbx-browser__header">
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
</div><figure class="stk-reset stk-embed-figure stk-embed_rendered" data-ce-tag="embed"><code class="stk-reset stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;"><span class="hljs-keyword" style="color: #96cbfe;">int</span>[] mas = {<span class="hljs-number" style="color: #ff73fd;">4</span>, <span class="hljs-number" style="color: #ff73fd;">6</span>, <span class="hljs-number" style="color: #ff73fd;">32</span>, <span class="hljs-number" style="color: #ff73fd;">9</span>, <span class="hljs-number" style="color: #ff73fd;">5</span>, <span class="hljs-number" style="color: #ff73fd;">24</span>, <span class="hljs-number" style="color: #ff73fd;">4</span>};
<span class="hljs-keyword" style="color: #96cbfe;">int</span> i = <span class="hljs-number" style="color: #ff73fd;">0</span>;
<span class="hljs-keyword" style="color: #96cbfe;">for</span> (<span class="hljs-keyword" style="color: #96cbfe;">int</span> s : mas) {
<span class="hljs-keyword" style="color: #96cbfe;">if</span> (s == <span class="hljs-number" style="color: #ff73fd;">5</span>) {
System.out.<span class="hljs-keyword" style="color: #96cbfe;">println</span>(<span class="hljs-string" style="color: #a8ff60;">"Число 5 найдено, его позиция "</span> + i);
<span class="hljs-keyword" style="color: #96cbfe;">break</span>;
}
System.out.<span class="hljs-keyword" style="color: #96cbfe;">println</span>(<span class="hljs-string" style="color: #a8ff60;">"Текущее число "</span> + s + <span class="hljs-string" style="color: #a8ff60;">". Позиция "</span> + i);
i++;
}</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure></div><p class="stk-reset" data-ce-tag="paragraph">Если выполнить эти фрагменты, во всех вариантах на выводе будет одно и то же:</p><div class="stk-container sklbx-browser" data-ce-tag="container" data-container-name="Окно браузера"><div class="sklbx-browser__header">
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
</div><figure class="stk-reset stk-embed-figure stk-embed_rendered" data-ce-tag="embed"><code class="stk-reset stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;">-<span class="ruby">-OUTPUT> Текущее число <span class="hljs-number" style="color: #ff73fd;">4</span>. Позиция <span class="hljs-number" style="color: #ff73fd;">0</span>
</span>-<span class="ruby">-OUTPUT> Текущее число <span class="hljs-number" style="color: #ff73fd;">6</span>. Позиция <span class="hljs-number" style="color: #ff73fd;">1</span>
</span>-<span class="ruby">-OUTPUT> Текущее число <span class="hljs-number" style="color: #ff73fd;">32</span>. Позиция <span class="hljs-number" style="color: #ff73fd;">2</span>
</span>-<span class="ruby">-OUTPUT> Текущее число <span class="hljs-number" style="color: #ff73fd;">9</span>. Позиция <span class="hljs-number" style="color: #ff73fd;">3</span>
</span>-<span class="ruby">-OUTPUT> Число <span class="hljs-number" style="color: #ff73fd;">5</span> найдено, его позиция <span class="hljs-number" style="color: #ff73fd;">4</span></span></pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure></div><p class="stk-theme_26309__mb_0 stk-reset" data-ce-tag="paragraph">Выполнение циклов полностью прекращается, как только любой из них доходит до позиции 4, где и расположено искомое число 5. Это происходит потому, что везде задано условие: если текущий элемент равен 5, вызывается оператор <u class="stk-reset">break</u>.</p><style data-stk-css="stkbqYN4" media="all" class="">
[data-stk-css="stkbqYN4"]:not(#stk):not(#stk):not(style) {
border-left: 4px solid #f5a74f;
padding: 20px;
background-color: rgba(254, 245, 224, 1)
}
</style></div></div><div class="stk-theme_26309__mb_15 stk-grid" data-ce-tag="grid"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><h2 class="stk-theme_26309__style_large_header stk-reset" data-ce-tag="paragraph" id="continue"><strong class="stk-reset">Оператор continue</strong></h2><p class="stk-reset" data-ce-tag="paragraph">Бывают ситуации, когда по логике программы требуется пропустить текущую итерацию. Предположим, нужно, чтобы в консоль выводилась надпись «Текущее число <u class="stk-reset"><число></u>. Позиция <u class="stk-reset"><позиция></u>», но при условии, что текущий элемент массива не равен 5. Это можно сделать с помощью оператора <u class="stk-reset">continue</u> — он позволяет сразу перейти к следующей итерации.</p><div class="stk-grid" data-ce-tag="grid" data-stk-css="stkGF5Mw"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><p class="stk-reset " data-ce-tag="paragraph"><strong class="stk-reset">Важно:</strong> при вызове этого оператора цикл прекращает текущую итерацию, выполняет <u class="stk-reset"><действие после итерации></u> и проверяет условие цикла. Если проверка вернула true, то переходит к следующей итерации, а иначе — заканчивается.</p></div></div><p class="stk-reset" data-ce-tag="paragraph">Примеры кода для всех четырёх типов циклов:</p><div class="stk-container sklbx-browser" data-ce-tag="container" data-container-name="Окно браузера"><div class="sklbx-browser__header">
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
</div><figure class="stk-reset stk-embed-figure stk-embed_rendered" data-ce-tag="embed"><code class="stk-reset stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;"><span class="hljs-keyword" style="color: #96cbfe;">int</span>[] mas = {<span class="hljs-number" style="color: #ff73fd;">4</span>, <span class="hljs-number" style="color: #ff73fd;">6</span>, <span class="hljs-number" style="color: #ff73fd;">32</span>, <span class="hljs-number" style="color: #ff73fd;">9</span>, <span class="hljs-number" style="color: #ff73fd;">5</span>, <span class="hljs-number" style="color: #ff73fd;">24</span>, <span class="hljs-number" style="color: #ff73fd;">4</span>};
<span class="hljs-keyword" style="color: #96cbfe;">for</span> (<span class="hljs-keyword" style="color: #96cbfe;">int</span> i = <span class="hljs-number" style="color: #ff73fd;">0</span>; i < mas.length; i++) {
<span class="hljs-keyword" style="color: #96cbfe;">if</span> (mas[i] == <span class="hljs-number" style="color: #ff73fd;">5</span>) {
<span class="hljs-keyword" style="color: #96cbfe;">continue</span>;
}
System.out.<span class="hljs-keyword" style="color: #96cbfe;">println</span>(<span class="hljs-string" style="color: #a8ff60;">"Текущее число "</span> + mas[i] + <span class="hljs-string" style="color: #a8ff60;">". Позиция "</span> + i);
}</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure></div><div class="stk-container sklbx-browser" data-ce-tag="container" data-container-name="Окно браузера"><div class="sklbx-browser__header">
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
</div><figure class="stk-reset stk-embed-figure stk-embed_rendered" data-ce-tag="embed"><code class="stk-reset stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;"><span class="hljs-keyword" style="color: #96cbfe;">int</span>[] mas = {<span class="hljs-number" style="color: #ff73fd;">4</span>, <span class="hljs-number" style="color: #ff73fd;">6</span>, <span class="hljs-number" style="color: #ff73fd;">32</span>, <span class="hljs-number" style="color: #ff73fd;">9</span>, <span class="hljs-number" style="color: #ff73fd;">5</span>, <span class="hljs-number" style="color: #ff73fd;">24</span>, <span class="hljs-number" style="color: #ff73fd;">4</span>};
<span class="hljs-keyword" style="color: #96cbfe;">int</span> i = <span class="hljs-number" style="color: #ff73fd;">0</span>;
<span class="hljs-keyword" style="color: #96cbfe;">while</span> (i < mas.length) {
<span class="hljs-keyword" style="color: #96cbfe;">if</span> (mas[i] == <span class="hljs-number" style="color: #ff73fd;">5</span>) {
i++;
<span class="hljs-keyword" style="color: #96cbfe;">continue</span>;
}
System.out.<span class="hljs-keyword" style="color: #96cbfe;">println</span>(<span class="hljs-string" style="color: #a8ff60;">"Текущее число "</span> + mas[i] + <span class="hljs-string" style="color: #a8ff60;">". Позиция "</span> + i);
i++;
}</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure></div><div class="stk-container sklbx-browser" data-ce-tag="container" data-container-name="Окно браузера"><div class="sklbx-browser__header">
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
</div><figure class="stk-reset stk-embed-figure stk-embed_rendered" data-ce-tag="embed"><code class="stk-reset stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;"><span class="hljs-keyword" style="color: #96cbfe;">int</span>[] mas = {<span class="hljs-number" style="color: #ff73fd;">4</span>, <span class="hljs-number" style="color: #ff73fd;">6</span>, <span class="hljs-number" style="color: #ff73fd;">32</span>, <span class="hljs-number" style="color: #ff73fd;">9</span>, <span class="hljs-number" style="color: #ff73fd;">5</span>, <span class="hljs-number" style="color: #ff73fd;">24</span>, <span class="hljs-number" style="color: #ff73fd;">4</span>};
<span class="hljs-keyword" style="color: #96cbfe;">int</span> i = <span class="hljs-number" style="color: #ff73fd;">0</span>;
<span class="hljs-keyword" style="color: #96cbfe;">do</span> {
<span class="hljs-keyword" style="color: #96cbfe;">if</span> (mas[i] == <span class="hljs-number" style="color: #ff73fd;">5</span>) {
i++;
<span class="hljs-keyword" style="color: #96cbfe;">continue</span>;
}
System.out.<span class="hljs-keyword" style="color: #96cbfe;">println</span>(<span class="hljs-string" style="color: #a8ff60;">"Текущее число "</span> + mas[i] + <span class="hljs-string" style="color: #a8ff60;">". Позиция "</span> + i);
i++;
} <span class="hljs-keyword" style="color: #96cbfe;">while</span> (i < mas.length);</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure></div><div class="stk-container sklbx-browser" data-ce-tag="container" data-container-name="Окно браузера"><div class="sklbx-browser__header">
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
</div><figure class="stk-reset stk-embed-figure stk-embed_rendered" data-ce-tag="embed"><code class="stk-reset stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;"><span class="hljs-keyword" style="color: #96cbfe;">int</span>[] mas = {<span class="hljs-number" style="color: #ff73fd;">4</span>, <span class="hljs-number" style="color: #ff73fd;">6</span>, <span class="hljs-number" style="color: #ff73fd;">32</span>, <span class="hljs-number" style="color: #ff73fd;">9</span>, <span class="hljs-number" style="color: #ff73fd;">5</span>, <span class="hljs-number" style="color: #ff73fd;">24</span>, <span class="hljs-number" style="color: #ff73fd;">4</span>};
<span class="hljs-keyword" style="color: #96cbfe;">int</span> i = <span class="hljs-number" style="color: #ff73fd;">0</span>;
<span class="hljs-keyword" style="color: #96cbfe;">for</span> (<span class="hljs-keyword" style="color: #96cbfe;">int</span> s : mas) {
<span class="hljs-keyword" style="color: #96cbfe;">if</span> (s == <span class="hljs-number" style="color: #ff73fd;">5</span>) {
i++;
<span class="hljs-keyword" style="color: #96cbfe;">continue</span>;
}
System.out.<span class="hljs-keyword" style="color: #96cbfe;">println</span>(<span class="hljs-string" style="color: #a8ff60;">"Текущее число "</span> + s + <span class="hljs-string" style="color: #a8ff60;">". Позиция "</span> + i);
i++;
}</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure></div><p class="stk-reset" data-ce-tag="paragraph">Вывод для всех фрагментов будет одинаковым:</p><div class="stk-container sklbx-browser" data-ce-tag="container" data-container-name="Окно браузера"><div class="sklbx-browser__header">
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
</div><figure class="stk-reset stk-embed-figure stk-embed_rendered" data-ce-tag="embed"><code class="stk-reset stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;">-<span class="ruby">-OUTPUT> Текущее число <span class="hljs-number" style="color: #ff73fd;">4</span>. Позиция <span class="hljs-number" style="color: #ff73fd;">0</span>
</span>-<span class="ruby">-OUTPUT> Текущее число <span class="hljs-number" style="color: #ff73fd;">6</span>. Позиция <span class="hljs-number" style="color: #ff73fd;">1</span>
</span>-<span class="ruby">-OUTPUT> Текущее число <span class="hljs-number" style="color: #ff73fd;">32</span>. Позиция <span class="hljs-number" style="color: #ff73fd;">2</span>
</span>-<span class="ruby">-OUTPUT> Текущее число <span class="hljs-number" style="color: #ff73fd;">9</span>. Позиция <span class="hljs-number" style="color: #ff73fd;">3</span>
</span>-<span class="ruby">-OUTPUT> Текущее число <span class="hljs-number" style="color: #ff73fd;">24</span>. Позиция <span class="hljs-number" style="color: #ff73fd;">5</span>
</span>-<span class="ruby">-OUTPUT> Текущее число <span class="hljs-number" style="color: #ff73fd;">4</span>. Позиция <span class="hljs-number" style="color: #ff73fd;">6</span></span></pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure></div><p class="stk-reset" data-ce-tag="paragraph">Таким образом, мы пропускаем четвёртую позицию в массиве и не выводим число 5 в консоль.</p><div class="stk-grid stk-theme_26309__mb_0" data-ce-tag="grid" data-stk-css="stkPOOoU"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><p class="stk-reset " data-ce-tag="paragraph">Прервать выполнение цикла может также оператор return, но этот оператор также и выйдет из метода, который выполняется в текущий момент.</p></div></div><style data-stk-css="stkPOOoU" media="all" class="">
[data-stk-css="stkPOOoU"]:not(#stk):not(#stk):not(style) {
border-left: 4px solid #f5a74f;
padding: 20px;
background-color: rgba(254, 245, 224, 1)
}
</style><style data-stk-css="stkGF5Mw" media="all" class="">
[data-stk-css="stkGF5Mw"]:not(#stk):not(#stk):not(style) {
border-left: 4px solid #f5a74f;
padding: 20px;
background-color: rgba(254, 245, 224, 1)
}
</style></div></div><div class="stk-theme_26309__mb_15 stk-grid" data-ce-tag="grid"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><h2 class="stk-theme_26309__style_large_header stk-reset" data-ce-tag="paragraph" id="limitless"><strong class="stk-reset">Бесконечный цикл</strong></h2><p class="stk-reset" data-ce-tag="paragraph">Бесконечный цикл может понадобиться, если мы не знаем условие выхода (оно определено внутри цикла) или условий несколько, либо если нужно, чтобы цикл не заканчивался вовсе.</p><p class="stk-reset" data-ce-tag="paragraph">Есть три варианта того, как создать такой цикл:</p><div class="stk-container sklbx-browser" data-ce-tag="container" data-container-name="Окно браузера"><div class="sklbx-browser__header">
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
</div><figure class="stk-reset stk-embed-figure stk-embed_rendered" data-ce-tag="embed"><code class="stk-reset stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;"><span class="hljs-keyword" style="color: #96cbfe;">while</span> (<span class="hljs-literal" style="color: #c6c5fe;">true</span>) {
<тело цикла>
}</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure></div><p class="stk-reset" data-ce-tag="paragraph">или</p><div class="stk-container sklbx-browser" data-ce-tag="container" data-container-name="Окно браузера"><div class="sklbx-browser__header">
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
</div><figure class="stk-reset stk-embed-figure stk-embed_rendered" data-ce-tag="embed"><code class="stk-reset stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;"><span class="hljs-keyword" style="color: #96cbfe;">for</span> (;;) {
<span class="hljs-variable" style="color: #c6c5fe;"><тело цикла></span>
}</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure></div><p class="stk-reset" data-ce-tag="paragraph">или</p><div class="stk-container sklbx-browser" data-ce-tag="container" data-container-name="Окно браузера"><div class="sklbx-browser__header">
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
</div><figure class="stk-reset stk-embed-figure stk-embed_rendered" data-ce-tag="embed"><code class="stk-reset stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;"><span class="hljs-keyword" style="color: #96cbfe;">do</span> {
<тело цикла>
} <span class="hljs-keyword" style="color: #96cbfe;">while</span>(<span class="hljs-literal" style="color: #c6c5fe;">true</span>);</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure></div><p class="stk-reset" data-ce-tag="paragraph">Пример использования бесконечного цикла:</p><div class="stk-container sklbx-browser" data-ce-tag="container" data-container-name="Окно браузера"><div class="sklbx-browser__header">
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
</div><figure class="stk-reset stk-embed-figure stk-embed_rendered" data-ce-tag="embed"><code class="stk-reset stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;"><span class="hljs-keyword" style="color: #96cbfe;">while</span> (<span class="hljs-keyword" style="color: #96cbfe;">true</span>) {
<span class="hljs-keyword" style="color: #96cbfe;">int</span> randomNumber = <span class="hljs-keyword" style="color: #96cbfe;">new</span> Random().nextInt();
<span class="hljs-keyword" style="color: #96cbfe;">if</span> (randomNumber == <span class="hljs-number" style="color: #ff73fd;">5</span>) {
<span class="hljs-keyword" style="color: #96cbfe;">break</span>;
}
System.out.<span class="hljs-keyword" style="color: #96cbfe;">println</span>(<span class="hljs-string" style="color: #a8ff60;">"Рандомное число не равно 5"</span>);
}</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure></div><p class="stk-reset" data-ce-tag="paragraph">С помощью конструкции <u class="stk-reset">new Random ().nextInt ()</u> мы на каждой итерации получаем случайное число и записываем его в переменную <u class="stk-reset">randomNumber</u>. Если рандомное число равно 5, то выходим из цикла.</p><p class="stk-reset" data-ce-tag="paragraph">Цикл ниже не закончит работу никогда — строка «Привет!» будет выводиться в консоль бесконечно:</p><div class="stk-container sklbx-browser" data-ce-tag="container" data-container-name="Окно браузера"><div class="sklbx-browser__header">
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
</div><figure class="stk-reset stk-embed-figure stk-embed_rendered" data-ce-tag="embed"><code class="stk-reset stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;"><span class="hljs-selector-tag" style="color: #96cbfe;">while</span> (true) {
System<span class="hljs-selector-class">.out</span><span class="hljs-selector-class">.println</span>(<span class="hljs-string" style="color: #a8ff60;">"Привет!"</span>);
}</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure></div><p class="stk-reset" data-ce-tag="paragraph">С точки зрения эффективности исполнения не имеет значения, какой из вариантов бесконечного цикла мы используем. Если взглянуть на байт-код, для JVM все эти фрагменты будут выглядеть одинаково:</p><div class="stk-grid" data-stk-css="stk_491V" data-ce-tag="grid"><div data-col-width="12" class="stk-theme_26309__pad_round_1 stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><p class="stk-reset" data-ce-tag="paragraph">L0</p><p class="stk-reset" data-ce-tag="paragraph">LINENUMBER <line number> L0</p><p class="stk-reset" data-ce-tag="paragraph">FRAME SAME</p><p class="stk-reset" data-ce-tag="paragraph">GOTO L0</p></div></div><p class="stk-reset" data-ce-tag="paragraph">Поэтому используйте циклы, которые лучше подходят для решения вашей задачи, чтобы код получался максимально понятным для чтения и удобным для дальнейшего расширения.</p></div></div><div class="stk-theme_26309__mb_15 stk-grid" data-ce-tag="grid"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><h2 class="stk-theme_26309__style_large_header stk-reset" data-ce-tag="paragraph" id="vloj"><strong class="stk-reset">Вложенные циклы</strong></h2><div class="stk-grid" data-ce-tag="grid" data-stk-css="stkCpY91"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><p class="stk-reset " data-ce-tag="paragraph"><strong class="stk-reset">Внимание:</strong> для освоения этого раздела необходимо понимание принципов работы с массивами.</p></div></div><p class="stk-reset" data-ce-tag="paragraph">Часто используют циклы, один из которых выполняется в теле другого, — их называют <strong class="stk-reset">вложенными</strong>. Это может потребоваться для обхода двумерных массивов, генерации данных и много чего ещё. Вкладывать друг в друга можно разные циклы неограниченное количество раз.</p><p class="stk-reset" data-ce-tag="paragraph">Вот примеры кода:</p><div class="stk-container sklbx-browser" data-ce-tag="container" data-container-name="Окно браузера"><div class="sklbx-browser__header">
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
</div><figure class="stk-reset stk-embed-figure stk-embed_rendered" data-ce-tag="embed"><code class="stk-reset stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;">char[][] chars =
{{<span class="hljs-string" style="color: #a8ff60;">'x'</span>, <span class="hljs-string" style="color: #a8ff60;">' '</span>, <span class="hljs-string" style="color: #a8ff60;">' '</span>, <span class="hljs-string" style="color: #a8ff60;">' '</span>, <span class="hljs-string" style="color: #a8ff60;">'x'</span>},
{<span class="hljs-string" style="color: #a8ff60;">' '</span>, <span class="hljs-string" style="color: #a8ff60;">'x'</span>, <span class="hljs-string" style="color: #a8ff60;">' '</span>, <span class="hljs-string" style="color: #a8ff60;">'x'</span>, <span class="hljs-string" style="color: #a8ff60;">' '</span>},
{<span class="hljs-string" style="color: #a8ff60;">' '</span>, <span class="hljs-string" style="color: #a8ff60;">' '</span>, <span class="hljs-string" style="color: #a8ff60;">'x'</span>, <span class="hljs-string" style="color: #a8ff60;">' '</span>, <span class="hljs-string" style="color: #a8ff60;">' '</span>},
{<span class="hljs-string" style="color: #a8ff60;">' '</span>, <span class="hljs-string" style="color: #a8ff60;">'x'</span>, <span class="hljs-string" style="color: #a8ff60;">' '</span>, <span class="hljs-string" style="color: #a8ff60;">'x'</span>, <span class="hljs-string" style="color: #a8ff60;">' '</span>},
{<span class="hljs-string" style="color: #a8ff60;">'x'</span>, <span class="hljs-string" style="color: #a8ff60;">' '</span>, <span class="hljs-string" style="color: #a8ff60;">' '</span>, <span class="hljs-string" style="color: #a8ff60;">' '</span>, <span class="hljs-string" style="color: #a8ff60;">'x'</span>}};
<span class="hljs-keyword" style="color: #96cbfe;">for</span> (int i = <span class="hljs-number" style="color: #ff73fd;">0</span>; i < chars.length; i++) {
for (int j = <span class="hljs-number" style="color: #ff73fd;">0</span>; j < chars[i].length; j++) {
System.out.print(chars[i][j]);
}
System.out.println();</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure></div><p class="stk-reset" data-ce-tag="paragraph">В этом фрагменте был создан двумерный массив <u class="stk-reset">chars</u>, по которому мы прошли с помощью одного цикла <u class="stk-reset">for</u>, вложенного в другой — тоже <u class="stk-reset">for</u>. Для каждой итерации внешнего цикла выполняются все итерации вложенного в него внутреннего. Таким образом, для массива размерности 5 на 5 будет совершено 25 итераций — внешний цикл идёт по строкам, внутренний — по столбцам.</p><p class="stk-reset" data-ce-tag="paragraph">Ещё пример, но теперь уже трёх вложенных циклов:</p><div class="stk-container sklbx-browser" data-ce-tag="container" data-container-name="Окно браузера"><div class="sklbx-browser__header">
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
</div><figure class="stk-reset stk-embed-figure stk-embed_rendered" data-ce-tag="embed"><code class="stk-reset stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;">String[] names = {"Иван", "Сергей", "Кирилл"};
String[] phrases = {"Как дела?", "Как у тебя погода?"};
String[] greetings = {"Привет, ", "Добрый день, "};
int i = 0;
while (i < greetings.length) {
for (int j = 0; j < names.length; j++) {
System.out.println(greetings[i] + names[j]);
for (String s : phrases) {
System.out.println(s);
}
System.out.println();
}
i++;
}
-<span class="ruby">-OUTPUT> Привет, Иван
</span>-<span class="ruby">-OUTPUT> Как дела?
</span>-<span class="ruby">-OUTPUT> Как у тебя погода?
</span>-<span class="ruby">-OUTPUT>
</span>-<span class="ruby">-OUTPUT> Привет, Сергей
</span>-<span class="ruby">-OUTPUT> Как дела?
</span>-<span class="ruby">-OUTPUT> Как у тебя погода?
</span>-<span class="ruby">-OUTPUT>
</span>-<span class="ruby">-OUTPUT> Привет, Кирилл
</span>-<span class="ruby">-OUTPUT> Как дела?
</span>-<span class="ruby">-OUTPUT> Как у тебя погода?
</span>-<span class="ruby">-OUTPUT>
</span>-<span class="ruby">-OUTPUT> Добрый день, Иван
</span>-<span class="ruby">-OUTPUT> Как дела?
</span>-<span class="ruby">-OUTPUT> Как у тебя погода?
</span>-<span class="ruby">-OUTPUT>
</span>-<span class="ruby">-OUTPUT> Добрый день, Сергей
</span>-<span class="ruby">-OUTPUT> Как дела?
</span>-<span class="ruby">-OUTPUT> Как у тебя погода?
</span>-<span class="ruby">-OUTPUT>
</span>-<span class="ruby">-OUTPUT> Добрый день, Кирилл
</span>-<span class="ruby">-OUTPUT> Как дела?
</span>-<span class="ruby">-OUTPUT> Как у тебя погода? </span></pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure></div><p class="stk-reset" data-ce-tag="paragraph">Тут мы прошлись по значениям из трёх массивов и сгенерировали шесть сообщений с разными приветствиями, именами и вопросами.</p><p class="stk-reset" data-ce-tag="paragraph">Бывают ситуации, когда нужно внутри вложенного цикла прекратить выполнение текущего и того, в который он вложен. Если использовать для этого просто <u class="stk-reset">break</u>, мы выйдем только из текущего цикла, а внешний продолжит работать:</p><div class="stk-container sklbx-browser" data-ce-tag="container" data-container-name="Окно браузера"><div class="sklbx-browser__header">
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
</div><figure class="stk-reset stk-embed-figure stk-embed_rendered" data-ce-tag="embed"><code class="stk-reset stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;"><span class="hljs-keyword" style="color: #96cbfe;">int</span>[][] mas = {{<span class="hljs-number" style="color: #ff73fd;">3</span>, <span class="hljs-number" style="color: #ff73fd;">4</span>, <span class="hljs-number" style="color: #ff73fd;">6</span>}, {<span class="hljs-number" style="color: #ff73fd;">8</span>, <span class="hljs-number" style="color: #ff73fd;">5</span>, <span class="hljs-number" style="color: #ff73fd;">2</span>}, {<span class="hljs-number" style="color: #ff73fd;">1</span>, <span class="hljs-number" style="color: #ff73fd;">2</span>, <span class="hljs-number" style="color: #ff73fd;">6</span>}};
<span class="hljs-built_in">for</span> (<span class="hljs-keyword" style="color: #96cbfe;">int</span> i = <span class="hljs-number" style="color: #ff73fd;">0</span>; i < mas.length; i++) {
<span class="hljs-built_in">for</span> (<span class="hljs-keyword" style="color: #96cbfe;">int</span> j = <span class="hljs-number" style="color: #ff73fd;">0</span>; j < mas[i].length; j++) {
<span class="hljs-built_in">if</span> (mas[i][j] == <span class="hljs-number" style="color: #ff73fd;">5</span>) {
System.out.<span class="hljs-built_in">println</span>(<span class="hljs-string" style="color: #a8ff60;">"Число 5 найдено, его позиция "</span> + i + <span class="hljs-string" style="color: #a8ff60;">", "</span> + j);
<span class="hljs-built_in">break</span>;
}
System.out.<span class="hljs-built_in">println</span>(<span class="hljs-string" style="color: #a8ff60;">"Текущее число "</span> + mas[i][j] + <span class="hljs-string" style="color: #a8ff60;">". Позиция "</span> + i + <span class="hljs-string" style="color: #a8ff60;">", "</span> + j);
}
}
--<span class="hljs-literal" style="color: #c6c5fe;">OUTPUT</span>> Текущее число <span class="hljs-number" style="color: #ff73fd;">3.</span> Позиция <span class="hljs-number" style="color: #ff73fd;">0</span>, <span class="hljs-number" style="color: #ff73fd;">0</span>
--<span class="hljs-literal" style="color: #c6c5fe;">OUTPUT</span>> Текущее число <span class="hljs-number" style="color: #ff73fd;">4.</span> Позиция <span class="hljs-number" style="color: #ff73fd;">0</span>, <span class="hljs-number" style="color: #ff73fd;">1</span>
--<span class="hljs-literal" style="color: #c6c5fe;">OUTPUT</span>> Текущее число <span class="hljs-number" style="color: #ff73fd;">6.</span> Позиция <span class="hljs-number" style="color: #ff73fd;">0</span>, <span class="hljs-number" style="color: #ff73fd;">2</span>
--<span class="hljs-literal" style="color: #c6c5fe;">OUTPUT</span>> Текущее число <span class="hljs-number" style="color: #ff73fd;">8.</span> Позиция <span class="hljs-number" style="color: #ff73fd;">1</span>, <span class="hljs-number" style="color: #ff73fd;">0</span>
--<span class="hljs-literal" style="color: #c6c5fe;">OUTPUT</span>> Число <span class="hljs-number" style="color: #ff73fd;">5</span> найдено, его позиция <span class="hljs-number" style="color: #ff73fd;">1</span>, <span class="hljs-number" style="color: #ff73fd;">1</span>
--<span class="hljs-literal" style="color: #c6c5fe;">OUTPUT</span>> Текущее число <span class="hljs-number" style="color: #ff73fd;">1.</span> Позиция <span class="hljs-number" style="color: #ff73fd;">2</span>, <span class="hljs-number" style="color: #ff73fd;">0</span>
--<span class="hljs-literal" style="color: #c6c5fe;">OUTPUT</span>> Текущее число <span class="hljs-number" style="color: #ff73fd;">2.</span> Позиция <span class="hljs-number" style="color: #ff73fd;">2</span>, <span class="hljs-number" style="color: #ff73fd;">1</span>
--<span class="hljs-literal" style="color: #c6c5fe;">OUTPUT</span>> Текущее число <span class="hljs-number" style="color: #ff73fd;">6.</span> Позиция <span class="hljs-number" style="color: #ff73fd;">2</span>, <span class="hljs-number" style="color: #ff73fd;">2</span></pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure></div><p class="stk-reset" data-ce-tag="paragraph">Как видно из примера, ожидаемого результата (прекратить работу обоих циклов, если найдено число 5) мы не получили. В таких ситуациях можно использовать, например, проверку с помощью boolean-значения:</p><div class="stk-container sklbx-browser" data-ce-tag="container" data-container-name="Окно браузера"><div class="sklbx-browser__header">
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
</div><figure class="stk-reset stk-embed-figure stk-embed_rendered" data-ce-tag="embed"><code class="stk-reset stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;">int[][] mas = {{3, 4, 6}, {8, 5, 2}, {1, 2, 6}};
for (int i = 0; i < mas.length; i++) {
boolean<span class="hljs-built_in"> check </span>= false;
for (int j = 0; j < mas[i].length; j++) {
<span class="hljs-built_in"> if </span>(mas[i][j] == 5) {
System.out.println(<span class="hljs-string" style="color: #a8ff60;">"Число 5 найдено, его позиция "</span> + i + <span class="hljs-string" style="color: #a8ff60;">", "</span> + j);
<span class="hljs-built_in"> check </span>= true;
break;
}
System.out.println(<span class="hljs-string" style="color: #a8ff60;">"Текущее число "</span> + mas[i][j] + <span class="hljs-string" style="color: #a8ff60;">". Позиция "</span> + i + <span class="hljs-string" style="color: #a8ff60;">", "</span> + j);
}
<span class="hljs-built_in"> if </span>(check) {
break;
}
}
--OUTPUT> Текущее число 3. Позиция 0, 0
--OUTPUT> Текущее число 4. Позиция 0, 1
--OUTPUT> Текущее число 6. Позиция 0, 2
--OUTPUT> Текущее число 8. Позиция 1, 0
--OUTPUT> Число 5 найдено, его позиция 1, 1</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure></div><p class="stk-theme_26309__mb_0 stk-reset" data-ce-tag="paragraph">Мы вводим во внешний цикл логическую переменную <u class="stk-reset">check</u> и присваиваем ей значение <u class="stk-reset">false</u>. Если внутри второго цикла работа прекращается оператором <u class="stk-reset">break</u>, перед этим <u class="stk-reset">check</u> присваивается значение <u class="stk-reset">true</u>. После завершения работы вложенного цикла проверяем во внешнем, что находится в нашей переменной <u class="stk-reset">check</u>. Если <u class="stk-reset">true</u>, значит, вложенный цикл был прерван и требуется прервать текущий.</p><style data-stk-css="stkCpY91" media="all" class="">
[data-stk-css="stkCpY91"]:not(#stk):not(#stk):not(style) {
border-left: 4px solid #f5a74f;
padding: 20px;
background-color: rgba(254, 245, 224, 1)
}
</style></div></div><div class="stk-theme_26309__mb_15 stk-grid" data-ce-tag="grid"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><h2 class="stk-theme_26309__style_large_header stk-reset" data-ce-tag="paragraph" id="break_continue_with"><strong class="stk-reset">Конструкция break (continue) с указателем</strong></h2><p class="stk-reset" data-ce-tag="paragraph">Существует ещё одно решение, позволяющее прекратить работу нескольких вложенных циклов: операторы <u class="stk-reset">break</u> и <u class="stk-reset">continue</u> с указателем.</p><p class="stk-reset" data-ce-tag="paragraph">Синтаксис <u class="stk-reset">break</u> с указателем:</p><div class="stk-container sklbx-browser" data-ce-tag="container" data-container-name="Окно браузера"><div class="sklbx-browser__header">
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
</div><figure class="stk-reset stk-embed-figure stk-embed_rendered" data-ce-tag="embed"><code class="stk-reset stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;">указатель:цикл(...) {
....
<span class="hljs-selector-tag" style="color: #96cbfe;">break</span> указатель;
}</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure></div><p class="stk-reset" data-ce-tag="paragraph">Используем эту конструкцию для фрагмента кода из прошлого примера:</p><div class="stk-container sklbx-browser" data-ce-tag="container" data-container-name="Окно браузера"><div class="sklbx-browser__header">
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
</div><figure class="stk-reset stk-embed-figure stk-embed_rendered" data-ce-tag="embed"><code class="stk-reset stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;"><span class="hljs-keyword" style="color: #96cbfe;">int</span>[][] mas = {{<span class="hljs-number" style="color: #ff73fd;">3</span>, <span class="hljs-number" style="color: #ff73fd;">4</span>, <span class="hljs-number" style="color: #ff73fd;">6</span>}, {<span class="hljs-number" style="color: #ff73fd;">8</span>, <span class="hljs-number" style="color: #ff73fd;">5</span>, <span class="hljs-number" style="color: #ff73fd;">2</span>}, {<span class="hljs-number" style="color: #ff73fd;">1</span>, <span class="hljs-number" style="color: #ff73fd;">2</span>, <span class="hljs-number" style="color: #ff73fd;">6</span>}};
<span class="hljs-built_in">stop</span>:<span class="hljs-built_in">for</span> (<span class="hljs-keyword" style="color: #96cbfe;">int</span> i = <span class="hljs-number" style="color: #ff73fd;">0</span>; i < mas.length; i++) {
<span class="hljs-built_in">for</span> (<span class="hljs-keyword" style="color: #96cbfe;">int</span> j = <span class="hljs-number" style="color: #ff73fd;">0</span>; j < mas[i].length; j++) {
<span class="hljs-built_in">if</span> (mas[i][j] == <span class="hljs-number" style="color: #ff73fd;">5</span>) {
System.out.<span class="hljs-built_in">println</span>(<span class="hljs-string" style="color: #a8ff60;">"Число 5 найдено, его позиция "</span> + i + <span class="hljs-string" style="color: #a8ff60;">", "</span> + j);
<span class="hljs-built_in">break</span> <span class="hljs-built_in">stop</span>;
}
System.out.<span class="hljs-built_in">println</span>(<span class="hljs-string" style="color: #a8ff60;">"Текущее число "</span> + mas[i][j] + <span class="hljs-string" style="color: #a8ff60;">". Позиция "</span> + i + <span class="hljs-string" style="color: #a8ff60;">", "</span> + j);
}
}
--<span class="hljs-literal" style="color: #c6c5fe;">OUTPUT</span>> Текущее число <span class="hljs-number" style="color: #ff73fd;">3.</span> Позиция <span class="hljs-number" style="color: #ff73fd;">0</span>, <span class="hljs-number" style="color: #ff73fd;">0</span>
--<span class="hljs-literal" style="color: #c6c5fe;">OUTPUT</span>> Текущее число <span class="hljs-number" style="color: #ff73fd;">4.</span> Позиция <span class="hljs-number" style="color: #ff73fd;">0</span>, <span class="hljs-number" style="color: #ff73fd;">1</span>
--<span class="hljs-literal" style="color: #c6c5fe;">OUTPUT</span>> Текущее число <span class="hljs-number" style="color: #ff73fd;">6.</span> Позиция <span class="hljs-number" style="color: #ff73fd;">0</span>, <span class="hljs-number" style="color: #ff73fd;">2</span>
--<span class="hljs-literal" style="color: #c6c5fe;">OUTPUT</span>> Текущее число <span class="hljs-number" style="color: #ff73fd;">8.</span> Позиция <span class="hljs-number" style="color: #ff73fd;">1</span>, <span class="hljs-number" style="color: #ff73fd;">0</span>
--<span class="hljs-literal" style="color: #c6c5fe;">OUTPUT</span>> Число <span class="hljs-number" style="color: #ff73fd;">5</span> найдено, его позиция <span class="hljs-number" style="color: #ff73fd;">1</span>, <span class="hljs-number" style="color: #ff73fd;">1</span></pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure></div><p class="stk-reset" data-ce-tag="paragraph">В результате с помощью указателя (его имя может быть любым) и слова <u class="stk-reset">break</u> мы из внутреннего цикла перешли к внешнему и прекратили его работу. Эта конструкция применяется с различными типами циклов: <u class="stk-reset">for</u>, <u class="stk-reset">while</u>, <u class="stk-reset">do…while</u> и <u class="stk-reset">foreach</u>.</p><p class="stk-reset" data-ce-tag="paragraph">Вместо оператора <u class="stk-reset">break</u> можно использовать <u class="stk-reset">continue</u> с указателем. Отличие в том, что с помощью <u class="stk-reset">continue</u> мы не прекращаем указанный цикл, а переходим к его следующей итерации. Вот, например, исправленный код из прошлого примера, но с использованием <u class="stk-reset">continue</u>:</p><div class="stk-container sklbx-browser" data-ce-tag="container" data-container-name="Окно браузера"><div class="sklbx-browser__header">
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
</div><figure class="stk-reset stk-embed-figure stk-embed_rendered" data-ce-tag="embed"><code class="stk-reset stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;">cont:<span class="hljs-built_in">for</span> (<span class="hljs-keyword" style="color: #96cbfe;">int</span> i = <span class="hljs-number" style="color: #ff73fd;">0</span>; i < mas.length; i++) {
<span class="hljs-built_in">for</span> (<span class="hljs-keyword" style="color: #96cbfe;">int</span> j = <span class="hljs-number" style="color: #ff73fd;">0</span>; j < mas[i].length; j++) {
<span class="hljs-built_in">if</span> (mas[i][j] == <span class="hljs-number" style="color: #ff73fd;">5</span>) {
System.out.<span class="hljs-built_in">println</span>(<span class="hljs-string" style="color: #a8ff60;">"Число 5 найдено, его позиция "</span> + i + <span class="hljs-string" style="color: #a8ff60;">", "</span> + j);
<span class="hljs-built_in">continue</span> cont;
}
System.out.<span class="hljs-built_in">println</span>(<span class="hljs-string" style="color: #a8ff60;">"Текущее число "</span> + mas[i][j] + <span class="hljs-string" style="color: #a8ff60;">". Позиция "</span> + i + <span class="hljs-string" style="color: #a8ff60;">", "</span> + j);
}
}
--<span class="hljs-literal" style="color: #c6c5fe;">OUTPUT</span>> Текущее число <span class="hljs-number" style="color: #ff73fd;">3.</span> Позиция <span class="hljs-number" style="color: #ff73fd;">0</span>, <span class="hljs-number" style="color: #ff73fd;">0</span>
--<span class="hljs-literal" style="color: #c6c5fe;">OUTPUT</span>> Текущее число <span class="hljs-number" style="color: #ff73fd;">4.</span> Позиция <span class="hljs-number" style="color: #ff73fd;">0</span>, <span class="hljs-number" style="color: #ff73fd;">1</span>
--<span class="hljs-literal" style="color: #c6c5fe;">OUTPUT</span>> Текущее число <span class="hljs-number" style="color: #ff73fd;">6.</span> Позиция <span class="hljs-number" style="color: #ff73fd;">0</span>, <span class="hljs-number" style="color: #ff73fd;">2</span>
--<span class="hljs-literal" style="color: #c6c5fe;">OUTPUT</span>> Текущее число <span class="hljs-number" style="color: #ff73fd;">8.</span> Позиция <span class="hljs-number" style="color: #ff73fd;">1</span>, <span class="hljs-number" style="color: #ff73fd;">0</span>
--<span class="hljs-literal" style="color: #c6c5fe;">OUTPUT</span>> Число <span class="hljs-number" style="color: #ff73fd;">5</span> найдено, его позиция <span class="hljs-number" style="color: #ff73fd;">1</span>, <span class="hljs-number" style="color: #ff73fd;">1</span>
--<span class="hljs-literal" style="color: #c6c5fe;">OUTPUT</span>> Текущее число <span class="hljs-number" style="color: #ff73fd;">1.</span> Позиция <span class="hljs-number" style="color: #ff73fd;">2</span>, <span class="hljs-number" style="color: #ff73fd;">0</span>
--<span class="hljs-literal" style="color: #c6c5fe;">OUTPUT</span>> Текущее число <span class="hljs-number" style="color: #ff73fd;">2.</span> Позиция <span class="hljs-number" style="color: #ff73fd;">2</span>, <span class="hljs-number" style="color: #ff73fd;">1</span>
--<span class="hljs-literal" style="color: #c6c5fe;">OUTPUT</span>> Текущее число <span class="hljs-number" style="color: #ff73fd;">6.</span> Позиция <span class="hljs-number" style="color: #ff73fd;">2</span>, <span class="hljs-number" style="color: #ff73fd;">2</span></pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure></div><p class="stk-theme_26309__mb_05 stk-reset" data-ce-tag="paragraph">Примечания:</p><p class="stk-theme_26309__pad_hor_1 stk-reset" data-ce-tag="paragraph">1. Заключать название цикла в фигурные скобки не обязательно, если его тело состоит всего из одной строки. Но на этом лучше не экономить, потому что при расширении тела цикла (когда вы будете модифицировать программу) про недостающие скобки очень легко забыть. Зато вовремя расставленные {} делают ваш код более читаемым.</p><p class="stk-theme_26309__pad_hor_1 stk-reset" data-ce-tag="paragraph">2. Оператор <u class="stk-reset">break</u> с указателем применим не только к циклам, но и к простым блокам кода. Но делать это не рекомендуется, так как даже блок-схемами очень сложно описать такое поведение программы. Код, где используются <u class="stk-reset">break</u> с указателями, становится сложным для чтения и поддержки.</p><div class="stk-container sklbx-browser" data-ce-tag="container" data-container-name="Окно браузера"><div class="sklbx-browser__header">
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
<div class="sklbx-browser__button"></div>
</div><figure class="stk-reset stk-embed-figure stk-embed_rendered" data-ce-tag="embed"><code class="stk-reset stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: #000000; color: #f8f8f8;"><span class="hljs-keyword" style="color: #96cbfe;">int</span> a = <span class="hljs-number" style="color: #ff73fd;">5</span>;
System.out.<span class="hljs-built_in">println</span>(<span class="hljs-string" style="color: #a8ff60;">"Проверка переменной a"</span>);
<span class="hljs-built_in">stop</span>:{
<span class="hljs-built_in">if</span> (a == <span class="hljs-number" style="color: #ff73fd;">5</span>) {
<span class="hljs-built_in">break</span> <span class="hljs-built_in">stop</span>;
}
System.out.<span class="hljs-built_in">println</span>(<span class="hljs-string" style="color: #a8ff60;">"Переменная a не равна 5"</span>);
}
System.out.<span class="hljs-built_in">println</span>(<span class="hljs-string" style="color: #a8ff60;">"Проверка закончена"</span>);
--<span class="hljs-literal" style="color: #c6c5fe;">OUTPUT</span>> Проверка переменной a
--<span class="hljs-literal" style="color: #c6c5fe;">OUTPUT</span>> Проверка закончена</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure></div><p class="stk-theme_26309__pad_hor_1 stk-reset" data-ce-tag="paragraph">3. По этой же причине операторы <u class="stk-reset">break</u> и <u class="stk-reset">continue</u> с указателем не рекомендуется использовать и для циклов.</p></div></div><div class="stk-grid stk-theme_26309__mb_15" data-ce-tag="grid"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><h2 class="stk-theme_26309__style_large_header stk-reset" data-ce-tag="paragraph" id="last"><strong class="stk-reset">Подытожим</strong></h2><p class="stk-reset" data-ce-tag="paragraph">Мы выяснили, как циклы в Java помогают работать с массивами: перебирать значения, находить нужные элементы, запрашивать данные и выполнять другие повторяющиеся действия без дублирования кода — простым и понятным способом.</p><div class="stk-grid stk-theme_26309__mb_0" data-ce-tag="grid" data-stk-css="stkeJj9Y"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><p class="stk-reset " data-ce-tag="paragraph">Узнайте больше о циклах и других элементах Java на нашем курсе «<a href="https://skillbox.ru/course/profession-java-new2/" target="_blank" class="stk-reset">Профессия Java-разработчик</a>». Приходите! Вы научитесь программировать на одном из самых востребованных языков и сможете устроиться на высокооплачиваемую работу.</p></div></div><style data-stk-css="stkeJj9Y" media="all" class="">
[data-stk-css="stkeJj9Y"]:not(#stk):not(#stk):not(style) {
border-left: 4px solid #f5a74f;
padding: 20px;
background-color: rgba(254, 245, 224, 1)
}
</style></div></div><style data-stk-css="stk_491V" class="" media="all">[data-stk-css="stk_491V"]:not(#stk):not(#stk):not(style){background-color: rgba(241, 242, 246, 1)}</style></div><br></body></html>
</div>
</div>
</div>
</div>
<div class="col-xl-9 col-lg-8 col-poster">
<div class="article-preview-info">
</div>
</div>
<noindex>
<div class="share" data-nosnippet>
<button class="share__handler-btn ">
<span class="share__handler-icon">
<svg width="11" height="12" viewBox="0 0 11 12" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M11 4.99902L6 0V2.99805C2.688 2.99805 0 5.68505 0 8.99805V11.498H0.0980225C0.765022 8.91205 3.107 6.99805 5.901 6.99805H6.00098V9.99805L11 4.99902Z" fill="currentColor"/>
</svg>
</span>
<span class="share__handler-text">Поделиться</span>
</button>
<div class="share__list">
<a href="#" class="share__item" data-code="vk">
<span class="share__item-icon share__item-icon--vk">
<svg width="9" height="5" viewBox="0 0 9 5" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M4.04776 4.98054H4.53996C4.62377 4.97136 4.70279 4.9361 4.76621 4.87951C4.81226 4.81209 4.83594 4.73139 4.83369 4.64925C4.83369 4.64925 4.82574 3.94629 5.1314 3.84125C5.43701 3.73621 5.826 4.51998 6.23879 4.82297C6.39281 4.95308 6.59128 5.01558 6.79053 4.99669L7.89399 4.98054C7.89399 4.98054 8.47355 4.94415 8.19965 4.46339C7.98372 4.08315 7.70589 3.743 7.37799 3.45744C6.68338 2.77872 6.77865 2.8878 7.61219 1.71216C8.12024 0.997077 8.32269 0.556717 8.25918 0.370875C8.14651 0.254767 7.98299 0.205914 7.82655 0.241594L6.58018 0.249674C6.52565 0.241067 6.46984 0.251007 6.42141 0.277954C6.37298 0.314507 6.33466 0.363228 6.31025 0.419356C6.18259 0.772814 6.0287 1.11586 5.8498 1.44552C5.29807 2.43936 5.07579 2.49188 4.98451 2.43128C4.77416 2.28584 4.82574 1.85356 4.82574 1.54248C4.82574 0.580957 4.96468 0.176954 4.55979 0.0719133C4.36879 0.0254376 4.17259 0.00505841 3.97631 0.0113129C3.62834 -0.0214164 3.27745 0.017045 2.94429 0.124433C2.8014 0.197154 2.69423 0.358753 2.76171 0.370875C2.90334 0.385518 3.03406 0.454932 3.12688 0.564795C3.21268 0.750336 3.25481 0.953675 3.24993 1.15868C3.24993 1.15868 3.32535 2.29392 3.07925 2.43532C2.91254 2.53228 2.68232 2.33432 2.18616 1.4334C2.01958 1.11848 1.87243 0.793298 1.74557 0.459754C1.72231 0.404013 1.68704 0.354309 1.64236 0.314316C1.58589 0.272672 1.52066 0.245006 1.45184 0.233514L0.268986 0.241594C0.181167 0.241154 0.0958013 0.271066 0.0268587 0.326434C-0.00595087 0.396174 -0.00882613 0.476652 0.0189202 0.548633C0.0189202 0.548633 0.947737 2.83932 1.99563 3.99477C2.51 4.60651 3.2568 4.96526 4.04776 4.98054Z" fill="white"/>
</svg>
</span>
<span class="share__item-text">Vkontakte</span>
</a>
<a href="#" class="share__item" data-code="tw">
<span class="share__item-icon share__item-icon--tw">
<svg width="9" height="7" viewBox="0 0 9 7" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M5.52788 0.00144284V0H5.9158L6.05754 0.027414C6.15204 0.0452114 6.23783 0.068535 6.31491 0.0973918C6.39201 0.126249 6.46661 0.159917 6.53872 0.198391C6.61083 0.236864 6.67623 0.276066 6.73492 0.315982C6.79311 0.355422 6.84533 0.397265 6.89158 0.441509C6.93733 0.486237 7.0087 0.49778 7.10568 0.476138C7.20266 0.454495 7.3071 0.424433 7.419 0.38596C7.5309 0.347487 7.64156 0.304201 7.75097 0.256104C7.86039 0.208007 7.92703 0.177469 7.95091 0.164484C7.97428 0.151022 7.98671 0.143808 7.98821 0.142841L7.98969 0.140677L7.99715 0.13707L8.00461 0.133463L8.01207 0.129856L8.01953 0.126249L8.02102 0.124084L8.02326 0.122642L8.02551 0.121199L8.02699 0.119034L8.03445 0.11687L8.04191 0.115427L8.04043 0.126249L8.03818 0.13707L8.03445 0.147891L8.03072 0.158713L8.02699 0.165927L8.02326 0.173141L8.01953 0.183962C8.01705 0.191176 8.01456 0.200793 8.01207 0.212819C8.00959 0.224845 7.98596 0.272935 7.9412 0.357103C7.89644 0.441271 7.84049 0.526637 7.77335 0.613208C7.70621 0.699778 7.64604 0.765182 7.59283 0.809434C7.53911 0.854162 7.50355 0.885421 7.48614 0.903219C7.46874 0.921492 7.4476 0.938323 7.42273 0.953718L7.38543 0.977525L7.37797 0.981132L7.37051 0.984739L7.36902 0.986903L7.36678 0.988346L7.36454 0.989789L7.36305 0.991953L7.35559 0.99556L7.34813 0.999168L7.34664 1.00133L7.3444 1.00277L7.34216 1.00422L7.34067 1.00638L7.33918 1.00855L7.33694 1.00999L7.3347 1.01143L7.33321 1.0136H7.37051L7.57939 0.970311C7.71865 0.941454 7.85168 0.906588 7.9785 0.865705L8.17992 0.800777L8.2023 0.793563L8.21349 0.789956L8.22095 0.786348L8.22841 0.782741L8.23587 0.779134L8.24333 0.775527L8.25825 0.773363L8.27317 0.77192V0.786348L8.26944 0.787791L8.26571 0.789956L8.26423 0.79212L8.26198 0.793563L8.25974 0.795006L8.25825 0.79717L8.25677 0.799334L8.25452 0.800777L8.25228 0.80222L8.25079 0.804384L8.24931 0.806548L8.24706 0.807991L8.24333 0.815205L8.2396 0.82242L8.23736 0.823862C8.23637 0.825305 8.20479 0.866181 8.14262 0.946504C8.08046 1.0273 8.04689 1.06818 8.04191 1.06915C8.03694 1.07059 8.02997 1.0778 8.02102 1.09079C8.01257 1.10425 7.95985 1.15788 7.86287 1.25166C7.76589 1.34545 7.67091 1.42889 7.57791 1.502C7.48441 1.57558 7.43716 1.666 7.43616 1.77325C7.43467 1.88002 7.42895 2.00074 7.419 2.13541C7.40905 2.27007 7.3904 2.41555 7.36305 2.57186C7.3357 2.72817 7.29342 2.90492 7.23623 3.10211C7.17904 3.29929 7.10941 3.49168 7.02735 3.67925C6.94529 3.86681 6.8595 4.03514 6.76998 4.18424C6.68046 4.33334 6.5984 4.45958 6.5238 4.56299C6.4492 4.66639 6.37336 4.76378 6.29626 4.85516C6.21918 4.94654 6.12171 5.04947 6.00384 5.16393C5.88547 5.27791 5.82082 5.34044 5.80988 5.3515C5.79844 5.36208 5.74971 5.40152 5.66365 5.46981C5.57812 5.53858 5.48611 5.60736 5.38763 5.67614C5.28966 5.74443 5.19964 5.80143 5.11758 5.84711C5.03552 5.8928 4.93655 5.94498 4.82067 6.00366C4.70529 6.06282 4.58046 6.11765 4.44618 6.16815C4.3119 6.21865 4.17016 6.26554 4.02096 6.30882C3.87176 6.35211 3.72753 6.38578 3.58827 6.40982C3.44903 6.43387 3.29112 6.45431 3.11456 6.47114L2.84973 6.49639V6.5H2.36483V6.49639L2.30142 6.49279C2.25915 6.49038 2.22433 6.48797 2.19698 6.48557C2.16963 6.48317 2.06643 6.46994 1.88739 6.44589C1.70835 6.42185 1.56785 6.3978 1.4659 6.37375C1.36395 6.34971 1.21225 6.30401 1.01083 6.23668C0.809413 6.16935 0.637087 6.10129 0.493854 6.03252C0.351121 5.96422 0.261601 5.92094 0.225293 5.90266C0.189485 5.88487 0.149201 5.86275 0.10444 5.83629L0.0373001 5.79661L0.0358156 5.79445L0.0335701 5.79301L0.0313321 5.79156L0.0298401 5.7894L0.0223801 5.78579L0.0149201 5.78219L0.0134355 5.78002L0.01119 5.77858L0.00895204 5.77714L0.00746003 5.77497L0.00597548 5.77281L0.00373001 5.77137H0V5.75694L0.00746003 5.75838L0.0149201 5.76054L0.0484902 5.76415C0.0708703 5.76655 0.131796 5.77016 0.231261 5.77497C0.330733 5.77978 0.436412 5.77978 0.548312 5.77497C0.660213 5.77016 0.774605 5.75934 0.891474 5.74251C1.00835 5.72568 1.14636 5.69682 1.30551 5.65594C1.46466 5.61505 1.61087 5.56648 1.74416 5.51021C1.87695 5.45346 1.97144 5.41114 2.02764 5.38324C2.08334 5.35583 2.16838 5.30484 2.28277 5.2303L2.45435 5.11848L2.45584 5.11632L2.45808 5.11487L2.46033 5.11343L2.46181 5.11127L2.4633 5.1091L2.46554 5.10766L2.46779 5.10622L2.46927 5.10405L2.47673 5.10189L2.48419 5.10044L2.48568 5.09323L2.48792 5.08602L2.49017 5.08457L2.49165 5.08241L2.43197 5.0788C2.39219 5.0764 2.35364 5.07399 2.31634 5.07159C2.27904 5.06918 2.2206 5.05836 2.14103 5.03912C2.06146 5.01988 1.97567 4.99103 1.88366 4.95255C1.79165 4.91408 1.70213 4.86838 1.6151 4.81548C1.52807 4.76258 1.46515 4.71857 1.42636 4.68346C1.38807 4.64883 1.33833 4.59978 1.27716 4.53629C1.21648 4.47233 1.16376 4.40668 1.119 4.33934C1.07424 4.27202 1.03148 4.19433 0.990699 4.10633L0.928774 3.97503L0.925044 3.96421L0.921314 3.95339L0.919076 3.94617L0.917584 3.93896L0.928774 3.9404L0.939964 3.94256L1.02202 3.95339C1.07674 3.9606 1.16253 3.963 1.27939 3.9606C1.39627 3.9582 1.47709 3.95339 1.52185 3.94617C1.56661 3.93896 1.59396 3.93414 1.60391 3.93174L1.61883 3.92814L1.63748 3.92453L1.65613 3.92092L1.65762 3.91876L1.65986 3.91731L1.6621 3.91587L1.66359 3.91371L1.64867 3.9101L1.63375 3.90649L1.61883 3.90289L1.60391 3.89928L1.58899 3.89567C1.57904 3.89327 1.56164 3.88846 1.53677 3.88124C1.5119 3.87403 1.44476 3.84757 1.33535 3.80189C1.22594 3.7562 1.1389 3.71171 1.07424 3.66842C1.00943 3.62501 0.947626 3.57754 0.889235 3.5263C0.831047 3.47436 0.767145 3.40751 0.697513 3.32575C0.627888 3.24399 0.565724 3.149 0.511012 3.04079C0.456308 2.93257 0.415277 2.82917 0.387922 2.73058C0.360676 2.63256 0.3427 2.53235 0.334217 2.43119L0.320781 2.27969L0.328241 2.28113L0.335701 2.2833L0.343161 2.2869L0.350621 2.29051L0.358081 2.29412L0.365541 2.29772L0.481172 2.34822C0.558264 2.38189 0.653998 2.41075 0.768383 2.43479C0.882775 2.45884 0.951154 2.47207 0.973534 2.47447L1.0071 2.47808H1.07424L1.07276 2.47592L1.07051 2.47447L1.06828 2.47303L1.06678 2.47087L1.0653 2.4687L1.06305 2.46726L1.06082 2.46582L1.05932 2.46365L1.05186 2.46004L1.0444 2.45644L1.04292 2.45427L1.04067 2.45283L1.03844 2.45139L1.03694 2.44922L1.02948 2.44562L1.02202 2.44201L1.02054 2.43984C1.01905 2.43888 0.99766 2.42349 0.956376 2.39367C0.915592 2.36337 0.872823 2.32418 0.828063 2.27608C0.783303 2.22798 0.738543 2.17749 0.693783 2.12458C0.64894 2.07156 0.609 2.01483 0.574422 1.95505C0.539614 1.89493 0.502806 1.81846 0.464014 1.72564C0.425721 1.6333 0.396627 1.54023 0.376731 1.44645C0.356843 1.35266 0.345653 1.26008 0.343161 1.1687C0.340677 1.07732 0.343161 0.999168 0.350621 0.93424C0.358081 0.869312 0.373001 0.795965 0.395382 0.714206C0.417762 0.632448 0.450093 0.545877 0.492362 0.454495L0.555772 0.317425L0.559502 0.306604L0.563232 0.295782L0.565478 0.29434L0.566962 0.292175L0.568454 0.290011L0.570692 0.288568L0.572938 0.290011L0.574422 0.292175L0.575914 0.29434L0.578152 0.295782L0.580398 0.297225L0.581882 0.29939L0.583374 0.301554L0.585612 0.302997L0.589342 0.310211L0.593072 0.317425L0.595318 0.318868L0.596802 0.321032L0.697513 0.429245C0.764653 0.501387 0.844229 0.581948 0.936234 0.670921C1.02825 0.759894 1.07922 0.806065 1.08916 0.809434C1.09912 0.813279 1.11154 0.824338 1.12646 0.842619C1.14138 0.860417 1.19112 0.902981 1.27567 0.970311C1.36022 1.03764 1.47087 1.1158 1.60764 1.20477C1.74441 1.29375 1.89609 1.38152 2.0627 1.46809C2.22931 1.55466 2.40835 1.63281 2.59982 1.70255C2.7913 1.77229 2.92558 1.81798 3.00266 1.83962C3.07975 1.86127 3.21154 1.88892 3.39804 1.92259C3.58454 1.95625 3.72505 1.9779 3.81954 1.98751C3.91403 1.99713 3.97869 2.00266 4.0135 2.00411L4.06572 2.00555L4.06423 1.99473L4.06199 1.98391L4.04707 1.89373C4.03712 1.83361 4.03215 1.74944 4.03215 1.64123C4.03215 1.53302 4.04085 1.43322 4.05826 1.34184C4.07567 1.25046 4.10178 1.15788 4.13659 1.0641C4.1714 0.970311 4.20547 0.895038 4.23879 0.838291C4.27261 0.78202 4.31687 0.717814 4.37158 0.645671C4.42629 0.573529 4.49716 0.498985 4.58419 0.422031C4.67122 0.345077 4.77069 0.276542 4.88259 0.216426C4.99449 0.15631 5.09769 0.110615 5.19218 0.0793563C5.28668 0.0480971 5.36625 0.0276521 5.4309 0.0180355C5.49556 0.00841898 5.52788 0.00288568 5.52788 0.00144284Z" fill="white"/>
</svg>
</span>
<span class="share__item-text">Twitter</span>
</a>
<a href="#" class="share__item" data-code="tg">
<span class="share__item-icon share__item-icon--tg">
<svg width="10" height="7" viewBox="0 0 10 7" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M1.39589 3.04852C1.39589 3.04852 5.05491 1.51189 6.32392 0.9708C6.8104 0.754384 8.46012 0.0617918 8.46012 0.0617918C8.46012 0.0617918 9.22155 -0.241191 9.15809 0.494655C9.13692 0.797667 8.96773 1.85815 8.79854 3.00523C8.54472 4.62846 8.26976 6.40316 8.26976 6.40316C8.26976 6.40316 8.22746 6.90097 7.86791 6.98753C7.50836 7.0741 6.91613 6.68455 6.8104 6.59795C6.72577 6.53304 5.22411 5.5591 4.6742 5.08295C4.52614 4.9531 4.35695 4.6934 4.69533 4.39039C5.45676 3.67617 6.36622 2.78882 6.91613 2.2261C7.16995 1.96638 7.42374 1.36038 6.36622 2.09622C4.86456 3.15674 3.38403 4.15231 3.38403 4.15231C3.38403 4.15231 3.04561 4.36873 2.41111 4.17394C1.77657 3.97918 1.03631 3.71945 1.03631 3.71945C1.03631 3.71945 0.528726 3.39481 1.39589 3.04852Z" fill="white"/>
</svg>
</span>
<span class="share__item-text">Telegram</span>
</a>
<a href="#" class="share__item js-share-item-copy">
<span class="share__item-icon share__item-icon--copy">
<svg width="10" height="10" viewBox="0 0 10 10" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M4.19922 5.40327C4.37217 5.63449 4.59283 5.8258 4.84622 5.96425C5.09962 6.10269 5.37982 6.18501 5.66783 6.20564C5.95584 6.22627 6.24492 6.18471 6.51546 6.08379C6.78599 5.98287 7.03166 5.82495 7.2358 5.62074L8.44399 4.41255C8.81079 4.03277 9.01375 3.52412 9.00917 2.99615C9.00458 2.46818 8.79281 1.96313 8.41946 1.58978C8.04611 1.21644 7.54106 1.00466 7.01309 1.00008C6.48512 0.995488 5.97647 1.19845 5.59669 1.56525L4.904 2.25392" stroke="black" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M5.81002 4.59658C5.63707 4.36536 5.41641 4.17404 5.16302 4.0356C4.90962 3.89716 4.62942 3.81483 4.34141 3.79421C4.0534 3.77358 3.76432 3.81514 3.49379 3.91605C3.22325 4.01697 2.97758 4.17489 2.77344 4.3791L1.56525 5.58729C1.19845 5.96707 0.995488 6.47572 1.00008 7.0037C1.00466 7.53167 1.21644 8.03672 1.58978 8.41006C1.96313 8.78341 2.46818 8.99518 2.99615 8.99977C3.52412 9.00436 4.03277 8.80139 4.41255 8.43459L5.10122 7.74592" stroke="black" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</span>
<span class="share__item-text">Скопировать ссылку</span>
</a>
</div>
</div>
</noindex>
</div>
<section class="container inset" data-banner="223466" data-source="203703" data-format="horizontal">
<section class="container inset" data-format="horizontal">
<div class="row">
<div class="col-lg-8 col-sm-12">
<a data-source="203703" data-banner="223466" target="_blank" href="https://skillbox.ru/course/profession-java/" class="article-advert-banner__link courseLink" data-format="horizontal" data-type="horizontal" data-courseid="3254">
<div class="inset__wrapper" style="background-color: #BDDAEC;">
<div class="inset__content">
<h2 class="inset__header">Курс с помощью в трудоустройстве</h2>
<p class="inset__description">
Профессия Java-разработчик + ИИ
</p>
<ul class="inset__text" style="color:#000!important; list-style:'\2022 ' outside; margin-left:20px;">
<li style="list-style:'\2022 '; padding-left:10px; margin-bottom:6px">
Свободный график обучения</li>
<li style="list-style:'\2022 '; padding-left:10px; margin-bottom:6px">
Курс на 80% состоит из практики</li>
<li style="list-style:'\2022 '; padding-left:10px; margin-bottom:6px">
Нейросети в программе, чтобы быстрее писать и проверять код</li>
</ul>
<p class="inset__button article-advert-banner__link">
Подробнее
</p>
</div>
<div class="inset__image">
<img width="250" src="https://cdn.skillbox.pro/landgen/blocks/start-screen/384985/lg/b1d1fd93-6ae3-42eb-acf9-15ca4d0c26d1.webp" height="250" alt="">
</div>
</div>
</a>
</div>
</div>
</section> </section>
</section>
<div class="article-banner" data-banner="219298" data-source="203703" data-format="vertical" data-type="vertical">
<div class="row">
<div class="col-sm-4 col-sm-12">
<div class="inset__wrapper" style="background-color:#f2eeff;">
<div class="inset__content" >
<div class="inset__image" style="text-align: top;">
<img src="https://skillbox.ru/upload/setka_images/math-side.png" width="150" height="150" alt="">
</div>
<p class="inset__description" style="color:#000!important; padding-bottom:13px;">
Изучайте IT на практике — бесплатно</p>
<p class="inset__text" style="color:#000!important">
Курсы за <del>2990</del> 0 р. </p>
<ul class="inset__content" style="color:#007bff!important; list-style:'\2713 ' outside; margin-left:13px;">
<li style="list-style:'\2713 '; padding-left:2px; margin-bottom:6px">
<a data-source="203703" data-banner="219298" href="https://bootcamp.skillbox.ru/python-short/?utm_source=media&utm_medium=banners&utm_campaign=all_all_media_banners_invite_bootcamp-617_all_code_skillbox" target="_blank">Python</a>
</li>
<li style="list-style:'\2713 '; padding-left:2px; margin-bottom:6px">
<a href="https://bootcamp.skillbox.ru/qa-start/?utm_source=media&utm_medium=banners&utm_campaign=all_all_media_banners_invite_bootcamp-655_all_code_skillbox" target="_blank">Тестирование</a>
</li>
<li style="list-style:'\2713 '; padding-left:2px; margin-bottom:6px">
<a href="https://bootcamp.skillbox.ru/data-science/?utm_source=media&utm_medium=banners&utm_campaign=all_all_media_banners_invite_bootcamp-675_all_code_skillbox" target="_blank">Data Science</a>
</li>
<li style="list-style:'\2713 '; padding-left:2px; margin-bottom:6px">
<a href="https://bootcamp.skillbox.ru/java/?utm_source=media&utm_medium=banners&utm_campaign=all_all_media_banners_invite_bootcamp-682_all_code_skillbox" target="_blank">Java</a>
</li>
<li style="list-style:'\2713 '; padding-left:2px; margin-bottom:6px">
<a href="https://bootcamp.skillbox.ru/sql/?utm_source=media&utm_medium=banners&utm_campaign=all_all_media_banners_invite_bootcamp-695_all_code_skillbox" target="_blank">SQL и работа с данными</a>
</li>
</ul>
<a href="https://bootcamp.skillbox.ru/it-jobs/?utm_source=media&utm_medium=banners&utm_campaign=all_all_media_banners_invite_bootcamp-759_all_code_skillbox" class="inset__button article-advert-banner__link" target="_blank" style="color:#000; background-color:#ffafff">Я не знаю, с чего начать</a>
</div>
</div>
</div>
</div> </div>
<a data-source="203703" data-banner="223376" target="_blank" href="https://skillbox.ru/course/profession-java/" class="article-banner article-advert-banner__link courseLink" style="background-color: #E9E9F5;" data-format="top" data-type="top" data-courseid="3522">
<div class="article-banner__img">
<img src="https://cdn.skillbox.pro/landgen/blocks/market/385163/lg/24f0f2c3-860c-4d7e-9ad0-1b65adf3f355.webp" alt="">
</div>
<span class="article-banner__title">Курс с трудоустройством: «<u>Профессия Java-разработчик + ИИ</u>»</span>
<span class="article-banner__link">Узнать о курсе</span>
</a>
<section class="container news">
<div class="row">
<div class="col-lg-8 col-sm-12">
<h2 class="news__header">Новости</h2>
<div class="row">
<div class="col-xl-4 col-lg-6 col-md-4 col-12 news__item">
<a href="/media/code/google-predstavil-gemini-31-pro-s-uluchshennymi-rassuzhdeniyami/" class="news__text">
Google представил Gemini 3.1 Pro с улучшенными рассуждениями </a>
<span class="news__date">20 фев 2026</span>
</div>
<div class="col-xl-4 col-lg-6 col-md-4 col-12 news__item">
<a href="/media/code/xai-dobavila-v-grok-multiagentnuyu-sistemu-s-chetyrmya-pomoschnikami/" class="news__text">
xAI добавила в Grok мультиагентную систему с четырьмя помощниками </a>
<span class="news__date">18 фев 2026</span>
</div>
<div class="col-xl-4 col-lg-6 col-md-4 col-12 news__item">
<a href="/media/code/openai-predstavila-gpt-53-codex-spark-prodvinutuyu-model-dlya-programmistov/" class="news__text">
OpenAI представила GPT-5.3-Codex-Spark — продвинутую модель для программистов </a>
<span class="news__date">13 фев 2026</span>
</div>
</div>
</div>
</div>
</section>
<div class="slider-news-wrap media-catalog-content media-catalog-content--interesting">
<div class="container">
<div class="slider-news slider-news--article-slider js-slider-news">
<div class="slider-news__header">
<div class="slider-news__title" style="font-family: 'Graphik'; font-weight: 500;">
<span class="slider-news__title-notmob">Это интересно</span>
<span class="slider-news__title-mob">Это интересно</span>
</div>
<div class="slider-news__nav-wrapper">
<div class="slider-news__nav-button button-prev swiper-button-disabled" tabindex="0" role="button" aria-label="Previous slide" aria-disabled="true">
<svg viewBox="0 0 9 15" width="9" height="15" class="icon">
<use xlink:href="/static/svg/svg-symbols-site.svg#icon-arrow-chevron" href="/static/svg/svg-symbols-site.svg#icon-arrow-chevron"></use>
</svg>
</div>
<div class="slider-news__nav-button button-next" tabindex="0" role="button" aria-label="Next slide" aria-disabled="false">
<svg viewBox="0 0 9 15" width="9" height="15" class="icon">
<use xlink:href="/static/svg/svg-symbols-site.svg#icon-arrow-chevron" href="/static/svg/svg-symbols-site.svg#icon-arrow-chevron"></use>
</svg>
</div>
</div>
</div>
<div class="slider-news__carousel grad-end">
<div class="slider-news__container swiper-container swiper-container-initialized swiper-container-horizontal">
<div class="swiper-wrapper">
<div class="slider-news__slide swiper-slide swiper-slide-active" style="margin-right: 20px;">
<div class="news-block__item">
<div class="news-block__img" style="margin-bottom: 8px;">
<picture>
<img src="https://248006.selcdn.ru/main/iblock/f1f/f1f05b73644b83a05ad3685325a98308/1668de27023f167b5952dda8f6448bab.jpg">
</picture> </div>
<a href="/media/code/chto-takoe-big-data/" class="news-block__title" style="font-family: 'Graphik'; font-size: 14px; line-height: 19px; -webkit-line-clamp: 4; font-weight: 500">
Big data: что такое большие данные и как с ними работать </a>
</div>
</div>
<div class="slider-news__slide swiper-slide swiper-slide-active" style="margin-right: 20px;">
<div class="news-block__item">
<div class="news-block__img" style="margin-bottom: 8px;">
<picture>
<img src="https://248006.selcdn.ru/main/iblock/ea6/ea6a8323236c2561837dabaf3aaf6301/b1321ab07a64d09d9eba7a802ff1a19d.jpg">
</picture> </div>
<a href="/media/code/google-v-fevrale-2026-goda-vekovye-obligacii-privatnost-v-poiske-i-webmcp-dlya-agentov/" class="news-block__title" style="font-family: 'Graphik'; font-size: 14px; line-height: 19px; -webkit-line-clamp: 4; font-weight: 500">
Google в феврале 2026 года: вековые облигации, приватность в поиске и WebMCP для агентов </a>
</div>
</div>
<div class="slider-news__slide swiper-slide swiper-slide-active" style="margin-right: 20px;">
<div class="news-block__item">
<div class="news-block__img" style="margin-bottom: 8px;">
<picture>
<img src="https://248006.selcdn.ru/main/iblock/83f/83f5fbe33b9cb70f84fd1bade3ba0200/5fec158e3ca8709d41cf5f5a4a0b8430.png">
</picture> </div>
<a href="/media/code/razrabotchiki-skupayut-mac-mini-na-it-rynke-peregrev-a-iz-tyurmy-vyshel-izvestnyy-kriptohaker/" class="news-block__title" style="font-family: 'Graphik'; font-size: 14px; line-height: 19px; -webkit-line-clamp: 4; font-weight: 500">
Разработчики скупают Mac mini, на IT-рынке перегрев, а из тюрьмы вышел известный хакер </a>
</div>
</div>
<div class="slider-news__slide swiper-slide swiper-slide-active" style="margin-right: 20px;">
<div class="news-block__item">
<div class="news-block__img" style="margin-bottom: 8px;">
<picture>
<img src="https://248006.selcdn.ru/main/iblock/080/080d477242b414a3d2964960de55dcda/3fa556922b64473697f8960ca2f25218.png">
</picture> </div>
<a href="/media/code/story-yana-orlovceva/" class="news-block__title" style="font-family: 'Graphik'; font-size: 14px; line-height: 19px; -webkit-line-clamp: 4; font-weight: 500">
От пользователя до программиста 1С: история Яны Орловцевой </a>
</div>
</div>
<div class="slider-news__slide swiper-slide swiper-slide-active" style="margin-right: 20px;">
<div class="news-block__item">
<div class="news-block__img" style="margin-bottom: 8px;">
<picture>
<img src="https://248006.selcdn.ru/main/iblock/010/010725bb6a24b5d14ec80639eeb09031/ad6eb5f9c899b436ac21af1e7099be54.png">
</picture> </div>
<a href="/media/code/eslint-i-prettier/" class="news-block__title" style="font-family: 'Graphik'; font-size: 14px; line-height: 19px; -webkit-line-clamp: 4; font-weight: 500">
Гайд по ESLint и Prettier: от установки до автоматизации в VS Code </a>
</div>
</div>
</div>
<span class="swiper-notification" aria-live="assertive" aria-atomic="true"></span>
</div>
</div>
</div>
</div>
</div>
<div class="question">
<div class="container">
<div class="question__inner">
<div class="question__title">Понравилась статья?</div>
<a href="#" data-cur-url="/media/base/kak-ispolzovat-tsikly-v-yazyke-java-polnoe-rukovodstvo/"
class="question__btn js-modalLink" data-mfp-src="#modalAuth">Да</a>
</div>
</div>
</div>
</div>
<span
data-area="article-bottom"
data-current-url="/media/base/kak-ispolzovat-tsikly-v-yazyke-java-polnoe-rukovodstvo/"
data-id="203703">
</span>
</div>
<script type="application/ld+json">
{"@context":"http:\/\/schema.org","@type":"Article","url":"https:\/\/skillbox.ru\/media\/base\/kak-ispolzovat-tsikly-v-yazyke-java-polnoe-rukovodstvo\/","headline":"\u041a\u0430\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0446\u0438\u043a\u043b\u044b \u0432 \u044f\u0437\u044b\u043a\u0435 Java. \u041f\u043e\u043b\u043d\u043e\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e","articleSection":"\u041a\u043e\u0434","articleBody":"Цикл — это конструкция, \r\nкоторая позволяет многократно выполнять один и тот же участок кода. Например, вы хотите написать в консоль слово «Привет» 10 раз. Это можно сделать таким образом:\r\n\r\n\r\n\r\n\r\n\r\n\r\nSystem.out.println(\"Привет\"); System.out.println(\"Привет\"); \r\nSystem.out.println(\"Привет\"); System.out.println(\"Привет\"); System.out.println(\"Привет\"); System.out.println(\"Привет\");\r\n\r\nВроде бы и не очень \r\nсложно, но код постоянно дублируется. А если нам нужно повторить это 100 раз — не добавлять же в программу 100 одинаковых строк? В таких случаях на помощь приходят циклы.\r\n\r\nВот как можно \r\nзаписать этот же код с помощью одного из циклов (далее мы рассмотрим его подробнее) — получилось всего три строчки вместо десяти:\r\n\r\n\r\n\r\n\r\n\r\n\r\nfor (int i = 0; i < 10; i++) { System.out.println(\"Привет\"); \r\n}\r\n\r\nА вот вариант \r\nдля стократного вывода в консоль сообщения «Привет»:\r\n\r\n\r\n\r\n\r\n\r\n\r\nfor (int i = 0; i < 100; i++) { System.out.println(\"Привет\"); \r\n}\r\n\r\nКоличество \r\nстрок не увеличилось, мы просто заменили число 10 на число 100. Ровно так же будет и в случае с тысячей строк, и с миллионом, и с любым другим числом повторений.\r\n\r\nВ языке Java существует \r\nчетыре вида циклов:\r\n\r\n- циклы for;\r\n- циклы while;\r\n- циклы do…while;\r\n- и циклы foreach.\r\n\r\nНачнём рассматривать \r\nих по порядку.\r\n\r\nСодержание\r\n\r\n\r\n\r\n- Цикл for [ #for ] \r\n- Цикл while — цикл \r\nс предусловием [ #while_with ] \r\n- Цикл do…while — цикл \r\nс постусловием [ #do-while ] \r\n- Цикл foreach [ #foreach ] \r\n- Оператор break [ #break ]\r\n \r\n\r\n\r\n- Оператор continue [ #continue ]\r\n \r\n- Бесконечный \r\nцикл [ #limitless ] \r\n- Вложенные циклы \r\n[ #vloj ] \r\n- Конструкция \r\nbreak (continue) с указателем [ #break_continue_with ] \r\n- Подытожим [ #last ]\r\n \r\n\r\nЦикл for\r\n\r\nВ самом начале \r\nмы уже привели пример, в котором использовался именно цикл for — для вывода повторяющихся строк. Рассмотрим его подробнее.\r\n\r\nСинтаксис цикла \r\nfor имеет такой вид:\r\n\r\n\r\n\r\n\r\n\r\n\r\nfor (<начальное \r\nдействие>; <условие выполнения цикла>; <действие после итерации>) { <тело цикла> }\r\n\r\nЗдесь итерация — \r\nодно выполнение тела цикла. Смысл параметров, используемых в записи цикла:\r\n\r\n- <начальное действие> — \r\nв этом месте обычно объявляется счётчик цикла, но может быть произведено любое иное действие. Данная часть выполнится только единожды, перед началом цикла.\r\n- <условие выполнения \r\nцикла> — в этой части мы указываем условие для цикла. Если условие возвращает true, то цикл выполняет указанные в его цикле действия, иначе — прекращает работу.\r\n- <действие после \r\nитерации> — действие, которое будет выполнено после каждой итерации, если она не была прервана. Если в параметре <начальное действие> счётчик цикла обычно объявляется, то здесь он, как правило, увеличивается. Но может быть совершено и любое другое действие.\r\n\r\nЭти три части \r\nцикла указываются в круглых скобках цикла и обязательно разделяются знаком точки с запятой. За ними следует:\r\n\r\n- <тело цикла> — \r\nкод, который будет выполняться при каждой итерации.\r\n\r\nПоследовательность \r\nвыполнения цикла (пошаговый алгоритм работы):\r\n\r\nШаг 1. Выполняем \r\n<начальное действие>, переходим к шагу 2.\r\n\r\nШаг 2. Проверяем \r\n<условие выполнения цикла>. Если условие вернуло true, переходим к шагу 3, иначе — к шагу 5.\r\n\r\nШаг 3. Выполняем \r\nитерацию цикла (команды, которые записаны в строках <тело цикла>). Если выполнение итерации не было прервано, то переходим к шагу 4, иначе — к шагу 5.\r\n\r\nШаг 4. Выполняем \r\n<действие после итерации>, затем переходим к шагу 2.\r\n\r\nШаг 5. Выходим \r\nиз цикла, продолжаем работу программы.\r\n\r\nДля нашего примера \r\n(вывод повторяющихся строк) можно нарисовать такую блок-схему:\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n \r\n\r\n \r\n \r\n\r\n\r\n\r\n\r\nРазберём детально, \r\nкак это работает. Наш код:\r\n\r\n\r\n\r\n\r\n\r\n\r\nfor (int i = 0; i < 10; i++) { System.out.println(\"Привет\"); \r\n}\r\n\r\nЦикл объявляет \r\nпеременную i со значением 0, задаёт условие «пока i меньше 10», действие после итерации «увеличивать i на 1» и команду «выводить в консоль слово „Привет“» для каждой итерации.\r\n\r\nВ соответствии \r\nс синтаксисом <начальное действие> здесь — это объявление переменной i типа int и присвоение ей значения 0 (int i = 0), <условие выполнения цикла> — условие i < 10. <Действием после итерации> в примере является инкремент переменной i (i++). В процессе итерации <тела цикла> происходить вывод в консоль сообщения (System.out.println («Привет»).\r\n\r\nПопробуем слегка \r\nизменить наш код, чтобы вывести в консоль не приветствие, а значение счётчика i (оно должно увеличиваться с 0 до 9):\r\n\r\n\r\n\r\n\r\n\r\n\r\nfor (int i = 0; i < 10; i++) { System.out.println(i); } --OUTPUT> \r\n0 --OUTPUT> 1 --OUTPUT> 2 --OUTPUT> 3 --OUTPUT> 4 --OUTPUT> 5 --OUTPUT> 6 --OUTPUT> 7 --OUTPUT> 8 --OUTPUT> 9\r\n\r\nКак видим, последним \r\nчислом выводится 9, потому что в условии цикла указано, что он выполняется, пока счётчик i < 10. После завершения последней (десятой) итерации, когда i = 9, отработает инкремент и значение счётчика станет равно 10.\r\n\r\nЕсли нужно, мы можем \r\nсделать счётчик от 0 до 10. Для этого достаточно изменить условие c i < 10 на i <= 10. Но в этом случае на печать будет выведено не 10, а 11 строк:\r\n\r\n\r\n\r\n\r\n\r\n\r\nfor (int i = 0; i <= 10; i++) { System.out.println(i); } --OUTPUT> \r\n0 --OUTPUT> 1 --OUTPUT> 2 --OUTPUT> 3 --OUTPUT> 4 --OUTPUT> 5 --OUTPUT> 6 --OUTPUT> 7 --OUTPUT> 8 --OUTPUT> 9 --OUTPUT> 10Важные замечания насчёт цикла for:\r\n\r\n1. Переменную, \r\nкоторую мы объявляем в параметрах цикла, нельзя использовать за его пределами, так как область видимости i ограничена телом цикла. Такая запись, например, не будет скомпилирована:\r\n\r\n\r\n\r\n\r\n\r\n\r\nfor (int i = 0; i < 10; i++) { System.out.println(i); } System.out.println(i);\r\n\r\nЧтобы получить \r\nдоступ к значению переменной i за пределами цикла, её нужно объявить за пределами цикла. Например:\r\n\r\n\r\n\r\n\r\n\r\n\r\nint i = 0; for (; i < 10; i++) { System.out.println(i); } System.out.println(i);\r\n\r\n2. В цикле for ни одно \r\nдействие не является обязательным, главное — указать два знака точки с запятой. Это значит, что в цикле мы можем опустить:\r\n\r\n- условие (важно \r\nпроследить, чтобы цикл обязательно был прерван, иначе он станет бесконечным);\r\n- параметр, задающий \r\nдействие после итерации;\r\n- действие перед \r\nциклом;\r\n- два любых параметра \r\nлибо абсолютно все.\r\n\r\nПример:\r\n\r\n\r\n\r\n\r\n\r\n\r\nint i = 0; for (; i < 10; i++) { System.out.println(i); }\r\n\r\nСледующий вариант \r\nэквивалентен, так как инкремент i++ происходит прямо в конце итерации:\r\n\r\n\r\n\r\n\r\n\r\n\r\nint i = 0; for (; i < 10;) { System.out.println(i); i++; }\r\n\r\nЕщё вариант, \r\nтоже аналогичный первому, так как мы поставили условие прерывания цикла break (о прерываниях поговорим позже):\r\n\r\n\r\n\r\n\r\n\r\n\r\nint i = 0; for (;;) { if (i < 10) { break; } System.out.println(i); \r\ni++; }\r\n\r\n3. Первым параметром \r\nцикла <начальное действие> может быть всё что угодно. Например, вызов метода:\r\n\r\n\r\n\r\n\r\n\r\n\r\nint i = 0; for (someMethod(); i < 10; i++) { \/\/code }\r\n\r\nМы можем даже \r\nувеличить число, поместив прямо здесь инкремент i++ (в этом случае начальное значение i в цикле будет равно 1):\r\n\r\n\r\n\r\n\r\n\r\n\r\nint i = 0; for (i++; i < 10; i++) { \/\/code }\r\n\r\nАналогично \r\nможно делать всё, что пожелаем, и в <действие после итерации>. Например, тоже вызвать какой-то метод:\r\n\r\n\r\n\r\n\r\n\r\n\r\nint i = 0; for (i++; i < 10; someMethod()) { \/\/code i++; }\r\n\r\nВажно понимать, \r\nчто между собой параметры for никак не связаны. Поэтому в качестве условия цикла может выступать любое выражение. Пример:\r\n\r\n\r\n\r\n\r\n\r\n\r\nint any = 0; for (int i = 0; any != 10; i++) { any += 2; }\r\n\r\n4. Первое действие \r\nцикла for может состоять из любого числа команд либо объявления любого количества переменных одного типа. Например, здесь мы вызываем метод, увеличиваем any на 2 и увеличиваем i на 1:\r\n\r\n\r\n\r\n\r\n\r\n\r\nint any = 0; int i = 0; for (someMethod(), any += 2, i++; i < 10; i++) \r\n{ \/\/code }\r\n\r\nА тут первым \r\nдействием объявляем три переменные i, c, g типа int со значениями 0, 5, 10 — их все можно использовать в цикле. Но в нашем случае изменяться будет только переменная i:\r\n\r\n\r\n\r\n\r\n\r\n\r\nfor (int i = 0, c = 5, g = 10; i < 10; i++) { System.out.println(i); \r\nSystem.out.println(c); System.out.println(g); }\r\n\r\nПри желании \r\nможно изменять все три переменных, причём разными способами, в параметре <действие после итерации> цикла for. Например:\r\n\r\n\r\n\r\n\r\n\r\n\r\nfor (int i = 0, c = 5, g = 10; i < 10; i++, c +=2, g -= 100) { System.out.println(i); \r\nSystem.out.println(c); System.out.println(g); }\r\n\r\nИли, в дополнение \r\nк этому, даже вызвать метод в третьей части цикла:\r\n\r\n\r\n\r\n\r\n\r\n\r\nfor (int i = 0, c = 5, g = 10; i < 10; i++, c +=2, g -= 100, someMethod()) \r\n{ System.out.println(i); System.out.println(c); System.out.println(g); }\r\n\r\nНесмотря на то, \r\nчто параметрами <начальное действие> и <действие после итерации> может быть всё что угодно, чаще всего цикл for применяют в следующих случаях:\r\n\r\n- если требуется \r\nсчитать число итераций цикла или нужно использовать значение счётчика итераций — то есть <начальным действием> является объявление переменной, а в <действии после итерации> происходит инкремент\/декремент этой переменной;\r\n- когда число \r\nитераций известно заранее — происходит обход массива, работа с символами строки, коллекцией и тому подобное.\r\n\r\nЕсли же эта \r\nинформация нам не нужна или количество итераций нельзя предсказать заранее, то обычно используют цикл while (do…while)\r\n\r\nЦикл while (с предусловием)\r\n\r\nЭтот цикл имеет \r\nследующую синтаксическую структуру:\r\n\r\n\r\n\r\n\r\n\r\n\r\nwhile (<условие выполнения \r\nцикла>) { <тело цикла> }\r\n\r\nВ целом он не сильно \r\nотличается от цикла for — цикл while не имеет параметров <начальное действие> и <действие после итерации>, а содержит лишь условие. Это позволяет выполнять <тело цикла> до тех пор, пока выражение в условии возвращает true перед каждой итерацией.\r\n\r\nРанее мы рассматривали \r\nпример цикла for, в котором не были указаны параметры <начальное действие> и <действие после итерации>:\r\n\r\n\r\n\r\n\r\n\r\n\r\nint i = 0; for (; i < 10;) { System.out.println(i); i++; }\r\n\r\nЕго несложно \r\nпереписать с использованием while:\r\n\r\n\r\n\r\n\r\n\r\n\r\nint i = 0; while (i < 10) { System.out.println(i); i++; }\r\n\r\nГрафически \r\nалгоритм работы можно представить такой схемой:\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n \r\n\r\n \r\n \r\n\r\n\r\n\r\n\r\nВ отличие от for, \r\nв цикле while нельзя не указывать параметр <условие выполнения цикла>, то есть запрещена такая запись:\r\n\r\n\r\n\r\n\r\n\r\n\r\nint i = 0; while () { System.out.println(i); i++; }\r\n\r\n\r\n\r\nЦикл while называется \r\nциклом с предусловием, потому что первый раз условие выполнения проверяется перед первой итерацией. Если проверка вернёт значение false, то ни одна итерация не будет выполнена.\r\n\r\nЦикл while обычно \r\nиспользуется в случаях, когда:\r\n\r\n- число итераций \r\nне известно заранее;\r\n- счётчик итераций \r\nне требуется по логике программы.\r\n\r\nЦикл do…while (с постусловием)\r\n\r\nКроме цикла \r\nс предусловием while существует вариант, который выполняет хотя бы одну итерацию, а после этого проверяет условие. Это цикл do…while, который называется циклом с постусловием.\r\n\r\nСинтаксис do…while:\r\n\r\n\r\n\r\n\r\n\r\n\r\ndo { <тело цикла> \r\n} while (<условие выполнения цикла>);\r\n\r\nСначала отрабатывает \r\nдействие в <теле цикла>, а потом проверяется <условие выполнения цикла>. Если оно возвращает true, то цикл выполнит действие повторно.\r\n\r\nПредположим, \r\nчто нам обязательно нужно вывести на консоль слово «Привет» хотя бы один раз. Для этого можно использовать следующую конструкцию:\r\n\r\n\r\n\r\n\r\n\r\n\r\nint i = 0; int b = 1; do { System.out.println(\"Привет!\"); \r\ni++; } while (i < b);\r\n\r\nЦикл do…while редко \r\nприменяется на практике, но его всё же используют:\r\n\r\n- если нужно сделать \r\nчто-то хотя бы единожды — например, вывести слово «Привет», как выше;\r\n- если значение, \r\nот которого зависит условие, инициализируется внутри тела цикла.\r\n\r\nПример кода:\r\n\r\n\r\n\r\n\r\n\r\n\r\nint r; do { r = new Random().nextInt(); System.out.println(r); } while \r\n(r > 50);\r\n\r\nС помощью конструкции \r\nnew Random().nextInt() здесь берётся очередное случайное число. Итог работы таков: цикл будет находить и выводить на консоль случайные числа до тех пор, пока их значение не будет превышать 50.\r\n\r\nДиаграмма работы \r\nцикла do…while:\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n \r\n\r\n \r\n \r\n\r\n\r\n\r\n\r\nЦикл foreach\r\n\r\nДля обхода массива \r\nили коллекции можно применять циклы for:\r\n\r\n\r\n\r\n\r\n\r\n\r\nint[] mas = {4, 0, 3, 4, 5}; for (int i = 0; i < mas.length; i++) { \r\nSystem.out.println(mas[i]); }\r\n\r\nСинтаксис цикла \r\nforeach:\r\n\r\n\r\n\r\n\r\n\r\n\r\nList<String> list = new ArrayList<String>(); list.add(\"s1\"); \r\nlist.add(\"s2\"); list.add(\"s3\"); list.add(\"s4\"); for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i)); }\r\n\r\nС его помощью \r\nможно переписать приведённые примеры обхода массива и коллекции. Получится такой код:\r\n\r\n\r\n\r\n\r\n\r\n\r\nint[] mas = {4, 0, 3, 4, 5}; for (int ma : mas) { System.out.println(ma); \r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\nList<String> list = new ArrayList<String>(); list.add(\"s1\"); \r\nlist.add(\"s2\"); list.add(\"s3\"); list.add(\"s4\"); for (String s : list) { System.out.println(s); }\r\n\r\nРезультат выполнения \r\nобоих вариантов будет одинаковым, но конструкция сильно упростилась — теперь не нужно следить за счётчиком итераций. Цикл foreach сам поочерёдно берёт значения из массива\/коллекции и помещает их в указанную перед двоеточием переменную.\r\n\r\nВажно, чтобы \r\nтип переменной, указанной перед двоеточием, совпадал с типом массива\/коллекции.\r\n\r\n\r\n\r\nВнимание: далее \r\nматериал повышенной сложности (необходимо знание интерфейсов).\r\n\r\nНа самом деле \r\nпараметром после двоеточия может быть любой класс, который имплементирует интерфейс Iterable (а все коллекции-наследники java.util.Collection его имплементируют) и реализует метод iterator(). Мы можем даже самостоятельно создать класс, который будет передаваться в качестве параметра.\r\n\r\nПример такого \r\nкода:\r\n\r\n\r\n\r\n\r\n\r\n\r\npublic class Main { public static void main(String[] args) { MyIterable \r\nmyIterable = new MyIterable(); for (Integer s : myIterable) { System.out.println(s); } } } class MyIterable implements Iterable<Integer> { private int[] mas = {1, 2, 3, 4}; @Override public Iterator<Integer> iterator() { return new Iterator<Integer>() { private int pos = 0; @Override public boolean hasNext() { return pos < mas.length; } @Override public Integer next() { int predPos = pos; pos++; return mas[predPos]; } }; } }\r\n\r\nМы объявляем \r\nкласс MyIterable, в нём создаём массив, по которому будем итерироваться. Реализуем метод iterator(), возвращающий объект интерфейса Iterator, а также hasNext и next. Метод hasNext вызывается перед каждой итерацией и проверяет, есть ли следующий элемент. Если не дошли до конца массива, то hasNext вернёт true.\r\n\r\nКогда метод \r\nhasNext возвращает true, цикл foreach вызывает метод next, который должен вернуть следующий элемент. В нашем случае он, кроме того, увеличивает на 1 текущую позицию элемента массива для последующей итерации.\r\n\r\nПод капотом \r\nцикл foreach выглядит как простой while, но такой код будет более громоздким:\r\n\r\n\r\n\r\n\r\n\r\n\r\nMyIterable myIterable = new MyIterable(); Iterator<Integer> iterator \r\n= myIterable.iterator(); while (iterator.hasNext()) { Integer s = iterator.next(); System.out.println(s); }\r\n\r\nОператор break\r\n\r\n\r\n\r\nВнимание: для \r\nосвоения этого раздела необходимо понимание принципов работы с массивами.\r\n\r\nНе всегда нужно, \r\nчтобы цикл отработал до конца, — бывают ситуации, когда нам требуется его прервать. Допустим, мы обходим некий массив и хотим остановить выполнение цикла, если в нём найдено число 5. Для таких ситуаций существует оператор break, который полностью прекращает работу цикла.\r\n\r\nВот варианты \r\nкода для всех четырёх типов циклов (для цикла do…while дополнительное важное условие — размер массива должен быть больше 0):\r\n\r\n\r\n\r\n\r\n\r\n\r\nint[] mas = {4, 6, 32, 9, 5, 24, 4}; for (int i = 0; i < mas.length; \r\ni++) { if (mas[i] == 5) { System.out.println(\"Число 5 найдено, его позиция \" + i); break; } System.out.println(\"Текущее число \" + mas[i] + \". Позиция \" + i); }\r\n\r\n\r\n\r\n\r\n\r\n\r\nint[] mas = {4, 6, 32, 9, 5, 24, 4}; int i = 0; while (i < mas.length) \r\n{ if (mas[i] == 5) { System.out.println(\"Число 5 найдено, его позиция \" + i); break; } System.out.println(\"Текущее число \" + mas[i] + \". Позиция \" + i); i++; }\r\n\r\n\r\n\r\n\r\n\r\n\r\nint[] mas = {4, 6, 32, 9, 5, 24, 4}; int i = 0; do { if (mas[i] == 5) { \r\nSystem.out.println(\"Число 5 найдено, его позиция \" + i); break;\r\n\r\n\r\n\r\n\r\n\r\n\r\nint[] mas = {4, 6, 32, 9, 5, 24, 4}; int i = 0; for (int s : mas) { if \r\n(s == 5) { System.out.println(\"Число 5 найдено, его позиция \" + i); break; } System.out.println(\"Текущее число \" + s + \". Позиция \" + i); i++; }\r\n\r\nЕсли выполнить \r\nэти фрагменты, во всех вариантах на выводе будет одно и то же:\r\n\r\n\r\n\r\n\r\n\r\n\r\n--OUTPUT> Текущее число \r\n4. Позиция 0 --OUTPUT> Текущее число 6. Позиция 1 --OUTPUT> Текущее число 32. Позиция 2 --OUTPUT> Текущее число 9. Позиция 3 --OUTPUT> Число 5 найдено, его позиция 4\r\n\r\nВыполнение \r\nциклов полностью прекращается, как только любой из них доходит до позиции 4, где и расположено искомое число 5. Это происходит потому, что везде задано условие: если текущий элемент равен 5, вызывается оператор break.\r\n\r\nОператор continue\r\n\r\nБывают ситуации, \r\nкогда по логике программы требуется пропустить текущую итерацию. Предположим, нужно, чтобы в консоль выводилась надпись «Текущее число <число>. Позиция <позиция>», но при условии, что текущий элемент массива не равен 5. Это можно сделать с помощью оператора continue — он позволяет сразу перейти к следующей итерации.\r\n\r\n\r\n\r\nВажно: при вызове \r\nэтого оператора цикл прекращает текущую итерацию, выполняет <действие после итерации> и проверяет условие цикла. Если проверка вернула true, то переходит к следующей итерации, а иначе — заканчивается.\r\n\r\nПримеры кода \r\nдля всех четырёх типов циклов:\r\n\r\n\r\n\r\n\r\n\r\n\r\nint[] mas = {4, 6, 32, 9, 5, 24, 4}; for (int i = 0; i < mas.length; \r\ni++) { if (mas[i] == 5) { continue; } System.out.println(\"Текущее число \" + mas[i] + \". Позиция \" + i); }\r\n\r\n\r\n\r\n\r\n\r\n\r\nint[] mas = {4, 6, 32, 9, 5, 24, 4}; int i = 0; while (i < mas.length) \r\n{ if (mas[i] == 5) { i++; continue; } System.out.println(\"Текущее число \" + mas[i] + \". Позиция \" + i); i++; }\r\n\r\n\r\n\r\n\r\n\r\n\r\nint[] mas = {4, 6, 32, 9, 5, 24, 4}; int i = 0; do { if (mas[i] == 5) { \r\ni++; continue; } System.out.println(\"Текущее число \" + mas[i] + \". Позиция \" + i); i++; } while (i < mas.length);\r\n\r\n\r\n\r\n\r\n\r\n\r\nint[] mas = {4, 6, 32, 9, 5, 24, 4}; int i = 0; for (int s : mas) { if \r\n(s == 5) { i++; continue; } System.out.println(\"Текущее число \" + s + \". Позиция \" + i); i++; }\r\n\r\nВывод для всех \r\nфрагментов будет одинаковым:\r\n\r\n\r\n\r\n\r\n\r\n\r\n--OUTPUT> Текущее число \r\n4. Позиция 0 --OUTPUT> Текущее число 6. Позиция 1 --OUTPUT> Текущее число 32. Позиция 2 --OUTPUT> Текущее число 9. Позиция 3 --OUTPUT> Текущее число 24. Позиция 5 --OUTPUT> Текущее число 4. Позиция 6\r\n\r\nТаким образом, \r\nмы пропускаем четвёртую позицию в массиве и не выводим число 5 в консоль.\r\n\r\n\r\n\r\nПрервать выполнение \r\nцикла может также оператор return, но этот оператор также и выйдет из метода, который выполняется в текущий момент.\r\n\r\nБесконечный \r\nцикл\r\n\r\nБесконечный \r\nцикл может понадобиться, если мы не знаем условие выхода (оно определено внутри цикла) или условий несколько, либо если нужно, чтобы цикл не заканчивался вовсе.\r\n\r\nЕсть три варианта \r\nтого, как создать такой цикл:\r\n\r\n\r\n\r\n\r\n\r\n\r\nwhile (true) { <тело цикла> \r\n}\r\n\r\nили\r\n\r\n\r\n\r\n\r\n\r\n\r\nfor (;;) { <тело цикла> \r\n}\r\n\r\nили\r\n\r\n\r\n\r\n\r\n\r\n\r\ndo { <тело цикла> \r\n} while(true);\r\n\r\nПример использования \r\nбесконечного цикла:\r\n\r\n\r\n\r\n\r\n\r\n\r\nwhile (true) { int randomNumber = new Random().nextInt(); if (randomNumber \r\n== 5) { break; } System.out.println(\"Рандомное число не равно 5\"); }\r\n\r\nС помощью конструкции \r\nnew Random ().nextInt () мы на каждой итерации получаем случайное число и записываем его в переменную randomNumber. Если рандомное число равно 5, то выходим из цикла.\r\n\r\nЦикл ниже не закончит \r\nработу никогда — строка «Привет!» будет выводиться в консоль бесконечно:\r\n\r\n\r\n\r\n\r\n\r\n\r\nwhile (true) { System.out.println(\"Привет!\"); \r\n}\r\n\r\nС точки зрения \r\nэффективности исполнения не имеет значения, какой из вариантов бесконечного цикла мы используем. Если взглянуть на байт-код, для JVM все эти фрагменты будут выглядеть одинаково:\r\n\r\n\r\n\r\nL0\r\n\r\nLINENUMBER <line number> L0\r\n\r\nFRAME SAME\r\n\r\nGOTO L0\r\n\r\nПоэтому используйте \r\nциклы, которые лучше подходят для решения вашей задачи, чтобы код получался максимально понятным для чтения и удобным для дальнейшего расширения.\r\n\r\nВложенные циклы\r\n\r\n\r\n\r\nВнимание: для \r\nосвоения этого раздела необходимо понимание принципов работы с массивами.\r\n\r\nЧасто используют \r\nциклы, один из которых выполняется в теле другого, — их называют вложенными. Это может потребоваться для обхода двумерных массивов, генерации данных и много чего ещё. Вкладывать друг в друга можно разные циклы неограниченное количество раз.\r\n\r\nВот примеры \r\nкода:\r\n\r\n\r\n\r\n\r\n\r\n\r\nchar[][] chars = {{'x', ' ', ' ', ' ', 'x'}, {' ', 'x', ' ', 'x', ' '}, \r\n{' ', ' ', 'x', ' ', ' '}, {' ', 'x', ' ', 'x', ' '}, {'x', ' ', ' ', ' ', 'x'}}; for (int i = 0; i < chars.length; i++) { for (int j = 0; j < chars[i].length; j++) { System.out.print(chars[i][j]); } System.out.println();\r\n\r\nВ этом фрагменте \r\nбыл создан двумерный массив chars, по которому мы прошли с помощью одного цикла for, вложенного в другой — тоже for. Для каждой итерации внешнего цикла выполняются все итерации вложенного в него внутреннего. Таким образом, для массива размерности 5 на 5 будет совершено 25 итераций — внешний цикл идёт по строкам, внутренний — по столбцам.\r\n\r\nЕщё пример, но теперь \r\nуже трёх вложенных циклов:\r\n\r\n\r\n\r\n\r\n\r\n\r\nString[] names = {\"Иван\", \"Сергей\", \r\n\"Кирилл\"}; String[] phrases = {\"Как дела?\", \"Как у тебя погода?\"}; String[] greetings = {\"Привет, \", \"Добрый день, \"}; int i = 0; while (i < greetings.length) { for (int j = 0; j < names.length; j++) { System.out.println(greetings[i] + names[j]); for (String s : phrases) { System.out.println(s); } System.out.println(); } i++; } --OUTPUT> Привет, Иван --OUTPUT> Как дела? --OUTPUT> Как у тебя погода? --OUTPUT> --OUTPUT> Привет, Сергей --OUTPUT> Как дела? --OUTPUT> Как у тебя погода? --OUTPUT> --OUTPUT> Привет, Кирилл --OUTPUT> Как дела? --OUTPUT> Как у тебя погода? --OUTPUT> --OUTPUT> Добрый день, Иван --OUTPUT> Как дела? --OUTPUT> Как у тебя погода? --OUTPUT> --OUTPUT> Добрый день, Сергей --OUTPUT> Как дела? --OUTPUT> Как у тебя погода? --OUTPUT> --OUTPUT> Добрый день, Кирилл --OUTPUT> Как дела? --OUTPUT> Как у тебя погода? \r\n\r\nТут мы прошлись \r\nпо значениям из трёх массивов и сгенерировали шесть сообщений с разными приветствиями, именами и вопросами.\r\n\r\nБывают ситуации, \r\nкогда нужно внутри вложенного цикла прекратить выполнение текущего и того, в который он вложен. Если использовать для этого просто break, мы выйдем только из текущего цикла, а внешний продолжит работать:\r\n\r\n\r\n\r\n\r\n\r\n\r\nint[][] mas = {{3, 4, 6}, {8, 5, 2}, {1, 2, 6}}; for (int i = 0; i < \r\nmas.length; i++) { for (int j = 0; j < mas[i].length; j++) { if (mas[i][j] == 5) { System.out.println(\"Число 5 найдено, его позиция \" + i + \", \" + j); break; } System.out.println(\"Текущее число \" + mas[i][j] + \". Позиция \" + i + \", \" + j); } } --OUTPUT> Текущее число 3. Позиция 0, 0 --OUTPUT> Текущее число 4. Позиция 0, 1 --OUTPUT> Текущее число 6. Позиция 0, 2 --OUTPUT> Текущее число 8. Позиция 1, 0 --OUTPUT> Число 5 найдено, его позиция 1, 1 --OUTPUT> Текущее число 1. Позиция 2, 0 --OUTPUT> Текущее число 2. Позиция 2, 1 --OUTPUT> Текущее число 6. Позиция 2, 2\r\n\r\nКак видно из примера, \r\nожидаемого результата (прекратить работу обоих циклов, если найдено число 5) мы не получили. В таких ситуациях можно использовать, например, проверку с помощью boolean-значения:\r\n\r\n\r\n\r\n\r\n\r\n\r\nint[][] mas = {{3, 4, 6}, {8, 5, 2}, {1, 2, 6}}; for (int i = 0; i < \r\nmas.length; i++) { boolean check = false; for (int j = 0; j < mas[i].length; j++) { if (mas[i][j] == 5) { System.out.println(\"Число 5 найдено, его позиция \" + i + \", \" + j); check = true; break; } System.out.println(\"Текущее число \" + mas[i][j] + \". Позиция \" + i + \", \" + j); } if (check) { break; } } --OUTPUT> Текущее число 3. Позиция 0, 0 --OUTPUT> Текущее число 4. Позиция 0, 1 --OUTPUT> Текущее число 6. Позиция 0, 2 --OUTPUT> Текущее число 8. Позиция 1, 0 --OUTPUT> Число 5 найдено, его позиция 1, 1\r\n\r\nМы вводим во внешний \r\nцикл логическую переменную check и присваиваем ей значение false. Если внутри второго цикла работа прекращается оператором break, перед этим check присваивается значение true. После завершения работы вложенного цикла проверяем во внешнем, что находится в нашей переменной check. Если true, значит, вложенный цикл был прерван и требуется прервать текущий.\r\n\r\nКонструкция \r\nbreak (continue) с указателем\r\n\r\nСуществует \r\nещё одно решение, позволяющее прекратить работу нескольких вложенных циклов: операторы break и continue с указателем.\r\n\r\nСинтаксис break с указателем:\r\n\r\n\r\n\r\n\r\n\r\n\r\nуказатель:цикл(...) \r\n{ .... break указатель; }\r\n\r\nИспользуем \r\nэту конструкцию для фрагмента кода из прошлого примера:\r\n\r\n\r\n\r\n\r\n\r\n\r\nint[][] mas = {{3, 4, 6}, {8, 5, 2}, {1, 2, 6}}; stop:for (int i = 0; i \r\n< mas.length; i++) { for (int j = 0; j < mas[i].length; j++) { if (mas[i][j] == 5) { System.out.println(\"Число 5 найдено, его позиция \" + i + \", \" + j); break stop; } System.out.println(\"Текущее число \" + mas[i][j] + \". Позиция \" + i + \", \" + j); } } --OUTPUT> Текущее число 3. Позиция 0, 0 --OUTPUT> Текущее число 4. Позиция 0, 1 --OUTPUT> Текущее число 6. Позиция 0, 2 --OUTPUT> Текущее число 8. Позиция 1, 0 --OUTPUT> Число 5 найдено, его позиция 1, 1\r\n\r\nВ результате \r\nс помощью указателя (его имя может быть любым) и слова break мы из внутреннего цикла перешли к внешнему и прекратили его работу. Эта конструкция применяется с различными типами циклов: for, while, do…while и foreach.\r\n\r\nВместо оператора \r\nbreak можно использовать continue с указателем. Отличие в том, что с помощью continue мы не прекращаем указанный цикл, а переходим к его следующей итерации. Вот, например, исправленный код из прошлого примера, но с использованием continue:\r\n\r\n\r\n\r\n\r\n\r\n\r\ncont:for (int i = 0; i < mas.length; i++) { for (int j = 0; j < mas[i].length; \r\nj++) { if (mas[i][j] == 5) { System.out.println(\"Число 5 найдено, его позиция \" + i + \", \" + j); continue cont; } System.out.println(\"Текущее число \" + mas[i][j] + \". Позиция \" + i + \", \" + j); } } --OUTPUT> Текущее число 3. Позиция 0, 0 --OUTPUT> Текущее число 4. Позиция 0, 1 --OUTPUT> Текущее число 6. Позиция 0, 2 --OUTPUT> Текущее число 8. Позиция 1, 0 --OUTPUT> Число 5 найдено, его позиция 1, 1 --OUTPUT> Текущее число 1. Позиция 2, 0 --OUTPUT> Текущее число 2. Позиция 2, 1 --OUTPUT> Текущее число 6. Позиция 2, 2\r\n\r\nПримечания:\r\n\r\n1. Заключать название \r\nцикла в фигурные скобки не обязательно, если его тело состоит всего из одной строки. Но на этом лучше не экономить, потому что при расширении тела цикла (когда вы будете модифицировать программу) про недостающие скобки очень легко забыть. Зато вовремя расставленные {} делают ваш код более читаемым.\r\n\r\n2. Оператор break с указателем \r\nприменим не только к циклам, но и к простым блокам кода. Но делать это не рекомендуется, так как даже блок-схемами очень сложно описать такое поведение программы. Код, где используются break с указателями, становится сложным для чтения и поддержки.\r\n\r\n\r\n\r\n\r\n\r\n\r\nint a = 5; System.out.println(\"Проверка \r\nпеременной a\"); stop:{ if (a == 5) { break stop; } System.out.println(\"Переменная a не равна 5\"); } System.out.println(\"Проверка закончена\"); --OUTPUT> Проверка переменной a --OUTPUT> Проверка закончена\r\n\r\n3. По этой же \r\nпричине операторы break и continue с указателем не рекомендуется использовать и для циклов.\r\n\r\nПодытожим\r\n\r\nМы выяснили, \r\nкак циклы в Java помогают работать с массивами: перебирать значения, находить нужные элементы, запрашивать данные и выполнять другие повторяющиеся действия без дублирования кода — простым и понятным способом.\r\n\r\n\r\n\r\nУзнайте больше \r\nо циклах и других элементах Java на нашем курсе «Профессия Java-разработчик ». Приходите! Вы научитесь программировать на одном из самых востребованных языков и сможете устроиться на высокооплачиваемую работу.","author":{"@type":"Person","name":"\u0410\u0440\u0442\u0451\u043c \u0410\u0432\u0434\u0435\u0435\u0432","url":"https:\/\/skillbox.ru\/media\/authors\/artem-avdeev\/"},"publisher":{"@type":"Organization","name":"Skillbox","logo":{"@type":"ImageObject","url":"https:\/\/skillbox.ru\/static\/images\/skillbox.png"}},"mainEntityOfPage":{"@type":"WebPage","url":"https:\/\/skillbox.ru\/media\/base\/kak-ispolzovat-tsikly-v-yazyke-java-polnoe-rukovodstvo\/"},"datePublished":"2021-06-11T07:10:00Z","dateModified":"2022-09-22T07:31:25Z","image":{"@type":"ImageObject","url":["https:\/\/248006.selcdn.ru\/main\/iblock\/c08\/c085deedbe85225a67d2d1f6b76cd90b\/4140e520482e2a88abac75d9047bc9b1.png"]},"description":"\u0412\u0441\u0451 — \u043e\u0442 \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0438\u0445 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 \u0434\u043e \u0442\u043e\u043d\u043a\u043e\u0441\u0442\u0435\u0439 \u0438 \u0441\u0430\u043c\u044b\u0445 \u043d\u0435\u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u0445 \u043c\u043e\u043c\u0435\u043d\u0442\u043e\u0432 — \u0432 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435."}
</script><script data-skip-moving="true" id="FiMjZmipVK5U4ODg">if (window.relap) window.relap.ar('FiMjZmipVK5U4ODg');</script> </div>
</div>
</main>
<footer class="without-buttons">
<div class="footer__wrapper container">
<div class="footer__firstgroup">
<section class="footer__contactbox">
<address class="footer__contacts">
<p class="footer__contacts-block">
<a class="footer__phone link" href="tel:+74951540915">8 (800) 500-05-22</a>
<span class="footer__phone-caption">Контактный центр</span>
</p>
<p class="footer__contacts-block">
<a class="footer__phone link" href="tel:+74952915987">+7(495) 291-59-87</a>
<span class="footer__phone-caption">Отдел заботы о пользователях</span>
</p>
<p class="footer__address"> Москва, Ленинский проспект, дом 6, строение 20</p>
</address>
<ul class="social-contacts footer__social">
<li>
<a class="social-contacts__item" href="https://vk.com/skillbox_education"
aria-label="Вконтакте">
<img src="/static/images/footer/soc_vk.svg"/>
</a>
</li>
<li>
<a class="social-contacts__item"
href="https://www.youtube.com/channel/UC2FJq-Rr7v4SlKAoM7x0ZhA" aria-label="YouTube">
<img src="/static/images/footer/soc_tube.svg"/>
</a>
</li>
<li>
<a class="social-contacts__item" href="tg://resolve?domain=skillboxru"
aria-label="Telegram">
<img src="/static/images/footer/soc_tg.svg"/>
</a>
</li>
</ul>
<div class="footer__age-limit">
16+
</div>
</section>
<section class="footer__rewardbox">
<ul class="rewards footer__rewards">
<li>
<span class="rewards__item">
<img src="/static/images/footer/footer_runet.svg" alt=""/>
<span>Премии Рунета</span>
<span>2018, 2019, 2020</span>
</span>
</li>
</ul>
</section>
</div>
<section class="footer__linksbox">
<ul class="links__list links__list--courses">
<li class="links__item links__item--header">Все направления</li>
<li class="links__item"><a href="/code/?utm_source=media&utm_medium=button&utm_campaign=footerlink_code&utm_term=footer">Программирование</a></li>
<li class="links__item"><a href="/design/?utm_source=media&utm_medium=button&utm_campaign=footerlink_design&utm_term=footer">Дизайн</a></li>
<li class="links__item"><a href="/marketing/?utm_source=media&utm_medium=button&utm_campaign=footerlink_marketing&utm_term=footer">Маркетинг</a></li>
<li class="links__item"><a href="/management/?utm_source=media&utm_medium=button&utm_campaign=footerlink_management&utm_term=footer">Управление</a></li>
<li class="links__item"><a href="/games/?utm_source=media&utm_medium=button&utm_campaign=footerlink_gamedev&utm_term=footer">Игры</a></li>
<li class="links__item"><a href="/multimedia/?utm_source=media&utm_medium=button&utm_campaign=footerlink_multimedia&utm_term=footer">Мультимедиа</a></li>
<li class="links__item"><a href="/psychology/?utm_source=media&utm_medium=button&utm_campaign=footerlink_psychology&utm_term=footer">Психология</a></li>
<li class="links__item"><a href="/general-development/?utm_source=media&utm_medium=button&utm_campaign=footerlink_general-development&utm_term=footer">Общее развитие</a></li>
<li class="links__item"><a href="/engineering/?utm_source=media&utm_medium=button&utm_campaign=footerlink_engineering&utm_term=footer">Инженерия</a></li>
<li class="links__item"><a href="/english/?utm_source=media&utm_medium=button&utm_campaign=footerlink_english&utm_term=footer">Английский язык</a></li>
<li class="links__item"><a href="/other/?utm_source=media&utm_medium=button&utm_campaign=footerlink_other&utm_term=footer">Другое</a></li>
</ul>
<ul class="links__list links__list--about">
<li class="links__item links__item--header">О Skillbox</li>
<li class="links__item"><a href="/company/?utm_source=media&utm_medium=button&utm_campaign=footerlink_aboutskillbox&utm_term=footer">О Платформе</a></li>
<li class="links__item"><a href="/career/?utm_source=media&utm_medium=button&utm_campaign=footerlink_careercentr&utm_term=footer"> Центр карьеры</a></li>
<li class="links__item"><a href="/otzyvy/?utm_source=media&utm_medium=button&utm_campaign=footerlink_testimonials&utm_term=footer">Отзывы</a></li>
<li class="links__item"><a href="/contacts/?utm_source=media&utm_medium=button&utm_campaign=footerlink_skillboxcontacts&utm_term=footer">Контакты</a></li>
<li class="links__item"><a href="/jobs/?utm_source=media&utm_medium=button&utm_campaign=footerlink_jobs&utm_term=footer">Вакансии</a></li>
<li class="links__item"><a href="/teachers/?utm_source=media&utm_medium=button&utm_campaign=footerlink_school&utm_term=footer">Школа кураторов</a></li>
<li class="links__item"><a href="/sale/free/?utm_source=media&utm_medium=button&utm_campaign=footerlink_free&utm_term=footer">Бесплатно</a></li>
<li class="links__item"><a href="/media/topic/tests/?utm_source=media&utm_medium=button&utm_campaign=footerlink_tests&utm_term=footer">Онлайн-тесты</a></li>
</ul>
<ul class="links__list links__list--webinar">
<li class="links__item links__item--header">Вебинары</li>
<li class="links__item"><a href="https://live.skillbox.ru/?utm_source=media&utm_medium=button&utm_campaign=footerlink_webinars&utm_term=footer" target="_blank" rel="noopener">Все вебинары</a></li>
<li class="links__item"><a href="https://live.skillbox.ru/playlists/?utm_source=media&utm_medium=button&utm_campaign=footerlink_playlists&utm_term=footer" target="_blank" rel="noopener">Плейлисты</a></li>
<li class="links__item"><a href="https://live.skillbox.ru/calendar/?utm_source=media&utm_medium=button&utm_campaign=footerlink_schedule&utm_term=footer" target="_blank" rel="noopener">Расписание</a></li>
</ul>
<ul class="links__list links__list--last">
<li class="links__item links__journal"><a href="/media/" target="_blank" rel="noopener">Медиа</a></li>
<li class="links__item"><a href="https://partners.skillbox.ru/?utm_source=media&utm_medium=button&utm_campaign=footerlink_partners&utm_term=footer" target="_blank" rel="noopener">Партнерская программа</a></li>
<li class="links__item"><a href="https://b2b.skillbox.ru/?utm_source=media&utm_medium=button&utm_campaign=footerlink_b2b&utm_term=footer" target="_blank" rel="noopener">Корпоративным клиентам</a></li>
<li class="links__item"><a href="https://career.skillbox.ru/?utm_source=media&utm_medium=button&utm_campaign=footerlink_employees&utm_term=footer" target="_blank" rel="noopener">Для работодателей</a></li>
</ul>
</section>
</div>
<div class="footer__underline container">
<span class="footer__copy">
© Skillbox, 2026 </span>
<div>
<span class="footer__oferta">
<a href="/oferta.pdf" target="_blank">Договор оферты</a>
</span>
<span class="footer__payment">
<a href="/payments/" target="_blank">Оплата</a>
</span>
<span class="footer__use-policy">
<a href="/terms_of_use.pdf" target="_blank">Правила пользования Платформой</a>
<a href="/privacy_policy.pdf" target="_blank">Политика конфиденциальности</a>
</span>
</div>
</div>
</footer>
<div class="cookies">
<p class="cookies__desc">
Пользуясь нашим сайтом, вы соглашаетесь с тем, что
<a href="https://skillbox.ru/privacy_policy.pdf" target="_blank" rel="noopener"
type="application/pdf">мы используем cookies</a> 🍪
</p>
<button type="button" class="cookies__button">
Окей
</button>
</div>
<div class="subscribe-popup subscribe">
<div class="subscribe-popup__spacer-mobile"></div>
<div class="subscribe-popup__row-content ">
<button class="subscribe__close"></button>
<div class="subscribe__content">
<div data-subscribe-popup-success class="hidden">
<h2 class="subscribe__header-success">Спасибо за подписку! Забирайте 5 бесплатных курсов:</h2>
<ul class="subscribe__list-block">
<li>Найти себя в IT за 5 дней</li>
<li>Как найти себя в дизайне в 2025 году</li>
<li>Интерьеры, мебель, ландшафт и декорирование</li>
<li>Интернет-маркетинг на практике</li>
<li>Бизнес-аналитик, продакт- и проджект-менеджер</li>
</ul>
<div class="subscribe__btns-el">
<a
target="_blank"
href="https://refer.id/?bot=skillbox_main_bot&platform=telegram&verbose_name=Skillbox&bot_avatar=https://designer.ftrcdn.com/uploads/bot_avatars/medium_54ab1ce8c393eb3df1474846ce0a0e2c.png&n=137050&c=9209&bc_number=890&?utm_source=media&utm_medium=&utm_campaign=all_all_media_banners_invite_sbornik-890_all_bot_skillbox"
class="subscribe__el-btn">Получить доступ</a>
</div>
</div>
<div data-subscribe-popup-content>
<h2 class="subscribe__header">У нас есть классные рассылки!</h2>
<form action="/media/base/kak-ispolzovat-tsikly-v-yazyke-java-polnoe-rukovodstvo/" class="newsletter-form page-subscription__form3" data-type="popup">
<input type="hidden" name="action" value="subscribe">
<div class="subscribe__checkboxes"></div>
<div class="subscribe__email email_popup">
<input class="subscribe-form__input" type="text" name="email" placeholder="Email" >
<span class="subscribe-form__label-name">Электронная почта</span>
<button type="submit" class="popup-btn-click">Подписаться</button>
<span class="email__error">Поле необходимо заполнить</span>
</div>
<div class="subscribe-popup__checkbox-end">
<div class="subscribe-popup__checkbox-item" data-checkbox-personal-data>
<div class="subscribe__checkbox">
<input type="checkbox" name="agreements[PERS]" id="isCheckTrue" value="1" data-checkbox-personal-data-input>
<label for="isCheckTrue"><span>Я согласен на <a target="_blank" href="https://skillbox.ru/legal-docs/chou/file/privacy_policy/version-290425.pdf">обработку персональных данных</a></span></label>
</div>
<span class="email__error">Нужно ваше согласие</span>
</div>
<div class="subscribe__bottom">
<span>Нажимая на кнопку, я соглашаюсь с <a target="_blank" href="https://skillbox.ru/legal-docs/skillbox/file/terms_of_use/version-300824.pdf">правилами пользования Платформой</a></span>
</div>
<div class="subscribe-popup__checkbox-item" data-checkbox-personal-data-two>
<div class="subscribe__checkbox subscribe__checkbox--end" >
<input type="checkbox" name="agreements[ADS]" id="isAdsCalls" value="1" checked="" data-checkbox-personal-data-input-two>
<label for="isAdsCalls">Я согласен <a target="_blank" href="https://skillbox.ru/legal-docs/chou/file/soglasie-na-poluchenie-reklamy.pdf">получать рекламу и звонки</a></label>
</div>
<span class="email__error">Нужно ваше согласие</span>
</div>
</div>
</form>
</div>
</div>
</div>
<!-- src="/static/images/articles/subscribe-popup-img.png" -->
</div>
<div class="bg-modal-overlay bg-modal-overlay--transparent"></div>
<script data-skip-moving="true" id="popup__data--formatted">
$(".popup-btn-click").on("click" , function (){
var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
let input = $(this).closest(".subscribe__email").find(".subscribe-form__input");
let inputValue = input.val();
if(emailPattern.test(inputValue)) {
(window["rrApiOnReady"] = window["rrApiOnReady"] || []).push(function() { rrApi.setEmail(inputValue);});
}
});
/*
window.popupData = {
"8": {
header: 'У нас есть классные рассылки про дизайн!!!',
category: 'Дизайн',
checkboxes: [
'Лучшие статьи про Дизайн',
'«Типографика без боли»'
]
},
"10": {
header: 'У нас есть классные рассылки про код',
category: 'Код',
checkboxes: [
'Лучшие статьи про Код и Людей кода',
'«Жизнь без багов»'
]
},
"18": {
category: 'Геймдев',
checkboxes: []
},
"21": {
header: 'У нас есть классные рассылки про бизнес',
category: 'Бизнес',
checkboxes: [
'Лучшие статьи про Бизнес',
'«Цифровая жизнь»',
'«EdTech по полочкам»'
]
},
"9": {
header: 'У нас есть классные рассылки про бизнес',
category: 'Маркетинг',
checkboxes: [
'Лучшие статьи про Бизнес',
'«Цифровая жизнь»',
'«EdTech по полочкам»'
]
},
"11": {
header: 'У нас есть классные рассылки про бизнес',
category: 'Управление',
checkboxes: [
'Лучшие статьи про Бизнес',
'«Цифровая жизнь»',
'«EdTech по полочкам»'
]
},
"17": {
category: 'Развитие',
checkboxes: []
},
"22": {
header: 'У нас есть классные рассылки про образование',
category: 'Образование',
checkboxes: [
'Лучшие статьи про Образование',
'«EdTech по полочкам»',
'«Мой успешный онлайн-курс»'
]
},
}
*/
window.popupData = {"header":"\u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435 - \u043d\u0430 \u043f\u043e\u0447\u0442\u0443!\u003Cbr\/\u003E\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0442\u0435\u043c\u0443 \u0440\u0430\u0441\u0441\u044b\u043b\u043a\u0438\u003Cbr\/\u003E\u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 5 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0445 \u043a\u0443\u0440\u0441\u043e\u0432:","category":"\u0411\u0430\u0437\u0430 \u0437\u043d\u0430\u043d\u0438\u0439","checkboxes":{"23":"\u041c\u0435\u043d\u0435\u0434\u0436\u043c\u0435\u043d\u0442","24":"\u041c\u0430\u0440\u043a\u0435\u0442\u0438\u043d\u0433","26":"\u041a\u043e\u0440\u043f. \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435","13":"\u0414\u0438\u0437\u0430\u0439\u043d","16":"\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435","15":"\u041e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435","17":"\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0438\u0433\u0440","18":"\u041f\u0441\u0438\u0445\u043e\u043b\u043e\u0433\u0438\u044f, \u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e"},"code":"base","scroll":false};
window.subscribePopupShow = 1;
</script>
<div class="copied">
<img src="/static/images/articles/done-circle.svg" alt="" class="copied__icon">
<p class="copied__text">
Ссылка скопирована
</p>
</div>
<!-- <style>@font-face{font-display:swap;font-family:Graphik;font-weight:500;font-style:normal;src:url(https://248006.selcdn.ru/Shared/fonts/GraphikLCTT-VA-Medium.woff2) format("woff2")}@font-face{font-display:swap;font-family:Graphik;font-weight:700;font-style:normal;src:url(https://248006.selcdn.ru/Shared/fonts/GraphikLCTT-VA-Bold.woff2) format("woff2")}.universal-notice{box-sizing:border-box;text-decoration:none;display:none;min-height:48px;color:var(--banner-color);background-color:var(--banner-bg);overflow:hidden;font-family:Graphik,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-transition:opacity .25s ease-in-out;transition:opacity .25s ease-in-out}.universal-notice *{box-sizing:inherit}.universal-notice.universal-notice--active{display:block}.universal-notice--bitrix{z-index:1000}.universal-notice__wrapper{position:relative;-webkit-box-pack:start;justify-content:flex-start;display:-webkit-box;display:flex;-webkit-box-align:center;align-items:center;margin-left:12px;padding:4px 0}.universal-notice__title{position:relative;flex-shrink:0;width:132px;margin-right:27px;font-size:14px;line-height:20px;text-transform:uppercase}.universal-notice__timer{display:none;margin:0;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.universal-notice__button{flex-shrink:0;min-width:120px;padding:8px 12px;border-radius:25px;font-weight:500;font-size:12px;line-height:16px;color:#3925b7;text-align:center;text-transform:uppercase;background-color:#ffa6a6}@media (min-width:768px){.universal-notice{min-height:72px}.universal-notice__wrapper{-webkit-box-pack:center;justify-content:center;height:72px;margin:0}.universal-notice__title{width:252px;margin-right:32px;margin-left:20px;font-size:24px;line-height:32px}.universal-notice__button{min-width:200px;margin-right:20px;padding:14px 36px;font-size:16px;line-height:20px}}@media (min-width:768px) and (max-width:0px){.universal-notice{min-height:72px}.universal-notice__wrapper{-webkit-box-pack:center;justify-content:center;height:72px;margin:0}.universal-notice__title{width:252px;margin-right:32px;margin-left:20px;font-size:24px;line-height:32px}.universal-notice__button{min-width:200px;margin-right:20px;padding:14px 36px;font-size:16px;line-height:20px}}@media (min-width:1280px) and (max-width:0px){.universal-notice__wrapper{padding:0}.universal-notice__title{width:unset;margin-right:76px}.universal-notice__timer{flex-shrink:0;margin-right:32px;font-weight:700;font-size:24px;line-height:32px}.universal-notice__timer.js-universal-notice-active{display:-webkit-box;display:flex}.universal-notice__days{margin-right:5px}}@media (min-width:1280px){.universal-notice__wrapper{padding:0}.universal-notice__title{width:unset;margin-right:76px}.universal-notice__timer{flex-shrink:0;margin-right:32px;font-weight:700;font-size:24px;line-height:32px}.universal-notice__timer.js-universal-notice-active{display:-webkit-box;display:flex}.universal-notice__days{margin-right:5px}}</style>-->
</body>
</html>