Лекция 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. Операции с массивами
Типовые операции при работе с массивами:
- Вывод элементов массива;
- Ввод элементов массива;
- Поиск максимального/минимального элемента массива;
- Поиск заданного элемента массива;
- Сортировка массива.
Часто используемые операции: накопление суммы элементов массива, расчет среднего арифметического значения элементов массива.