Так почему бы не написать более простую версию, просто b как условие?

Аналогично вы можете поступить, если мы имеем выражение b == false.



Вы можете выбрать более простую версию, не b.

И еще вы можете написать b как условие, и поменять операторы S1 и S2.

Здесь у нас есть другое выражение.



Давайте проанализируем его.

Здесь, если b не определено, результат не определен.

Если b истинно, результат будет истинным.

И если b является ложным, результат будет ложным.

Мы рассмотрели все возможные значения b и всего выражения

И мы видим, что они имеют одинаковые значения, что они эквивалентны.

Поэтому вместо всего этого выражения мы можем написать только b.

Та же самая ситуация будет с выражением не b.

Теперь, давайте посмотрим выражение b? c: false.



Если b не определено, все выражение не определено.



Если b истинно, результат равен c.

Однако, если b является ложным, результат будет ложным.

Результат будет истина, только если b и с истина, во всех других случаях результат будет ложным.

Это эквивалентно логическому оператору и.

И наоборот, выражение b? true: c эквивалентно логическому оператору или.


Циклы while и for


Давайте представим, что мы хотим разделить целое число m на другое целое число n.

И мы хотим получить результат целочисленного деления, то есть самое большое количество раз, которое n вписывается в m.



Например, целочисленное деление 7 на 2, равно 3, потому что 2 по 3 раза, это 6.

Остаток равен 1.

И представьте себе, что у нас нет встроенной операции, которая выполняет эту операцию для нас.

Поэтому нам нужно сделать повторяемые вычитания.

И если нам удастся вычесть 2 из 7 три раза, это означает, что целочисленное деление равно 3.

Целочисленное деление y и целочисленный остаток x соответствуют формуле, m равно y умножить на n плюс x.

Предположим, что нам даны целые числа m и n.

А в x сохраняется оставшееся значение после вычитаний.



Итак, давайте начнем с x равно m.

y содержит результат целочисленного деления.

Мы инициализируем y 0 и приращиваем y на 1 каждый раз, когда мы вычитаем n из x.

И мы продолжаем вычитать n из x, пока x не меньше n.

Если x больше или равно n, мы вычитаем n из x и увеличим y на 1.

Таким образом, эта программа делает то, что мы хотим, но тут есть проблема.

Мы не знаем, сколько операторов if мы должны добавить.

Потому что это зависит от фактических значений m и n.

Например, с 7 и 2, это будет три выражения if.

При других входных данных это должно быть другое число if выражений.

В Java эту проблему решает оператор while.

Теперь эта программа делает то же самое, что и прежде, повторяет выражение, пока выполняется условие.



Но теперь у нас есть одно большое преимущество.

Выражения повторяются столько раз, сколько это необходимо, автоматически.

Но теперь вы должны быть очень осторожны при написании условия while.

Потому что есть опасность войти в бесконечный цикл, если условие while никогда не прекратится.

Преимущество цикла while заключается в том, что нам не нужно заранее знать, сколько раз мы должны что-либо повторять.



Мы повторяем, пока не будет достигнута цель, выраженная логическим условием.

Иногда, однако, мы знаем, сколько раз нам нужно что-либо повторить.

Это легко реализовать подсчетом.

Хитрость заключается в том, чтобы ввести счетчик.

Это целочисленная переменная, которую мы обновляем на каждой итерации.



Здесь существует три важных элемента: величина, с которой мы хотим начать, значение в конце и шаг между значениями.

Здесь мы начинаем с 0 и заканчиваем 3. И шаг 1.

Поэтому мы выполняем четыре итерации для i равного 0, 1, 2 и 3.

Теперь, помимо подсчета, мы можем захотеть что-то сделать в теле цикла.