Продолжаем изучение цикла for. В этой статье рассмотрим его разновидность в стиле for each. Также рассмотрим вложенные циклы и область действия переменных.
Запишем представление цикла:
for (int a: masiv) {
тело метода;
}
Обратите внимание, что джависты (разработчики) не стали заморачиваться и не ввели новое ключевое слово в язык java. И это имеет определенный смысл: нет необходимости резервировать ключевое слово и не нарушается уже существующий код. Хотя все равно нам доподлинно не будут известны мотивы джавистов, побудивших их на такие шаги. У нас другая задача: понять принцип работы цикла for в стиле for each. А принцип заключается в том, что с каждым шагом цикла элементы массива masiv будут поочередно записываться в переменную а. Разберем это на примере программы, которую запишем в двух вариантах: for и в стиле for each.
Важно. Чтобы лучше понять данную тему, нужно хорошо разбираться в массивах, особенно в многомерных.
Главное достоинство цикла for в стиле for each заключается в том, что нам не нужно заботиться о выходе за пределы массива условием х<5 в первом листинге программы.
Вложенные циклы
Немного сложнее понять работу цикла с многомерными массивами. Но сначала разберем принцип действия вложенных циклов. По определению это циклы, вложенные друг в друга как на структурной схеме ниже:
Обратите внимание на то, что мы объявили в циклах две одинаковые переменные. В реальных программах это не работает и вызовет ошибку, так как область действия объявленной переменной во внешнем цикле распространяется и на внутренний цикл. Немного позже рассмотрим, когда две одинаковые переменные не противоречат друг другу.
Принцип работы вложенных циклов заключается в следующем: во время первой итерации внешнего цикла внутренний проходит « от начала до конца», т. е. полный цикл работы. И так повторяется до тех пор, пока внешний цикл не закончит свою работу. Смотрим это на схеме:
Теперь рассмотрим работу вложенных циклов непосредственно в программе:
Возвращаемся к многомерным массивам. Мы не случайно рассмотрели вложенные циклы, так как с помощью их и происходит перебор элементов в многомерных массивах. Представим многомерный массив не в виде “наших паровозиков”, а в виде стандартной матрицы 5Х4 и переберем его элементы с помощью вложенных циклов for и в стиле for each.
В стиле for each перебор значений элементов многомерного массива происходит несколько иначе. Многомерный массив можно разложить на отдельные одномерные массивы. Тогда за одну итерацию внешнего цикла будут перебираться одномерные массивы, значения элементов которых будут записываться в одномерный массив х[]. Во внутреннем цикле перебираются значения элементов массива х[] и записываются в переменную a.
Область действия переменной цикла
Когда переменная объявляется в самом цикле, то ее область действия будет ограничиваться только телом данного цикла. Рассмотрим это на примерах программ (листаем):
Прерывание циклов
И последнее что рассмотрим- это прерывание циклов с помощью оператора break.
Мы уже рассматривали данный оператор при изучении оператора выбора switch. В циклах он работает точно также. Например, при нахождении определенного значения в массиве нам нужно прервать цикл, чтобы не перебирать остальные значения элементов массива, так как смысла в этом нет. Смотрим листинг программы:
И в заключение нужно отметить, что цикл for в стиле for each дает заметные преимущества в сравнении с обычным циклом for. Область его применения обширна: это вычисление среднего значения, поиск минимального и максимального значения, поиск дубликатов. И как мы уже говорили ранее, нам не приходиться заботится о выходе за пределы цикла.
Ставьте лайки и подписывайтесь на канал, и вас ждет масса увлекательных статей по программированию!