Задача
Каковы будут значения переменных "result1" и "result2" после выполнения следующего сегмента кода?
int a = 6;
int b = 42;
int result1 = b / ++a;
int result2 = b / a++;
Варианты ответа:
1. result1: 6 result2: 6
2. result1: 6 result2: 7
3. result1: 7 result2: 6
4. result1: 7 result2: 7
Ответ: 1.
Объяснение
После выполнения первых двух строк кода, а будет иметь значение 6 и b значение 42.
При выполнении третьей строки кода, увеличенное значение а используется при оценке выражения int result1 = b / ++a;.
Значение а увеличивается до 7 перед вычислением выражения.
Поэтому, result1 = 42/7 = 6.
При выполнении четвертой строчки кода, текущее значение а используется при оценке выражения int result2 = b / a++;.
Значение а увеличивается после вычисления выражения.
Поэтому, result2 = 42/7 = 6.
Окончательное значение а=8.
Задача
Каким будет значение переменной “result” после выполнения следующего сегмента кода?
int i = 10;
int j = 25;
i += 5;
j /= i;
int result = i + j;
Варианты ответа:
1. 35
2. 16
3. 12
4. 11
Ответ: 2.
Объяснение
После выполнения первых двух строк кода, i будет иметь значение 10 и j значение 25.
При выполнении третьей строки кода, значение i увеличивается на 5 и результат присваивается обратно в i.
Таким образом, i становится 15.
При выполнении четвертой строки кода, значение j делится на i и результат присваивается обратно в j.
То есть, j = 25 / 15.
Так как это целое деление, j становится 1.
В последней строке, переменной result присваивается значение i + j, которое равно 15 + 1 = 16.
Давайте теперь посмотрим на еще одну структуру цикла.
Она называется do-while цикл.
Синтаксис do-while цикла начинается с ключевого слова do, а затем следует тело цикла.
И тело цикла завершается проверкой условия, используя ключевое слово while.
Основное различие между while циклом и do-while циклом является то, что do-while цикл будет выполнять действие, указанное в теле цикла без предварительной проверки условия, в то время как while цикл условие сначала проверит.
Давайте рассмотрим эту схему, чтобы проиллюстрировать поток управления для do-while цикла.
Как уже упоминалось, do-while цикл будет идти непосредственно в теле цикла без проверки любого условия, то есть, do-while цикл будет всегда выполнять действие по крайней мере, один раз.
После окончания выполнения действия, будет проверяться условие.
Если проверка условия вернет true, поток вернется к началу цикла, и выполнит действие еще раз.
Этот процесс будет повторяться, и программа выйдет из цикла, когда условие окажется ложным.
Здесь показана реализация n!, используя do-while цикл. И это выглядит очень похоже на реализацию, с помощью while цикла.
Как упоминалось ранее, метод будет выполнять тело цикла до проверки условия.
Обратите внимание, что я здесь использую сокращенные операторы.
Я хочу также отметить одну общую ошибку в использовании do-while цикла, то есть, когда забывают ставить точку с запятой после условного выражения.
Здесь показана реализация 2 в n степени, используя do-while цикл.
И это очень похоже на предыдущий пример, но вы можете проверить это более тщательно, потому что эта реализация не даст правильные результаты для всех случаев.
Подумайте, что будет, если number, то есть параметр, равен 0.
Следует помнить, что 2 в 0-й степени, как предполагается, дает 1 в результате. И поскольку do-while цикл всегда выполняется один раз до проверки условия, таким образом, даже если number равно 0, результат t будет изменен на 2 внутри цикла.
Когда счетчик оказывается меньше или равно 0, t уже получил значение 2, и возвращенный результат было бы неправильным для 2 в 0-й степени.
Вы можете подумать о том, как эта проблема может быть исправлена.
Третья структура цикла это for цикл.
Цикл for имеет довольно отличающийся синтаксис, чем while и do-while циклы. Он начинается с ключевого слова for.
Вместо того, чтобы иметь только одно условное выражение, как в while и do-while циклах, здесь есть три выражения, заключенные в круглые скобки после ключевого слова for.
Также следует обратить внимание на точку с запятой, отделяющей эти выражения.
Первое выражение является выражением инициализации, второе является условным выражением, а третье является выражением для обновления состояния.
Давайте посмотрим на поток управления, чтобы понять, как работает for цикл.
Цикл начинается с инициализации состояния, используя счетчик или повторяющуюся переменную.
Итерация выполняется только один раз в начале цикла. Затем проверяется условие, и тело цикла будет выполнено, если условие истинно.
После выполнения действия в теле цикла, затем будет вычисляться выражение обновления.
Здесь часто используется оператор увеличения или уменьшения.
Затем будет еще раз проверено условие. И этот процесс будет повторяться, если условие остается верным.
Цикл будет нарушен, когда условие станет ложным.
Здесь показана реализация n! используя for цикл.
Обратите внимание, что счетчик устанавливается в начале цикла.
На самом деле, счетчик может быть даже объявлен в цикле, как показано здесь.
Таким образом, область применения переменной счетчика будет ограничена только циклом.
Состояние и действие в теле цикла являются такими же, как и раньше.
Обновление счетчика выполняется в выражении обновления цикла. В этом случае используется оператор приращение.
Здесь показана реализация 2 в n степени, используя for цикл. И это очень похоже на то, что мы сделали для n!.
Кстати, здесь не будет никаких проблем при попытке вычислить 2 в 0-й степени, потому что условие проверяется перед входом в цикл.