Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Аккредитация_Программирование_Ответы.doc
Скачиваний:
1
Добавлен:
22.11.2019
Размер:
401.41 Кб
Скачать

Вопросы к аккредитации

специальности «Компьютерная безопасность», «Информатика»

по курсу «Программирование»

Вопрос №1.

1. Найдите две ошибки в реализации представленного метода и объясните их происхождение. Запишите верную реализацию метода

static int SumArray(double[] a)

{

double Sum = 0;

for (int i = 0; i < 10; i++) Sum += a[i];

return Sum;

}

2. Запишите логическое выражение, определяющее принадлежность точки с координатами (x,y) области, изображенной на рисунке.

3. Переведите число в двоичную систему счисления: 12708

4. Рассмотрите реализацию представленного ниже класса. Запишите все возможные варианты создания экземпляра класса Person.

class Person

{

private string name;

private int id=0;

private bool flag=true;

public Person(string name, int id)

{

this.name = name; this.id = id;

}

public Person(string name)

{

this.name = name;

}

public Person(string name = "No name", int id = -1, bool f = false)

{

this.name = name; this.id = id; this.flag = f;

}

}

Вопрос 1.

1. Метод возвращает сумму элементов одномерного массива элементов типа double, поэтому возвращаемое методом значение должно иметь тип double, а не int. Эта ошибка реализации метода будет обнаружена еще на этапе компиляции.

2. Условие выполнения цикла (i<10) неверно, так как метод может получить через параметр массив любой размерности. В приведенном примере, если длина массива меньше 10, то метод найдет только сумму первых десяти элементов. Если длина массива больше 10, то при выполнении метода возникнет исключение IndexOutOfRangeException (выход индекса за границы диапазона). Ошибка возникнет на этапе выполнения программы.

3. Исправленная реализация метода

static double SumArray(double[] a)

{

double Sum = 0;

for (int i = 0; i < a.Length; i++) Sum += a[i];

return Sum;

}

Вопрос 2.

  1. Уравнение первой окружности: x2 + y2 = 9

  2. Уравнение первой окружности: x2 + y2 = 49

Точка с координатами (x,y) принадлежит области:

((x*x+y*y>=9)&&(x*x+y*y<=49))

или

(Math.Pow(x, 2) + Math.Pow(y, 2) >= 9) && (Math.Pow(x, 2) + Math.Pow(y, 2) <= 49)

Вопрос 3.

12708=001 010 111 000=1 010 111 0002

Вопрос 4.

Person p1 = new Person("Ivanov", 101); - первый конструктор (поля name и id примут значения “Ivanov” и 101)

Person p2 = new Person("Ivanov"); - второй конструктор (поля name и id примут значения “Ivanov” и 0)

Person p3 = new Person(); - конструктор с параметрами по умолчанию (поля name, id, flag примут значения “No name”, -1, false)

Person p4 = new Person("Petrov",102,true); - конструктор с параметрами по умолчанию (поля name, id, flag примут значения “Petrov”, 102, true)

Вопрос №2

1. Найдите две ошибки в реализации представленного метода и объясните их происхождение. Запишите верную реализацию метода.

static int CountPositive(int[] a)

{

int count;

for (int i = 1; i < a.Length; i++)

if (a[i]>0) count++;

return count;

}

2. Запишите логическое выражение, определяющее принадлежность точки с координатами (X,y) области, изображенной на рисунке.

3. Переведите число в двоичную систему счисления: 2A1916

4. Рассмотрите реализацию представленного ниже класса. Добавьте в класс реализацию свойств для доступа к закрытым полям name и id (значение поля id не может быть отрицательным).

class Person

{

private string name;

private int id=0;

public Person(string name, int id)

{

this.name = name; this.id = id;

}

}

Вопрос 1.

1. Метод возвращает количество положительных элементов в целочисленном одномерном массиве.

Переменная count объявлена, но не проинициализирована, поэтому при выполнении операции count++ возникнет ошибка (ошибка возникнет на этапе компиляции).

2. В цикле перебор элементов массива начинается с позиции i=1, т.е. первый элемент массива с индексом 0 не рассматривается. Так как индексация элементов массива начинается с 0, то необходимо в цикле переменную i инициализировать значением 0.

3. Исправленная реализация метода

static int CountPositive(int[] a)

{

int count=0;

for (int i = 0; i < a.Length; i++)

if (a[i] > 0) count++;

return count;

}

Вопрос 2.

Уравнение первой окружности: x2 + y2 = 15*15

Уравнение первой окружности: x2 + y2 = 625

Точка с координатами (x,y) принадлежит области:

((x*x+y*y<=15*15) || (x*x+y*y>=25*25))

или

(Math.Pow(x, 2) + Math.Pow(y, 2) <= Math.Pow(15, 2)) | | (Math.Pow(x, 2) + Math.Pow(y, 2) >= Math.Pow(25, 2))

Вопрос 3.

2A1916=0010 1010 0001 1001=10 1010 0001 10012

Вопрос 4.

class Person

{

private string name;

private int id = 0;

public Person(string name, int id)

{

this.name = name; this.id = id;

}

public string Name

{

get { return name; }

set { name = value; }

}

public int Id

{

get { return id; }

set { if (value >= 0) id = value; }

}

}

Вопрос №3

1. Объясните результат работы представленного ниже метода. Запишите фрагмент программного кода для вызова этого метода.

static int[] RandomArray(int size, int a, int b)

{

int[] array = new int[size];

Random rnd = new Random();

for (int i = 0; i < array.Length; i++)

array[i] = rnd.Next(a, b);

return array;

}