Цикл While и Do While — введение в Java 013 #
Это самая лёгкая глава. Потому что цикл while — родной брат цикла for.
Пример:
public class WhileWeAreYoung {
public static void main(String[] args){
int i = 0;
while(i < 10){
System.out.println(i);
i++;
}
}
}
Изученный цикл for мы бы написали так:
public static void main(String[] args) {
for (int i = 0; i < 10 ; i++){
System.out.println(i);
}
}
В цикле for стоит условие, и в while стоит условие. While цикл только проверяет правильность условия. В какой-то мере while может заменить связку for + if: “пока дети младше 18 лет — алкоголь не продавать”.
Иногда мы можем предполагать, что операция запустит бесконечный процесс или процесс, который невозможно выполнить современными средствами. Тогда нам помогает break — выход из цикла.
Например, такое возможно при подсчёте степени двойки (вспоминаем задачу про шахматную доску) или при подсчёте точного числа PI или при вычислении ряда Фибоначчи.
while (true){
System.out.println(i);
i++;
if (i > 20)
//код
break; // выход из цикла
}
Если вам он кажется достаточно спорным, помните, что ситуации бывают разными.
У цикла while есть кузен do-while:
do
{
Команда();
}
while(Булевое выражение)
Например:
// Декларирование и инициализация переменной
int i = 0;
// Команда, которая будет выполнена минимум один раз
do
{
// Команда выполняется трижды
System.out.println("i равно "+ i);
// Инкриментирование переменной
i+=10;
}
// Условие выхода из цикла
while(i <= 20);
Цикл while называют циклом с предусловием.
Цикл do while — циклом с постусловием.
В первом случае (while) код будет выполнен, согласно данным входа, во втором случае (do while) код будет выполнен минимум один раз, и только потом будет проверка на выход из цикла.
Цикл — определение #
Циклы — это разновидность управляющих конструкций для организации многократного выполнения одного и того же участка кода.
Код внутри такой управляющей конструкции выполняется циклично. Каждое выполнение кода — это итерация цикла. Количество итераций регулируется условием цикла. Код, который выполняется внутри цикла, называют телом цикла.
Пример использования while #
78 из десятичной системы переводим в двоичные 1001110.
78 : 2 = 39 остаток: 0
39 : 2 = 19 остаток: 1
19 : 2 = 9 остаток: 1
9 : 2 = 4 остаток: 1
4 : 2 = 2 остаток: 0
2 : 2 = 1 остаток: 0
1 : 2 = 0 остаток: 1
Решение с помощью while
public static String convertDecimalToBinary(int decimal) {
int remainder;
String output = "";
while (decimal > 0) {
remainder = (decimal % 2);
output = Integer.toString(remainder) + output;
decimal = decimal / 2;
}
return output;
}
Дополнительные материалы #
While, Do While: https://docs.oracle.com/javase/tutorial/java/nutsandbolts/while.html
Домашнее задание #
- Перепишите примеры из урока 10 с использованием новых знаний.
- Попробуйте написать вложенные циклы с помощью While и Do-While