1. Циклы в нашей жизни
Очень часто в нашей жизни приходится выполнять однотипные действия много раз. Например, мне нужно отсканировать многостраничный документ. Тогда мы снова и снова выполняем один и тот же порядок действий:
- Положить первую страницу на сканер
- Нажать кнопку сканировать
- Положить следующую страницу
Вручную это делать сложно. Было бы хорошо, если бы этот процесс можно было как-то автоматизировать.
Или еще пример: я хочу пометить все непрочитанные письма в почтовом ящике как спам. Когда-то их нужно было выделять по одному и помечать как спам.
Но программисты народ ленивый, поэтому эту функцию уже давно автоматизировали: вы просто выделяете любой список писем и нажимаете кнопку «пометить как спам», а ваш почтовый клиент сам проходится по этому списку и переносит каждое письмо в папку спам.
Что тут сказать? Удобно, когда компьютер или программа могут сделать сотни и тысячи рутинных операций за один клик. Сейчас этому научитесь и вы.
2. Цикл while
Оператор if-else существенно расширил наши возможности программирования: теперь можно писать программы, которые выполняют разные действия в разных ситуациях. Но есть еще одна вещь, которая сделает наши программы на порядок мощнее — это циклы.
В Java есть 4 вида циклов: while
, for
, for-each
и do-while
. Сейчас мы разберем самый первый из них.
Оператор цикла while
очень простой и состоит всего из двух частей: условие и тело цикла. Тело цикла выполняется снова и снова, пока условие равно true
. Общий вид цикла while
такой:
while (условие)
команда;
while (условие)
{
блок команд
}
Все очень просто. Команда или блок команд выполняются снова и снова, пока условие цикла истинно — равно true
.
Это работает так: сначала проверяется условие, и если оно истинно, выполняется тело цикла (команда или блок команд), затем снова проверяется условие и снова выполняется тело цикла. И так до тех пор, пока условие не станет ложным.
Если условие всегда будет истинно, значит программа никогда не прекратит работать и будет всегда выполнять цикл.
Если же в самый первый раз условие было ложно, тело цикла не выполнится ни разу.
3. Примеры циклов
Вот несколько практических примеров использования циклов.
Код | Пояснение |
---|---|
|
На экран будут выведены 5 строк:
|
Код | Пояснение |
---|---|
|
На экран будут выведены 10 строк:
|
Код | Пояснение |
---|---|
|
Программа считывает с клавиатуры числа до тех пор, пока вводят именно числа. |
Код | Пояснение |
---|---|
|
Программа будет бесконечно печатать на экран букву С . |
Код | Пояснение |
---|---|
|
Программа будет вводить строки с клавиатуры,
пока не будет введена строка |
Функция equals()
в предыдущем примере используется для сравнения строк. Если строки равны, функция вернет результат — true
, если строки не равны, то вернет false
.
4. Цикл в цикле
Во время знакомства с условным оператором вы увидели, что с его помощью можно реализовывать сложную логику, если комбинировать несколько условных операторов. Другими словами, использовать if
внутри if
-а.
С циклами тоже так можно. Чтобы написать цикл в цикле, нужно в теле первого цикла написать второй. Выглядеть это будет примерно так:
while (условие внешнего цикла)
{
while (условие внутреннего цикла)
{
блок команд
}
}
Разберем три задачи.
Задача 1. Допустим, мы хотим написать программу, которая бы выводила на экран 4 раза слово Мама
. Цикл — это именно то, что нам нужно. И примерно так выглядел бы наш код:
Код | Пояснение |
---|---|
|
На экран будут выведены 4 строки:
|
Задача 2. Мы хотим написать программу, которая бы выводила в одну строку 5 букв А
. Для этого нам опять нужен цикл. Вот как будет выглядеть этот код
Код | Пояснение |
---|---|
|
Вместо println пишем print , иначе каждая буква A будет в отдельной строке.На экран будет выведено:
|
Задача 3. Мы хотим вывести на экран прямоугольник из букв А
размером в 4 строки и 5 столбцов. А вот для этого нам уже нужны вложенные циклы. Просто возьмем первый пример, где мы выводим 4 строки и заменим код по выводу одной строки на код из второго примера.
Код | Пояснение |
---|---|
|
Внешний цикл обозначен фиолетовым цветом, он использует переменную n для подсчета количества витков цикла.Внутренний цикл обозначен зеленым цветом. Для подсчета количества витков цикла он использует переменную m .Нужно явно переносить курсор на следующую строчку, после того как отработал внутренний цикл. Иначе все буквы, которые выведет программа, будут в одной строке. На экран будет выведено:
|
Внешний и внутренний циклы должны использовать разные переменные для подсчета количества уже сделанных витков. Также пришлось добавить команду System.out.println()
после внутреннего цикла, т.к он печатает буквы А
в одну строку, и после вывода всех букв кто-то должен перенести курсор на новую строчку.
5. Сравнение циклов: Java vs Pascal
Многие из вас изучали в школе Паскаль, поэтому чтобы облегчить вам понимание материала, приведем сравнение циклов while
в языке Pascal и в Java. Если вы не знаете Pascal, просто пропустите этот материал.
Pascal | Java |
---|---|
|
|
|
|
|
|
|
|
|
|
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