Как зациклить программу java
14 января 2014 Мария (admin)
Цикл в программировании используется для многократного повторения определенного фрагмента кода. В Java существует 3 оператора цикла: for, while, do-while.
В этом уроке мы рассмотрим:
В конце урока предложены упражнения для закрепления материала.
Рассмотрим подробнее использование операторов цикла в Java.
При использовании конструкции for заранее известно, сколько раз необходимо осуществить повторение. При использовании конструкций while или do-while повторения будут происходить до тех пор, пока выполняется некоторое условие (логическое выражение)
Цикл for в Java.
Рассмотрим пример: вывод на экран числа от 1 до 10.
Конструкция for имеет следующий вид:
Пример: Вывод на экран чисел от 10 до −10:
Цикл while в Java.
Пример: Вывод на экран значений от 1 до 10.
Конструкция while выполняет выражение в фигурных скобках до тех пор, пока параметр логическое_выражение имеет истинное значение (true). Этот параметр является условием выполнения цикла. В выше приведенном примере, логическое выражение имеет вид i < 11.
Истинность логического выражения (условия) проверяется перед каждым шагом цикла, в том числе и перед первым. while так же называют оператором предусловия.
Приведем пример цикла, который не выполнится ни разу:
Цикл do-while в Java.
В отличие от оператора while, do-while является оператором постусловия, который сначала выполняет тело цикла, а потом осуществляет проверку условия. Таким образом, тело цикла выполнится всегда хотя бы один раз.
Пример: Вывод на экран значений от 1 до 10.
Как видно из конструкции, тело цикла выполняется перед проверкой условия. Впоследствии, тело цикла повторится в случае, если логическое_выражение было истинно. Оператор do-while удобно применять, если некоторые действия необходимо выполнить, по крайней мере, один раз, а их повторение будет зависеть от условия.
Вспомним пример цикла while, который не выполнится ни разу, и перепишем его с помощью оператора do-while
Упражнения на тему Операторы цикла в Java:
- При помощи цикла for вывести на экран нечетные числа от 1 до 99.
- Дано число n при помощи цикла for посчитать факториал n!
- Перепишите программы с использованием цикла while.
- Даны переменные x и n вычислить x^n.
- Вывести 10 первых чисел последовательности 0, -5,-10,-15..
- Переделайте последний пример на break.Необходимо, чтобы заданный символ встречался в строке хотя бы 2 раза.
Когда Вам необходимо, чтобы одно и то же самое действие выполнилось несколько раз или до определенного условия, здесь нам на помощь приходят циклы.
В языке Java есть несколько способов создать циклы. Как Вы уже могли догадаться, мы будем рассматривать их все.
Вот пример кода:
Как насчет написать что то более сложное. Мы уже выучили условные операторы и базовые операции с переменными. Давайте их и используем.
Напишем простое приложение, которое будет выводить строку с оповещением каждый раз, когда шаг + некоторая переменная будет равна 5. У меня очень плохо с фантазией))
Для начала напишем код, который будет принимать на вход переменную введенную из консоли. В предыдущей статье, я давал пример этого кода и мы условились, что потом я объясню, как он работает и откуда пошел. А сейчас мы просто будем им пользоваться:
Получилось не очень замысловато. Этим примером, я хотел показать, как можно использовать циклы с ветвлениями в связке.
Следующим способом объявить циклы является конструкция: while(условие истинно). У данной конструкции есть другая форма:
dowhile(условие истинно). Отличие первого от второго в том, что второе выполнить один цикл независимо истинно условие или нет. Можете сами подумать: сначала мы выполняем кода, а потом уже проверяем условие. И даже если условие будет не истинным, код все равно выполниться один раз, в том время, когда в первом виде конструкции сначала проверяется условие и пока оно не будет истинным, код не выполнится.
Ну и пример с do-while:
На этом, думаю, можно закончить статью о циклах в Java. Как видите, конструкции не очень сложны, но очень полезны. Особенно полезными они будут, когда мы познакомимся с массивами и строками.
Повторяющееся исполнение набора инструкций называется циклом. Циклы в Java делятся на три типа:
- While ;
- For ;
- Do While
- Выше перечислено три разных типа циклов, которые используются с одинаковой целью, и отличаются только синтаксисом;
- Из-за синтаксических различий может отличаться и их образ действия. Вскоре мы рассмотрим эти различия.
Java-цикл For и его различные типы
For – самый популярный цикл из трёх доступных. Всё, что можно делать при помощи цикла while Java , легко делается и с помощью цикла for .
Существует два типа цикла for :
Обычный цикл for
- Когда элемент управления натыкается на цикл for , он сначала выполняет инициализацию. Эта часть выполняется один раз;
- Затем контроллер переходит к разделу с условиями. Если оценка условий выдает результат true , то контроллер переходит к телу цикла.
Если оценка даёт результат false , то элемент управления выходит из for и выполняет условие, следующее после цикла.
Когда условие даёт значение true , выполняется тело цикла. Затем контроллер переходит к разделу incr/decr . Здесь указываются переменные инкремента или декремента.
После выполнения раздела incr/decr , контроллер переходит к разделу условий. Если результат будет true , то выполняется тело цикла. Затем переход к разделу incr/decr , а потом к разделу условий. Этот процесс будет повторяться до тех пор, пока оценка условий будет равно true .
Как написать цикл на Java
В приведённом выше примере переменная инициализируется значением 1 .
Это действие происходит всего один раз. После чего контроллер переходит к условию a :
В цикле в Java , когда мы создаём переменную при инициализации, она автоматически освобождается по окончании цикла. Такую переменную нельзя использовать за пределами цикла. Если это необходимо, то создайте новую переменную с таким же именем вне цикла.
В приведенной выше программе возникает ошибка, так как переменная i освобождается после выхода из цикла Java .
В программе, приведенной выше, ошибки не возникает, так как в ней используется переменная i , которая была объявлена за пределами цикла.
- В теле цикла в Java может быть любое количество инструкций;
- Все они должны быть заключены в фигурные скобки;
- Если в теле цикла есть только одна инструкция, то фигурные скобки необязательны.
В разделе инициализации может быть любое количество инструкций, но все они должны отделяться запятыми.
По окончании инициализации этот раздел завершается точкой с запятой. В следующем примере вложенного цикла Java мы поместили в раздел инициализации три инструкции, разделенные запятыми: (a=10) , (b=20) и (c=30) .
- Подобно разделу с инициализацией, в разделе incr/decr также может быть несколько инструкций, указанных через запятую.
Но в разделе условий цикла в Java ничего не отделяется запятыми. Все предполагаемые условия должны комбинироваться при помощи операторов AND или OR и образовывать единое условие.
Вложенные циклы
Помните, что Java цикл в связанном списке алгоритма можно помещать циклы внутрь других циклов. Такие циклы называются вложенными.
В данном примере контроллер доходит до раздела инициализации за пределами цикла.
Объяснение приведённого выше примера :
Значением a = 11 . Затем контроллер переходит к разделу условий. Если условие выдаёт значение true , контроллер переходит к телу цикла и выполняет statementA .
Затем контроллер переходит к разделу инициализации внутреннего цикла, а после этого – к разделу условий.
Если условия выполняется, программа переходит к телу цикла и выполняет statementB . После этого контроллер переходит к разделу с увеличением значения во внутреннем цикле for , а после – к разделу условий внутреннего цикла. Вложенный цикл Java повторяется до тех пор, пока внутреннее условие выдаёт значение true .
Внутрь другого цикла в Java for можно поместить любую конструкцию. Здесь нет ограничения по количеству конструкций.
Чтобы выйти из цикла for в середине тела, можно использовать оператор break . Он выведет контроллер из цикла, независимо от условий в объявлении цикла.
Если мы хотим перейти к следующей итерации цикла с середины тела ( пропустив оставшиеся инструкции текущей итерации ), можно использовать оператор continue .
Перед тем, как написать цикл на Java , нужно знать, что раздел условий должен выдавать результат в виде логического выражения. В разделе инициализации можно создавать переменные, что невозможно в разделе увеличения. Ниже представлен валидный код.
Иногда инициализация происходит в тот момент, когда контроллер доходит до цикла for . В таком случае в разделе инициализации можно написать пустую инструкцию ( пусть это будет просто точка с запятой) . Аналогичным образом можно пропустить раздел увеличения. Если использовать пустое условие ( просто a ), то результат будет расцениваться как true . То есть, все последующие применения будут валидными.
Если мы запишем цикл for как for(;;) , и в нём не будет break или return , то это бесконечный цикл Java . Приведенные ниже циклы являются бесконечными.
Пример 1: for( ; ; )
Пример 2: for(init; true; incr)
Цикл for в стиле foreach
Этот тип циклов используется для перехода по набору элементов в строгом порядке ( от начала к концу ). Набором элементов может быть массив, ArrayList , LinkedList или любая другая коллекция.
Предположим, что у нас есть массив и нужно вывести каждый элемент из массива. Тогда нужно создать цикл следующим образом.
В этом примере цикл повторяется четыре раза ( количество элементов в массиве ), и каждый раз выводится очередной элемент i ( от 0 до 3 ).
Чтобы добиться такого же результата, можно использовать следующее условное обозначение.
В данном случае переменная x получает каждое значение из массива ( по одному значению на итерацию ), а затем выводится. Этот подход ( foreach ) подходит для обслуживания всех элементов в списке. Если нам нужны отдельные фрагменты списка, то можно использовать обычный цикл в Java .
Мы можем выйти из этого цикла при помощи инструкции break . Чтобы пройтись по двухмерному массиву, можно использовать следующий код:
В приведённом выше примере внешний цикл в Java проходит по массиву ссылок ( где каждая ссылка обращается к массиву ), а внутренний цикл проходит по каждому элементу текущего массива.
Дайте знать, что вы думаете по данной теме в комментариях. За комментарии, отклики, дизлайки, лайки, подписки огромное вам спасибо!
Пожалуйста, опубликуйте ваши мнения по текущей теме материала. Мы очень благодарим вас за ваши комментарии, дизлайки, подписки, лайки, отклики!
Цикл — это многократно повторяющийся фрагмент программы.
В java существует два типа циклов: типа «пока» и типа «n-раз».
Первый тип «пока» предназначен для повторения какого-то действия до тех пор, пока выполняется некоторое условие. Пример: увеличивать число на 5 до тех пор, пока оно не станет трёхзначным.
Второй тип «n-раз» предназначен для повторения каких-то действий заранее известное количество раз. Пример: умножить число само на себя 4 раза.
Цикл типа «пока» (операторы while и do…while)
Оператор while повторяет указанные действия до тех пор, пока его параметр имеет истинное значение.
Например, такой цикл выполнится 4 раза, а на экран будет выведено «1 2 3 4 »:
Такой цикл не выполнится ни разу и на экран ничего не выведется:
Такой цикл будет выполняться бесконечно, а на экран выведется «1 2 3 4 5 6 7 …»:
Условие, определяющее будет ли цикл повторятся снова, проверяется перед каждым шагом цикла, в том числе перед самым первым. Говорят, что происходит предпроверка условия.
Бывает цикл типа «пока» с постпроверкой условия. Для его записи используется конструкция из операторов do…while.
Такой цикл выполнится 4 раза, а на экран будет выведено «2 3 4 5 »:
Такой цикл выполнится 1 раз, а на экран будет выведено «2 »:
Тело цикла do…while выполняется по крайней мере один раз. Этот оператор удобно использовать, когда некоторое действие в программе нужно выполнить по крайней мере единожды, но при некоторых условиях придётся повторять его многократно.
Ознакомьтесь со следующей программой (она загадывает случайное целое число из отрезка [1;10] и просит пользователя его угадать, вводя варианты с клавиатуры, пока пользователь не угадает число, программа будет ему подсказывать, сообщая больше или меньше число загаданное, чем то, что ввёл пользователь):
Внесите в программу следующие доработки:
Программа должна считать количество попыток, которое потребовалось пользователю, чтобы угадать число. И в конце сообщать, сколько было попыток.
Программа должна загадывать число не из отрезка [1;10], а целое число из отрезка от [−10;10], исключая ноль. При этом, постарайтесь, чтобы распределение случайных чисел генерируемых программой было равномерных (т. е. в случае выпадения нуля его нельзя просто заменить на какое-то другое число, например, на 1, ведь тогда 1 будет выпадать с вдвое большей вероятностью, чем остальные числа).
Программа должна подсказывать пользователю, что он ошибся в знаке, если программа загадала положительное число, а пользователь ввёл отрицательное. И наоборот.
Цикл типа «n-раз» (оператор for)
Оператор for содержит три параметра. Первый называется инициализацией, второй — условием повторения, третий — итерацией.
В первом параметре обычно выбирают какую-то переменную, с помощью которой будет подсчитываться количество повторений цикла. Её называют счетчиком. Счётчику задают некоторое начальное значение (указывают, начиная с какого значения он будет изменяться).
Во втором параметре указывают некоторое ограничение на счётчик (указывают, до какого значения он будет изменяться).
В третьем параметре указывают выражение, изменяющее счётчик после каждого шага цикла. Обычно это инкремент или декремент, но можно использовать любое выражение, где счётчику будет присваиваться некоторое новое значение.
Перед первым шагом цикла счётчику присваивается начальное значение (выполняется инициализация). Это происходит лишь однажды.
Перед каждым шагом цикла (но после инициализации) проверяется условие повторения, если оно истинно, то в очередной раз выполняется тело цикла. При этом, тело цикла может не выполниться ни разу, если условие будет ложным в момент первой же проверки.
После завершения каждого шага цикла и перед началом следующего (и, значит, перед проверкой условия повторения) выполняется итерация.
Представленная программа выводит на экран числа от 1 до 100:
Представленная программа выводит на экран числа от 10 до −10:
Представленная программа выводит на экран нечётные числа от 1 до 33:
Представленная программа вычислит сумму элемнтов фрагмента последовательности 2, 4, 6, 8,… 98, 100. Итак:
Представленная программа будет возводить число из переменной a в натуральную степень из переменной n:
Представленная программа выведет на экран 10 первых элементов последовательности 2n+2, где n=1, 2, 3…:
Представленная программа выведет на экран 10 первых элементов последовательности 2an−1+3, где a1=3:
В одном цикле можно задавать сразу несколько счётчиков. При этом несколько выражений в итерации и в инициализации разделяются запятыми. Условие повторения можно задавать только одно, но оно может быть выражением, содержащим сразу несколько счётчиков.
Представленная программа выведет на экран 10 первых элементов последовательности 2an−1–2, где a1=3:
Представленная программа выведет на экран такую последовательность «0 -1 -4 -9 -16 -25»:
Досрочное завершение цикла (оператор break)
Как цикл типа «пока» так и цикл типа «n-раз» можно завершить досрочно, если внутри тела цикла вызвать оператор break. При этом произойдёт моментальный выход из цикла, не будет закончен даже текущий шаг (т. е. если после break присутствовали какие-то ещё операторы, то они не выполнятся).
В результате работы следующего примера на экран будут выведены только числа «1 2 3 4 Конец»:
Когда программа будет выполнять цикл в пятый раз(войдёт в цикл с счётчиком равным 5), сразу же будет проверено и окажется истинным условие при котором выполнится оператор break. Оставшаяся часть тела цикла (вывод на экран) уже производится не будет: программа сразу перейдёт к выполнению операций указанных после цикла и далее.
C помощью оператор break можно прервать заведомо бесконечный цикл. Пример (на экран выведется «100 50 25 12 6 3 1 0 » и после этого цикл остановится):
Оператор break имеет смысл вызывать только при наступлении какого-то условия, иначе цикл будет завершен досрочно на первом же своём шаге.
Читайте также: