Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
5 метод по вып практ раб.doc
Скачиваний:
25
Добавлен:
17.11.2018
Размер:
549.89 Кб
Скачать

Вопросы по синтаксису языка и объектно-ориентированному программированию

Ниже перечисленные вопросы по сложности расположены в произвольном порядке (их упорядоченность по темам). Это связано с тем, что подразумевается, что студент к началу работы над разбором познакомился с языком и ему остаётся только углубить понимание специфики и конструкций языка, кроме того студент к моменту изучения языка JAVA изучал как процедурные языки (PASCAL, С), так и знакомился с объектно-ориентированными (С#). А значит нужно ориентироваться на отличия JAVA от других языков и на темы, а не сложность изложения. При этом рекомендуется в сложных вопросах при их разборе обращаться к дополнительной литературе, предоставленной в электронном виде для чтения, в частности разбор спецификации Гослинга (одного из создателей языка), книги по Java от компании SUN, «Философия JAVA» Брюса Эккеля. Также рекомендуются следующие электронные ресурсы и пособия:

  1. http://javaalmanac.com/ Примеры кода из Java Developers Almanac

  2. Шилдт, Г. Java 2 v.5.0. [Электрон. ресурс] http://bsu.iba.by/books/Java2v5.zip

Гослинг, Дж., Арнольд, К. Язык программирования Java [Электрон. ресурс] http://bsu.iba.by/books/goslingJava.zip

Синтаксис и семантика языка

Вопрос 1: Каков будет результат выполнения программы

1. public class Test {

2. public Test() {

3. }

4.

5. public static void main(String[] args) {

6. Test test = new Test();

7. int i = 5;

8. while(i = 5){

9. System.out.println(i++);

10. }

11. }

12.

}

• 1 Компилятор выдаст сообщение об ошибке в строке 8

• 2 На консоль будут последовательно выведены значения 01234

• 3 На консоль будут последовательно выведены значения 43210

• 4 Программа откомпилируется,но на консоль ничего выведено не будет

Ответ: Правильный ответ 1. В операторе while может быть использовано только булево значение. В данном случае используется оператор присваивания,а не сравнения, т.о. компилятор выдаст ошибку. Так как здесь предложено выбрать только один ответ остальные ответы неверные

Вопрос 2: Приведенная ниже программа должна вывести на консоль Hello World! Выберите строки, которые нужно модифицировать в вашей программе, что бы получить правильный результат.

1. public class Test {

2. public Test() {

3. }

4. public static void main(String[] args) {

5. Test test = new Test();

6. String [] arr = {"H","e","l","l","o","

","w","o","r","l","d","!"};

7. String result = "";

8. int i= 0;

9. for(;;;){

10. result += arr[i++];

11. }

12. System.out.println(result);

13. }

14. }

• 1 Заменить строку 9 на for(i = 0; i < arr.length;){

• 2 Заменить строку 9 на for(int int i = 0; i < arr.length;){

• 3 Заменить строку 9 на for(i = 0; i < arr.length;i++){

• 4 Заменить строку 9 на for(i = 1; i <= arr.length;i++){

Ответ: Правильный ответ 1

Ответ 2 не верен так как переменная i уже определена в методе main. Здесь следует еще раз напомнить, что область видимости переменной (если она объявлена в цикле for) будет ограничиваться лишь телом цикла. Однако в данном случае перемена с таким именем уже объявлена в теле метода и соответственно находится в той же области видимости. Если переменная была бы объявлена, как переменная класса, то этот код откомпилировался бы вполне успешно. Ответ 3 не является верным так как, увеличение значения i в теле цикла будет произведено дважды, т.о. на печать будут выведены лишь четные элементы массива. Ответ 4 не является верным по двум причинам. Первая – элементы массива нумеруются с 0, соответственно первым будет выбран второй элемент массива, вторая – когда выполнится условие окончания цикла, будет нарушена граница массива и будет вызвано исключение IndexOfBoundException

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]