Лекция 7

11.0. Массивы

Тип массив – структура данных, представляющая собой набор переменных одинакового типа, имеющих общее имя.

Каждый элемент массива однозначно определяется именем и индексом (номером элемента в массиве).

Индексы массива принадлежат целочисленному типу. Массивы позволят легко обрабатывать большое количество связанных переменных.

 

Массив может быть:

- одномерным A1 [ ]

- двумерным A2 [ , ]

 
 


Массив заданный математически имеет вид:

– одномерный - строка - A = (1, 5, 8, 3, 4, 2, 7, 0) или столбец

– двумерный B ( например, 3 – строки и 2 – столбца )

 
 


 

 

 

Формат объявления одномерного массива в C#:

тип[ ] ИмяМассива = new тип [размер];

Формат объявления двумерного массива в C#:

тип [ , ] ИмяМассива = new тип [количество строк, количество столбцов];

тип – type – имя типа значений элементов.

[ ] – признак массива. Запятые внутри скобок задают размерность массива. Запятых нет – массив одномерный, запятая одна – массив двумерный.

ИмяМассива – имя массива.

new – оператор, предназначенный для создания объекта любого классового типа, позволяет динамически размещать в памяти элементы массива.

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

Элементы массива могут быть любых типов.

Доступ к элементу массива осуществляется посредством индекса (позицию элемента внутри массива):

ИмяМассива [ НомерЭлемента ].

Индексация массивов начинается с нуля: массив с элементами n индексируется от 0 до n-1. При обращении к элементу массива, надо указать его имя и номер элемента в квадратных скобках.

Например: A[0] – первый элемент массива A.

A[4] – пятый элемент массива А.

B[2,3] – элемент, лежащий на пересечении 3 строки и 4 столбца массива B.

Примеры объявления массивов:

 

static void Main(string[] args)

{

int[ ] А = new int[5]; // одномерный массив А из 5 целых чисел

char[ ] H = new char[10]; // одномерный массив H из 10 символов

double[,] M = new double [2, 3]; // двумерный массив 2х3 вещественных

// чисел, содержащий 2 строки и 3 столбца

}

При объявлении массива можно выполнить его инициализацию, т.е. присвоить начальные значения элементам массива в момент его создания.

Формат объявления одномерного массива с инициализацией:

тип [ ] ИмяМассива = {v1,v2,v3,…vn};

Формат объявления двумерного массива в C#:

тип [ , ] ИмяМассива = {{v11,v12,…v1j},…{vi1,vi2,…vij}};

//1-я строка ……… i-я строка

Здесь начальные значения, присваиваемые элементам массива, задаются с помощью последовательности v1, v2, v3,…vn для одномерного массива и vij – для массива размерностью ( i x j ), где i – номер строки, а j – номер столбца для двумерного массива.

 

Примеры объявления массивов с инициализацией:

 

int[ ] С = new int[ ] { 1, 3, 5, -7, 9 }; // массив С инициализирован пятью элементами

double[ ] D = { 1.5, 2.1, 3.65, 4.7, 5.14, 6.36 }; // Альтернативный синтаксис

char[ ] Q = {'a','b','g'}; //массив Q инициализирован тремя символами

string[ ] Team = {"Zenith", "Dynamo", "Sparta", "Rotor", "CSK"};

int[ , ] M= { { 1, 2, 3 }, { 4, 5, 6 } }; // массив M: 2 строки и 3 столбца инициализирован

int[ ,] L ={{0,2,4,6},{2,9,6,3},{4,7,5,8}, {1,6,5,7}};

//массив L (4х4) инициализирован

. . .

При инициализации допустимо указывать размер массива, но количество элементов списка инициализации должно соответствовать размерности массива. Иначе компилятор выведет сообщение об ошибке. Например:

 

Int [ ] nems – new int [ 10 ] { 99, 10, 100, 15, 76, 23, 85, 9 , 87, 49};

 

В этом объявлении размер массива nems явно задан равным 10.

Массив можно инициализировать во время выполнения программы в цикле.

Например:

static void Main(string[] args)

{

int[] R = new int[5] ;

for (int k=0; k<=4; k++)

{

Console.Write("Введите {0}", k);

Console.WriteLine(" элемент массива R");

R[k] = Convert.ToInt32(Console.ReadLine());

//ввод элемента массива R

}

Console.ReadKey();

 

 

В C# также предусмотрена инструкция foreach. Она обеспечивает простой и понятный способ выполнения итерации элементов в массиве.

Синтаксис инструкции foreach:

foreach (int ИндексМассива in ИмяМассива)

{

Инструкции тела цикла

}

int ИндексМассива – тип и имя переменной для номера элемента массива (целое число).

Слово in – в.

ИмяМассива – имя массива.

Пример. Следующий код создает массив Числа и осуществляет его итерацию с помощью инструкции foreach.

int[] Числа = { 4, 5, 6, 1, 2, 3, -2, -1, 0 };

foreach (int i in Числа)

{

Console.Write("{0} ", i);

}

Вывод в консоль строки: 4 5 6 1 2 3 -2 -1 0

 

Операции, производимые над элементами массива, полностью определяются типом этих элементов.

11.1. Операции с массивами

 

Типовые операции при работе с массивами:

- Вывод элементов массива;

- Ввод элементов массива;

- Поиск максимального/минимального элемента массива;

- Поиск заданного элемента массива;

- Сортировка массива.

Часто используемые операции: накопление суммы элементов массива, расчет среднего арифметического значения элементов массива.