Содержание

Слайд 2

Массивы относятся к ссылочным типам, а следовательно, память им отводится в

Массивы относятся к ссылочным типам, а следовательно, память им отводится в

"куче".
В языке C# имеются одномерные массивы и многомерные массивы.
Кроме них, в языке C# также имеется новый тип массивов – ступенчатый.
Слайд 3

Одномерные массивы Массивы соответствуют типу System.Array Объявление массива [ ] ;

Одномерные массивы

Массивы соответствуют типу System.Array
Объявление массива [ ] <имя_массива> ;


тип элемента массива
[] признак того, что объявляется массив
<имя_массива> идентификатор массива
Пример
int k; переменная k, представляющая целое число, значение не задано, переменная создаётся в стеке.
int[] m; массив m, состоящий из целых чисел, число и значения элементов не заданы, в стеке создаётся пустая ссылка.
double f; переменная f, представляющая вещественное число, значение не задано, переменная создаётся в стеке.
double[] x; массив X, состоящий из вещественных чисел, число и значения элементов не заданы, в стеке создаётся пустая ссылка.
Слайд 4

Создание массива имя_массива = new type[n]; имя_массива = new type[n] {x1,

Создание массива имя_массива = new type[n];
имя_массива = new type[n] {x1, x2, …,

xn};
Если уже выполнено
int[] m;
double[] x;
то можно создать массив в куче:
m=new int[5]; создаётся в куче набор из 5 пустых элементов целого типа m[0], m[1], m[2], m[3], m[4]
x=new double[10]; создаётся в куче набор из 10 пустых элементов. веществ. типа x[0], x[1], x[2], ..., x[9]
m=new int[5] {1, 2, 0, 5, -7};
создаётся в куче набор из 5 элементов целого типа равных указанным числам m[0]=1, ..., m[4]=-7
Слайд 5

Массив - Array int [ ] a = new int [5];

Массив - Array

int [ ] a = new int [5]; //

можно одним оператором
a[ ] =0; // нельзя использовать массив без индекса
a[3] = 9;
a[0] = 1

1

3

7

9

11

10256

10260

10264

10268

10272

0

1

2

3

4

Слайд 6

Инициализация массивов По умолчанию записывается нуль или null. Для работы с

Инициализация массивов

По умолчанию записывается нуль или null.
Для работы с массивом необходимо

заполнить его значения:
int[] a = new int [5] {1,2,3,4,5};
int[] b = {5,7,9};
char[] s = new char [7] {'s','t','u','d','e','n','t'};
char[] s = {'s','t','u','d','e','n','t'};
Слайд 7

Пример разных способов объявления массивов //объявляется одномерный массив A int[] A

Пример разных способов объявления массивов

//объявляется одномерный массив A
int[] A = new

int[5] {1,2,3,4,5};
//объявление массива x с явной инициализацией
int[] x ={5,5,6,6,7,7};
//объявление массивов с отложенной инициализацией
int[] u,v;
u = new int[3];
Слайд 8

Пример работы с массивами int[] u,v; u = new int[3]; for

Пример работы с массивами

int[] u,v;
u = new int[3];
for (int i=0; i<3;

i++) u[i] = i+1;
v = new int[4];
v=u; //допустимое присваивание
Оператора присваивания v = u является правильным ссылочным присваиванием: хотя u и v имеют разное число элементов, но они являются объектами одного класса.
Теперь обе ссылки u и v будут теперь указывать на один и тот же массив, так что изменение элемента одного массива немедленно отразится на другом массиве.
На массив v теперь никто ссылаться не будет, и он будет считаться мусором, который автоматически удаляется с помощью сборщика мусора.
Слайд 9

Методы и свойства массивов Свойства массива Rank – количество размерностей Length

Методы и свойства массивов

Свойства массива
Rank – количество размерностей
Length – количество

элементов массива (32 битное значение)
Статические методы класса System.Array
BinarySearch() – индекс заданного элемента в сортированном массиве
IndexOf() – индекс заданного элемента в массиве
Clear() – обнуление группы элементов в массиве
Clone( ) – неполное копирование (если элементы массива ссылки, то копируются ссылки)
Copy() – копирует все (или часть) элементов одного массива в другой
Resize() – изменение длины массива
Reverse() – изменение порядка всех (или части) элементов на обратный
Sort() – сортировка элементов массива по возрастанию
Методы массива
CopyTo( ) – копирует часть элементов одного массива в другой
GetLength (n) – количество элементов в размерности n
Слайд 10

Пример int[] m = new int [5] { 1, 2, 3, 4, 5 };

Пример

int[] m = new int [5] { 1, 2, 3,

4, 5 };
Слайд 11

Использование цикла foreach с массивами Традиционный способ обработки массивов: Найти сумму

Использование цикла foreach с массивами

Традиционный способ обработки массивов:
Найти сумму элементов массива
int[]

ar = { 1, 2, 3, 4, 5 };
int s=0;
for (int i = 0; i
Слайд 12

Оператор foreach foreach( in ) оператор переменной должен соответствовать типу элементов

Оператор foreach
foreach(<тип> <переменная> in <имя массива>) оператор
<тип> переменной должен соответствовать типу

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

Пример использования foreach Найти сумму элементов массива int[] arr = new

Пример использования foreach

Найти сумму элементов массива
int[] arr = new int[5] {1,2,3,4,5}
int

s =0;
foreach(int c in arr)
{
s += c;
}
Слайд 14

Примеры работы с одномерными массивами Выполнить циклический сдвиг элементов влево на

Примеры работы с одномерными массивами

Выполнить циклический сдвиг элементов влево на один
int[]

m = new int[5] { 1, 2, 3, 4, 5 };
int x = m[0];
for (int i = 0; i < m.Length-1; i++)
m[i]=m[i+1];
m[m.Length - 1] = x;
Слайд 15

Выполнить сортировку элементов массива. (простейший алгоритм)

Выполнить сортировку элементов массива.
(простейший алгоритм)

Слайд 16

Заменить каждый элемент массива суммой данного и предшествующих элементов 1 2

Заменить каждый элемент массива суммой данного и предшествующих элементов
1 2 3

4 5 -> 1 3 6 10 15
int[] m = new int[5] { 1, 2, 3, 4, 5 };

for (int i = 0; i < m.Length; i++) {
int s=0;
for (int j = 0; j <= i; j++) s+=m[j];
m[i]=s;
}

1 2 3 4 5 -> 1 3 7 15 31

for (int i = m.Length-1; i >= 0; i--)
{
int s=0;
for (int j = 0; j <= i; j++) s+=m[j];
m[i]=s;
}

1 2 3 4 5 -> 1 3 6 10 15

for (int i = 1; i < m.Length; i++)
m[i] += m[i-1];

1 2 3 4 5 -> 1 3 6 10 15

Слайд 17

Многомерные массивы. Двухмерные массивы (таблицы) Многомерные массивы характеризуются двумя или более

Многомерные массивы. Двухмерные массивы (таблицы)

Многомерные массивы характеризуются двумя или

более измерениями, а доступ к каждому элементу обеспечивается двумя или более индексами.
Простейшим многомерным массивом является двумерный массив.
Двумерные массивы создаются с помощью инструкций следующего типа:
тип [,] имя_массива = new тип [размер1,размер2];
Слайд 18

Пример int [,] a = new int [3,4]; a [1,2] =

Пример

int [,] a = new int [3,4];
a [1,2] = 4;
int [,]

a = {{1,0,1,0}, {2,3,4,5}, {0,3,0,3}};

1

1

2

4

0

0

0

0

3

3

3

5

3

2

1

0

0

1

2

1

0

1

0

2

3

4

5

0

3

3

0

10256

Слайд 19

Пример создания двумерного массива Пример объявления и инициализации двумерного массива: int

Пример создания двумерного массива

Пример объявления и инициализации двумерного массива:
int [,] ms

= new int [2,3] {{1,2,3},{4,5,6}};
Доступ к элементам массива :
int k = ms[1,2]; // получим значение 6
Пример: найти сумму всех элементов двухмерного массива:
int s = 0;
for (int i = 0; i < 2; i++)
for (int j = 0; j < 3; j++)
s += ms[i, j];
В результате выполнения этого кода s получит значение 21 – сумму всех элементов массива ms.
Слайд 20

Выполнить умножение матрицы размером 3 х 3 на столбец из трёх элементов

Выполнить умножение матрицы размером 3 х 3 на столбец из трёх

элементов
Слайд 21

Выполнить умножение матрицы размером 3 х 3 на столбец из трёх элементов

Выполнить умножение матрицы размером 3 х 3 на столбец из трёх

элементов
Слайд 22

Многомерные массивы - трехмерные float [,,] m = new float [3,4,3];

Многомерные массивы - трехмерные

float [,,] m = new float [3,4,3];
m

[i,j,k] = 3;

0

1

2

0

1

2

3

0

1

2

i

j

k