013 Java While Dowhile

Цикл 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

Домашнее задание #

  1. Перепишите примеры из урока 10 с использованием новых знаний.
  2. Попробуйте написать вложенные циклы с помощью While и Do-While