Задача
Учитывая следующий сегмент кода, каким было бы окончательное значение х, если изначально:
i) x = 8, y = 4, z = 2
ii) x = 2, y = 4, z = 8
iii) x = 2, y = 8, z = 4
Код:
if(z < y)
if(x > y)
x = 10;
else
x = 3;
Варианты ответа:
1. i) 10 ii) 2 iii) 3
2. i) 10 ii) 3 iii) 2
3. i) 10 ii) 3 iii) 3
4. i) 8 ii) 2 iii) 2
Ответ: 1.
Объяснение
В приведенном выше коде, else выражение должно следовать второму if выражению. Таким образом, код должен быть интерпретирован следующим образом:
if(z < y) {
if(x > y) {
x = 10;
} else {
x = 3;
}
}
В случае i) z меньше у, и х больше, чем у. Поэтому х присваивается значение 10.
В случае ii) z больше, чем у, поэтому присваивание х не производится. Поэтому х сохраняет свое первоначальное значение 2.
В случае iii) z меньше, чем у, и х меньше у. Таким образом, х присваивается значение 3.
Задача
Учитывая следующее switch выражение, каким будет окончательное значение grade, если начальное значение score составляет 52? Что будет, если начальное значение score 89?
int score; //initialize value according to question
char grade;
switch(score/10) {
case 10: grade = 'A';
case 9: grade = 'A'; break;
case 8: grade = 'B';
case 7: grade = 'C';
case 6: grade = 'C'; break;
case 5: grade = 'D';
default: grade = 'F';
}
// i) initial value of score = 52;
// ii) initial value of score = 89;
Варианты ответа:
1. i) 'A', ii) 'A'
2. i) 'D', ii) 'B'
3. i) 'F', ii) 'C'
4. i) 'F', ii) 'F'
Ответ: 3.
Объяснение
В приведенном выше switch выражении, break выражение доступно только в случае 9 и случае 6.
Поэтому значение grade будет 'A' для оценки от 100 до 90; 'C' для оценки в пределах от 89 до 60 и 'F' для оценки ниже 60.
Ранее мы обсуждали темы области видимости и выражений ветвления.
Правила области видимости имеют важное значение для разрешения имен и ограничения области видимости переменных, так что изменения, внесенные в одной части программы, не могут случайно повлиять на другую часть программы.
Это особенно важно, когда разные команды участвуют в разработке различных частей одной комплексной программы.
Трудно полностью избежать использования идентификаторов с одним и тем же именем в разных частях программы разными программистами.
Даже в реальной жизни, вы не можете заставить разные города не использовать одни и те же популярные названия улиц.
Теперь давайте начнем обсуждение циклов.
Давайте сначала обсудим, чем являются циклы и почему циклы полезны в программировании.
Для программ, которые мы писали до сих пор, мы должны были перезапускать программу каждый раз, когда мы хотели запустить программу на другом наборе входных данных.
Я уверен, что вы не были довольны такими ограничениями.
Например, в программе CourseGrade, вы можете захотеть вычислить оценки для разных студентов, при одном выполнении программы.
В примере с автомобилем, вместо того чтобы сделать только один шаг, вы можете захотеть перемещать автомобиль непрерывно в разных направлениях.
И вместо того чтобы создавать только одно единственное трехмерное изображение, вы можете захотеть создать последовательность трехмерных изображений.
Для того, чтобы сделать это, язык программирования должен поддерживать определенные структуры управления, позволяющие выполнять набор одинаковых действий, которые будут осуществляться неоднократно.
Такого рода управляющие структуры называются циклами.
Циклы позволяют выполнять набор одинаковых действий, которые будут выполняться многократно с помощью одного и того же блока кода.
И Java поддерживает три различных типа циклов, а именно while цикл, do-while цикл и for цикл.
Я буду обсуждать каждый из них в деталях.
Подобно if else выражениям, циклы также могут быть вложенными.
И я буду использовать примеры для иллюстрации некоторых полезных применений циклов.
Давайте сначала посмотрим на while цикл.
Цикл while начинается с ключевого слова while, а затем следует выражение условия.
Цикл while выполняется, если выражение условия возвращает true, тогда действие в теле while цикла выполняется.
Действие цикла будет повторяться до тех пор, пока выражение условия не вернет false.
Действием внутри тела цикла может быть группа выражений, или только одно выражение.
Поток управления while циклом может быть проиллюстрирован на показанной блок-схеме.
Давайте посмотрим на эту блок-схему более подробно.
Когда программа входит в цикл, она сначала оценивает выражение условия. И помните, что выражение условия может быть оценено как истина или ложь.
Если условие истинно, блок кода, представляющий действие, будет выполнен.
Действие может быть представлено одним выражением или несколькими выражениями.
Это может быть даже еще один цикл. И я поговорю больше о вложенном цикле позже.
После окончания выполнения действия, контролируемый поток будет возвращаться в начало цикла, чтобы оценить условие снова.
Обратите внимание, что что-то должно было быть изменено, когда выполнялось действие.
В противном случае, условие всегда будет оценено в то же значение, как и раньше.
Если предположить, что условие по-прежнему возвращает true, действие будет выполнено снова, и процесс будет повторяться.
Вы можете видеть, что вся структура выделена желтым цветом и здесь сформирован цикл.
Программа выйдет из цикла, когда условие окажется ложным, и она продолжит выполнять остальную часть кода.