Главная / Программирование /
Основы программирования на С# 3.0: ядро языка / Тест 10
Основы программирования на С# 3.0: ядро языка - тест 10
Упражнение 1:
Номер 1
Отметьте истинные высказывания:
Ответ:
 (1) процедуры и функции связываются с классом, они обеспечивают требуемую функциональность класса и называются методами класса 
 (2) процедуры и функции могут существовать вне класса 
 (3) для сложных методов класса допустима декомпозиция, позволяющая выделить подзадачи в процедурах и функциях 
Номер 2
Метод можно описать на уровне:
Ответ:
 (1) класса 
 (2) пространства имен 
 (3) проекта 
 (4) решения 
Номер 3
Отметьте истинные высказывания:
Ответ:
 (1) первыми формами модульности, появившимися в языках программирования, были классы 
 (2) процедуры и функции, а теперь и классы позволяют решать одну из важнейших задач, стоящих перед программистами, - задачу повторного использования программного кода 
 (3) в объектно-ориентированном программировании класс играет роль архитектурного модуля, поскольку программная система строится из классов 
 (4) в объектно-ориентированном программировании процедура играет роль архитектурного модуля, поскольку программная система строится из процедур 
Упражнение 2:
Номер 1
Укажите те свойства метода, которыми обладают процедуры, но не обладают функции:
Ответ:
 (1) методу доступны поля класса, как для чтения, так и для записи 
 (2) метод имеет возвращаемое значение, тип которого отличен от void 
 (3) метод имеет возвращаемое значение типа void 
 (4) метод может быть вызван в выражениях 
 (5) метод может быть вызван как оператор языка 
Номер 2
Отметьте истинные высказывания:
Ответ:
 (1) оператор return
можно появиться только в теле метода, реализованного как функция 
 (2) функция не может возвращать значение void 
 (3) функцию нельзя вызывать как оператор 
 (4) процедуру нельзя вызывать в выражениях 
Номер 3
Укажите те свойства метода, которыми обладают функции, но не обладают процедуры:
Ответ:
 (1) методу доступны поля класса, как для чтения, так и для записи 
 (2) метод имеет возвращаемое значение, тип которого отличен от void 
 (3) метод имеет возвращаемое значение типа void 
 (4) метод может быть вызван в выражениях 
 (5) метод может быть вызван как оператор языка 
Упражнение 3:
Номер 1
Отметьте правильную синтаксическую формулу, задающую заголовок метода:
Ответ:
 (1) [атрибуты][модификаторы]{void| тип_результата_функции} имя_метода([список_формальных_аргументов])
 
 (2) [атрибуты][модификаторы] имя_метода([список_формальных_аргументов]) : {void| тип_результата_функции}
 
 (3) {void| тип_результата_функции} имя_метода([список_формальных_аргументов])
 
 (4) [атрибуты][модификаторы] имя_метода([список_формальных_аргументов])
 
Номер 2
Переменные, появляющиеся в теле метода, могут быть:
Ответ:
 (1) полями класса 
 (2) аргументами метода 
 (3) глобальными переменными, объявленными на уровне пространства имен 
 (4) локальными переменными, объявленными в теле метода 
Номер 3
Заголовок метода позволяет однозначно определить:
Ответ:
 (1) сигнатуру метода 
 (2) состав полей класса, используемых в методе 
 (3) как реализован метод - процедурой или функцией 
Упражнение 4:
Номер 1
Укажите, какие свойства выполняются для аргументов из списка формальных аргументов метода:
Ответ:
 (1) число аргументов фиксировано 
 (2) число аргументов может быть произвольным 
 (3) аргументы могут сопровождаться ключевыми словами - ref, out
 
 (4) явно задается тип аргумента 
 (5) аргумент может быть только именем 
 (6) аргумент может быть выражением 
Номер 2
Укажите, какие свойства выполняются для аргументов из списка фактических аргументов метода:
Ответ:
 (1) число аргументов фиксировано 
 (2) число аргументов может быть произвольным 
 (3) аргументы могут сопровождаться ключевыми словами - ref, out
 
 (4) явно задается тип аргумента 
 (5) аргумент может быть только именем 
 (6) аргумент может быть выражением 
