АБОБА. Справочник по программированию на Java Методическое пособие
Скачать 242.41 Kb.
|
Цикл forНачиная с версии JDK 5, в Java существуют две формы цикла for. Первая – традиционная форма, используемая начиная с исходной версии Java. Вторая – новая форма “for-each”. Мы рассмотрим оба типа цикла for, начиная с традиционной формы. Общая форма традиционного оператора for выглядит следующим образом: for(инициализация; условие; повторение) { // тело } Если в цикле будет повторяться только один оператор, фигурные скобки можно опустить. Цикл for действует следующим образом. При первом запуске цикла программа выполняет инициализационную часть цикла. В общем случае это выражение, устанавливающее значение управляющей переменной цикла, которая действует в качестве счетчика, управляющего циклом. Важно понимать, что выражение инициализации выполняется только один раз. Затем программа вычисляет условие, которое должно быть булевским выражением. Как правило, выражение сравнивает значение управляющей переменной с целевым значением. Если это значение истинно, программа выполняет тело цикла. Если оно ложно, выполнение цикла прерывается. Затем программа выполняет часть повторение цикла. Обычно это выражение, которое увеличивает или уменьшает значение управляющей переменной. Затем программа повторяет цикл, при каждом прохождении вначале вычисляя условное выражение, затем выполняя тело цикла и выполняя выражение повторения. Процесс повторяется до тех пор, пока значение выражения повторения не станет ложным. Ниже приведена версия программы подсчета “тактов”, в которой использован цикл for. // Демонстрация использования цикла for. class ForTick { public static void main(String args[]) { int n; for(n=10; n>0; n--) System.out.println("такт " + n); } } Объявление управляющих переменных цикла внутри цикла forЧасто переменная, которая управляет циклом for, требуется только для него и не используется нигде больше. В этом случае переменную можно объявить внутри инициализационной части оператора for. Например, предыдущую программу можно переписать, объявляя управляющую переменную n типа int внутри цикла for: // Объявление управляющей переменной цикла внутри цикла for. class ForTick { public static void main(String args[]) { // в данном случае переменная n объявляется внутри цикла for for(int n=10; n>0; n--) System.out.println("такт " + n); } } При объявлении переменной внутри цикла for необходимо помнить о следующем важном обстоятельстве: область и время существования этой переменной полностью совпадают с областью и временем существования оператора for. (То есть область существования переменной ограничена циклом for.) Вне цикла for переменная прекратит свое существование. Если управляющую переменную цикла нужно использовать в других частях программы, ее нельзя объявлять внутри цикла for. В тех случаях, когда управляющая переменная цикла не требуется нигде больше, большинство программистов Java предпочитают объявлять ее внутри оператора for. В качестве примера приведем простую программу, которая проверяет, является ли введенное число простым. Обратите внимание, что управляющая переменная цикла i объявлена внутри цикла for, поскольку она нигде больше не требуется. // Проверка принадлежности к простым числам. class FindPrime { public static void main(String args[]) { int num; boolean isPrime = true; num = 14; for(int i=2; i <= num/i; i++) { if((num % i) == 0) { isPrime = false; break; } } if(isPrime) System.out.println("Простое"); else System.out.println("Не простое"); } } В ряде случаев требуется указание нескольких операторов в инициализационной и итерационной частях цикла for. Например, рассмотрим цикл в следующей программе: class Sample { public static void main(String args[]) { int a, b; b = 4; for(a=1; a System.out.println("a = " + a); System.out.println("b = " + b); b--; } } } Как видите, управление этим циклом осуществляется одновременно двумя переменными. Поскольку цикл управляется двумя переменными, желательно, чтобы их обе можно было бы включить в сам оператор for, а не выполнять обработку переменной b вручную. К счастью, Java предоставляет средства для выполнения этой задачи. Чтобы две или более переменных могли управлять циклом for, Java допускает указывать по несколько операторов как в инициализационной, так и итерационной частях оператора for. Один от другого операторы отделяются запятыми. Используя запятые, предыдущий цикл for можно записать в более эффективном виде: // Использование запятой. class Comma { public static void main(String args[]) { int a, b; for(a=1, b=4; a System.out.println("a = " + a); System.out.println("b = " + b); } } } В этом примере в инициализационной части цикла мы устанавливаем начальные значения обеих управляющих переменных a и b. Оба разделенных запятой оператора в итерационной части выполняются при каждом повторении цикла. Программа генерирует следующий вывод: a = 1 b = 4 a = 2 b = 3 Читатели, знакомые с языками C/C++, знают, что в этих языках запятая – символ операции, который можно использовать в любом допустимом выражении. Однако в Java это не так. В нем запятая служит разделителем. |