Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
метод_Информатика.docx
Скачиваний:
17
Добавлен:
16.09.2019
Размер:
1.33 Mб
Скачать

Вопрос 41. Работа с двумерными массивами в c#.

Прямоугольный массив имеет больше одного измерения. Чаще всего используются двумерные массивы.

Варианты описания:

тип[,] имя;

тип[,] имя - new тип [ разм_1, разн_2 ] ;

тип[,] имя - { список_инициализаторов }:

тип[,] имя - new тип [,] { список_инициализаторов };

тип[,] иня - new тип [ рази_1, разн_2 ] { список_инициализаторов };

Примеры описаний:

int [ , ] a

int [ , ] b - new int[2. 3]

int [ , ] С - {{1, 2, 3}, {4, 5, 6}}

int [ , ] с = new int [ , ] {{1, 2, 3}, {4, 5, 6}}

int [ , ] d - new int[2,3] {{1, 2, 3}, {4, 5, 6}}

Обращение к элементу: a[1,4], a[i,j]

Вопрос 42. Алгоритмы сортировки массивов.

Сортировка данных это процесс изменения порядка расположения элементов в некоторых упорядоченных структурах данных таким образом, чтобы обеспечить возрастание или убывание числового значения элемента данных. Для переменных символьного типа понятия "возрастание" и "убывание" относятся к значениям машинного кода, используемого для представления символов в памяти компьютера. Существует много алгоритмов, обеспечивающих решение задачи сортировки. Одни из них обладают низким быстродействием, другие обладают очень высокой эффективностью и практически используются в современных компьютерных системах.

Наиболее известными являются следующие:

1) Метод сортировки обменами ("пузырьковая");

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

for (int j=0;j<a.Length-1;j++)

if (a[j]>a[j+1])

{

int c=a[j];

a[j]=a[j+1];

a[j+1]=c;

}

Очень плохая скорость сортировки.

2) Метод сортировки выбором элемента;

Осуществляется поиск максимального элемента во всем массиве, затем он меняется с последним элементом. Следующий, во всем массиве кроме последнего и меняется с предпоследним элементом. Осуществляется (n-1) проходов.

int n=a.Length;

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

{

int imax=0;

for (int j=0;j<n;j++) if (a[j]>a[imax]) imax=j;

int c=a[imax];

a[imax]=a[n-1];

a[n-1]=c;

n--;

}

Вопрос 43. Работа со строками в c#. Методы для работы со строками.

Строка в C# имеет ссылочный неизменяемый тип – внести изменения в строку нельзя, но можно получить копию с внесёнными изменениями (так и работают методы класса String).

Вопрос 44. Структуры в яп c#.

Структура — тип данных, аналогичный классу, но имеющий ряд важных отличий

от него:

  • структура является значимым, а не ссылочным типом данных, то есть экземпляр

  • структуры хранит значения своих элементов, а не ссылки на них, и располагается в стеке, а не в хипе;

  • структура не может участвовать в иерархиях наследования (нет потомков и родительского класса)

  • конструктор по умолчанию не изменяется, он уже определен и присваивает элементам значения по умолчанию – нули соответствующего типа

  • нельзя вызвать методы класса в конструкторе

  • в структуре запрещено определять деструкторы, поскольку это бессмысленно.

Любой значимый тип С# является структурным.

Применение: типы данных, имеющие небольшое количество полей, с которыми удобнее работать как со значениями, а не как со ссылками.

Синтаксис структуры:

[ атрибуты ] [ спецификаторы ] struct имя_структуры [ : интерфейсы ]

тело_структуры [ ; ]

Спецификаторы структуры имеют такой же смысл, как и для класса, причем из спецификаторов доступа допускаются только public, internal и private (последний — только для вложенных структур)

Интерфейсы, реализуемые структурой, перечисляются через запятую.

Тело структуры может состоять из констант, полей, методов, свойств, событий, операций, конструкторов, индексаторов и вложенных типов. Правила их описания и использования аналогичны соответствующим элементам классов, за исключением некоторых отличий, вытекающих из упомянутых ранее: поскольку структуры не могут участвовать в иерархиях, для их элементов не могут использоваться спецификаторы protected и protected internal; Cтруктуры не могут быть абстрактными (abstract), к тому же по умолчанию они бесплодны (sealed);

• методы структур не могут быть абстрактными и виртуальными;

• переопределяться (то есть описываться со спецификатором override) могут

только методы, унаследованные от базового класса object;

• при описании структуры нельзя задавать значения полей по умолчанию — это будет сделано в конструкторе по умолчанию, создаваемом автоматически (конструктор присваивает значимым полям структуры нули, а ссылочным — значение null).

Пример структуры (ученик и его баллы):

static void Main(string[] args)

{

Exams Pupkin = new Exams("Пупкин Василий Владимирович", 89, 85, 63);

}

public struct Exams

{

//конструктор

public Exams(string FIO, int Math, int Russian, int Physics)

{

this.FIO = FIO; //this – указание на поля экземпляра

this.Math = Math;

this.Physics = Physics;

this.Russian = Russian;

}

string FIO;

int Math, Russian, Physics;

public string Имя

{

get { return FIO; }

}

public int AverageBall

{

get {return (Math + Russian + Physics) / 3;}

}

Переопределение метода в структуре: ToString (например, для удобного вывода).

public override string ToString()

{

return string.Format("{0}, score {1}", FIO, Math);

}

Вызов: Console.WriteLine(Pupkin.ToString())