Номер 3
Перегруженные методы класса:
Ответ:
 (1) не могут существовать в классе 
 (2) имеют одно и то же имя 
 (3) отличаются сигнатурой 
 (4) при вызове перегруженного метода всегда можно однозначно определить, какая реализация перегруженного метода должна быть вызвана 
Упражнение 5:
Номер 1
Какие из приведенных функций являются функциями с побочным эффектом:
Ответ:
 (1) int p1(int x, out int y){y = x +1; return x +y;}
 
 (2) int p2(int x, int y){y = x +1; return x +y;}
 
 (3) int p3(ref int y){ return y++;}
 
 (4) int p4(int y){ return y++;}
 
Номер 2
Для метода
int p(int x, out int y){y = x +1; return x +y;}
Ответ:
 (1) первый аргумент вызывается по значению, второй по ссылке 
 (2) первый аргумент вызывается по ссылке, второй по значению 
 (3) оба аргумента вызываются по ссылке 
 (4) оба аргумента вызываются по значению 
Номер 3
В каких вызовах возникнет ошибка, если задано описание
int x=1; int z=0; int p(int x, out int y){y = x +1; return x +y;}
Ответ:
 (1) x = p(out 77,z);
 
 (2) x = p(77+z, out z);
 
 (3) p(77+z, out z);
 
 (4) x = p(77, out (77+z)).
 
Упражнение 6:
Номер 1
Отметьте истинные высказывания:
Ответ:
 (1) только первый формальный аргумент метода может сопровождаться ключевым словом out
или ref
 
 (2) только последний формальный аргумент метода может сопровождаться ключевым словом out
или ref
 
 (3) только первый формальный аргумент метода может сопровождаться ключевым словом params
 
 (4) только последний формальный аргумент метода может сопровождаться ключевым словом params
 
Номер 2
Отметьте истинные высказывания:
Ответ:
 (1) только функции являются методами класса 
 (2) число формальных и фактических аргументов метода должно совпадать 
 (3) если формальный аргумент объявлен с ключевым словом out
, то в теле метода ему должно присваиваться значение 
 (4) перегруженными называются методы с большим числом аргументов 
 (5) функции с побочным эффектом в языке C# не допускаются 
Номер 3
Отметьте истинные высказывания:
Ответ:
 (1) если аргумент метода вызывается по значению, то изменение аргумента в теле метода не изменяет значение фактического аргумента в результате вызова метода 
 (2) если аргумент метода вызывается по ссылке, то изменение аргумента в теле метода не изменяет значение фактического аргумента в результате вызова метода 
 (3) формальные аргументы значимого типа, представляющие выходные или обновляемые результаты метода, вызываются по ссылке и должны снабжаться ключевыми словами out
или ref
 
Упражнение 7:
Номер 1
При проектировании класса часто возникает дилемма: иметь поле класса, хранящее информацию, или иметь функцию без аргументов, получающую эту информацию динамически. Какое решение этой проблемы является корректным, если известно, что информация объемна и число создаваемых объектов в ходе работы программы может быть велико?
Ответ:
 (1) всегда следует создавать поле класса 
 (2) всегда следует создавать функцию 
 (3) в такой ситуации, скорее всего, следует экономить память и создавать функцию 
 (4) в такой ситуации, скорее всего, следует экономить время и создавать поле класса 
Номер 2
При проектировании класса часто возникает дилемма: иметь поле класса, хранящее информацию, или иметь функцию без аргументов, получающую эту информацию динамически. Какое решение этой проблемы является корректным, если известно, что информация не велика по объему, а время отклика играет важную роль?
Ответ:
 (1) всегда следует создавать поле класса 
 (2) всегда следует создавать функцию 
 (3) в такой ситуации, скорее всего, следует экономить память и создавать функцию 
 (4) в такой ситуации, скорее всего, следует экономить время и создавать поле класса 
Номер 3
Методы класса могут вызывать друг друга и обмениваться информацией. Пусть метод M1 вызывает метод M2. Метод M1 может передать входные данные методу M2 и получить от него результаты работы, используя:
Ответ:
 (1) глобальные переменные, объявленные на уровне пространства имен или на уровне проекта 
 (2) поля класса 
 (3) аргументы метода M2 
 (4) локальные переменные метода M1 
 (5) локальные переменные метода M2