Еще один очень распространенный оператор цикла, это оператор for, который широко применяется для выполнения таких повторений, количество которых можно проконтролировать счетчиком или какой-либо другой переменной, которая обновляется во время каждого цикла. Возьмем, например, и выполним тот же самый пример, который мы только что делали. А именно, сложить все натуральные числа от 0 до некоторого значения, до тех пор, пока эта сумма не будет превышать 100. Для этого проведем опять сначала инициализацию, переменной sum присвоим значение 0.
Переменная max, пусть опять равна 100, и далее напишем оператор цикла for. Теперь скобка, внутри которой нам нужно написать условие нашего оператора for, который содержит в себе несколько действий. Первое среди них задает инициализацию, потом идет само условие цикла, и дальше условие обновление счетчика. После первого выражения напишем переменную i1, которой присвоим значение 0. Затем второе выражение, в качестве которого опять-таки вот это 100+i1 меньше max.
И затем третье выражение, в качестве которого возьмем приращение счетчика i1 на единицу. Закроем скобку.
Далее выполним некий оператор, в качестве которого возьмем просто-напросто приращение sum на i1. Поэтому напишем sum += Л. Конечно, если бы у нас была необходимость использование нескольких операторов, тогда надо было бы воспользоваться составным оператором. Т. е. поместить все эти операторы внутри фигурных скобок. Ну, поскольку сейчас здесь оператор всего лишь один, то фигурные скобки нам не нужны. Далее распечатаем, воспользуемся вот этой уже готовой строкой. Выделим ее. Правая кнопка мыши. Сору. Далее встанем сюда. Правая кнопка и Paste.
Теперь запустим наше приложение и посмотрим, что у нас получилось. Выберем пункт Tools. Далее Compile Java. Теперь опять Tools, Run Java Application. Как мы видим, наряду с теми 4 строчками, которые вычисляли эти суммы и которые мы уже видели, появилась еще одна дополнительная строка.
Она вычисляет такую же сумму и получается тот же самый результат 91. Правда, счетчик у нас остановился не на 13, а на 14. Это уже связано с конкретной реализацией цикла for. Просто-напросто превращение i1 у нас произошло, а вот это превращение при переменной i1 равной 14, еще не прибавилось. И именно на этом моменте и прекратилось выполнение оператора for Закроем эту консоль.
Теперь выполним этот цикл немножко по-другому. А именно, более стандартным образом: for, далее определим переменную. Переменную счетчик цикла можно определить прямо внутри цикла for. Для этого напишем int. Ну, пусть переменная у нас будет i2. Она пусть равняется от 0 и до тех пор, пока эта переменная i2 меньше, например, 10. Точка с запятой.
И к i2 применим приращение на единицу. Закрыть скобку. Теперь посчитаем сумму: sum +=, и i2. Точка с запятой. Конечно же, предварительно нам нужно было бы задать в этой сумме значение 0, точка с запятой. И вы выведем теперь это значение sum на печать. Из-за этого опять воспользуемся вот этой строкой, которая у нас уже находится в буфере обмена. Для этого правая кнопка мыши и Paste. Теперь ее немножко переделаем, i1 у нас вообще нет в цикле. Не используется. А вот переменную i2, здесь мы использовать, как раз не имеем право, поскольку она определена внутри этого цикла. Ее можно использовать только внутри вот этого блока for. Но мы знаем в принципе, что она меняется от 0 до 10, поэтому напишем вот так: 0 и 10.
Все это можно убрать. Но, конечно, если у нас сумма от 0 до 10, тогда в этом случае тут лучше взять не знак меньше, а знак меньше или равно, чтобы число 10 тоже вошло у нас в эту же сумму. Теперь возьмем Tools. Далее Compile Java. Опять Tools, Run Java Application и, как можно видеть, сумма чисел от 0 до 10, является числом 55. Что при желании можно проверить хотя бы вручную. Но это так. Закроем теперь это окно.
В цикле for можно организовать не только вот такой возрастающий цикл, но и убывающий, при котором, например, вот эта переменная i2 будет убывать. Например, сложим все числа в убывающем порядке от 20 до 10. Для этого сначала опять проинициализируем переменную sum. Присвоим ей значение 0. Далее оператор for. Скобка. Определим опять переменную внутри цикла int и далее i2.
Начальное значение пусть будет 20, точка с запятой. А далее условие цикла, i2. Должно быть больше или равно 10. Точка с запятой. И далее переменную i2 уменьшим на единицу. Напишем два знака минус. Закрыть скобки. А теперь к сумме надо прибавить вот эту переменную i2. Напишем это таким образом. Плюс равно и далее i2. Точка с запятой. Теперь все это выведем на печать. Для этого правая кнопка мыши. Далее Paste. Теперь опять переделаем вот эту строчку вывода. Как мы помним, мы складываем от 20 до 10. И попробуем выполнить это приложение. Для этого сначала Tools, Compile Java. Далее опять Tools, Run Java Application. Как мы видим, сумма чисел от 20 до 10 равняется 165. Закроем это окно.
В операторах цикла можно, конечно же, использовать не только целые числа в качестве счетчиков, но в принципе можно использовать и действительные числа. Но, правда, обращаться с ними надо с осторожностью, помня об ошибках округления. Например, если мы выполним цикл с действительными числами, предварительно определим значение sum равным 0, далее оператор for, теперь определим переменную действительного типа double. Пусть это будет d1. Начальное значение пусть у нее будет равно 0. Точка с запятой. Затем условие. Пусть условие будет d1 меньше 10. Запятая. И далее приращение к d за один цикл пусть будет равно 0,1. Закрыть скобку. И просто-напросто подсчитаем количество итераций.
Для этого напишем таким образом: sum+ равно 1. Конечно же, на предыдущей строке нам не хватает точки с запятой. Теперь скопируем вот этот println. Для этого выделим его. Правая кнопка мыши. Сору. Enter. Теперь правая кнопка мыши. Paste. И выведем вот этот результат выполнения нашего цикла. В принципе, если посмотреть на сам цикл, то можно увидеть, что он должен выполняться примерно 100 раз от значения d1 равно 0, до значения d1 равно 9,9. Что, как раз составит ровно 100 циклов.
Посмотрим, так ли это. Выведем просто sum. Закрыть скобку. Точка с запятой. Далее скомпилируем Tools, Compile Java. Далее Tools, Run Java Application. И, как мы видим, наш компьютер выполнил этот цикл не 100 раз, а 101. Вот этот один цикл прибавился за счет ошибки округления. Дело в том, что 0,1 в реальном так сказать исчислении у компьютера на самом деле не 0,1, а немного меньше, 0,099 и т.д. И в результате, выполняя все эти итерации на последнем шаге, компьютер имеет возможность еще одно прибавить вот это 0,1 и все равно переменная sum будет меньше 10. Чуть-чуть, но будет меньше. В результате прибавляется один лишний цикл.
Еще более надо быть осторожным, если в качестве условия, при использовании действительных чисел, брать знак равенства. Поскольку, если здесь, например, написать знак равно, то цикл просто-напросто вообще никогда не закончится. Поскольку целого числа 10, вот в этом выражения мы никогда не получим.
⇐Операторы цикла do | TeachPro WEB-дизайн | Оператор switch⇒