Массивы в C#. Часть 1. Одномерные массивы. Примеры решения задач на одномерные массивы
Содержание
- Вопрос/ответ
- 1. Что такое массив в языке программирования?
- 2. Какие виды массивов могут быть представлены в C#?
- 3. Какие преимущества использования массивов в программах?
- 4. Каким образом в языке C# организовано представление массивов?
- 5. Какая общая форма объявления одномерного массива?
- 6. Примеры объявления одномерных массивов разных типов и размерностей
- 7. Каким образом осуществляется доступ к элементам одномерного массива? Пример
- 8. Пример обнуления одномерного массива из 100 вещественных чисел
- 9. Пример поиска заданного элемента в одномерном массиве
- 10. Пример подсчета количества вхождений заданного элемента в одномерном массиве целых чисел
- 11. Пример сортировки элементов одномерного массива методом вставки
- 12. Какая общая форма инициализации одномерного массива?
- 13. Пример инициализации одномерных массивов при их объявлении
- 14. Пример объявления и использования одномерного массива структур
- 15. Что происходит, если в программе не придерживаться границ массива?
- 16. Пример объявления и использования одномерного массива классов
- Связанные темы
Поиск на других ресурсах:
1. Что такое массив в языке программирования?
Массив – это объединенная в единое целое группа переменных одного типа к которым можно обращаться по единому имени. Использование массивов в программе позволяет удобно организовывать наборы данных и осуществлять упрощенный доступ к этим данным с помощью имени массива и индекса.
⇑
2. Какие виды массивов могут быть представлены в C#?
Язык программирования C# позволяет представлять два вида массивов:
- одномерные массивы;
- многомерные массивы.
В многомерных массивах различаются двумерные и многомерные прямоугольные массивы. Кроме того, язык программирования C# имеет средства для организации работы с так называемыми ступенчатыми массивами.
⇑
3. Какие преимущества использования массивов в программах?
Использование массивов в программах имеет такие основные преимущества:
- удобство и простота организации однотипных наборов данных;
- удобство обработки данных (сортировка, поиск, проведение вычислений) с помощью операторов цикла языка C#.
⇑
4. Каким образом в языке C# организовано представление массивов?
В языке C# массивы организованы в виде объектов. Это означает, что для массива обязательно может быть выделена память с помощью оператора new.
⇑
5. Какая общая форма объявления одномерного массива?
Общая форма объявления одномерного массива следующая
тип имя_массива = new тип[размер];
где
- тип – тип элементов массива;
- имя_массива – непосредственно имя объявляемого массива;
- размер – количество элементов массива. Нумерация элементов массива начинается с нуля.
⇑
6. Примеры объявления одномерных массивов разных типов и размерностей
Пример 1. Объявление одномерного массива из 100 целых чисел (тип int).
// пример объявления массива из 100 целых чисел - способ 1 int[] A; // объявить переменную типа "массив целых чисел" A = new int[100]; // выделить память для переменной A
Пример 2. Объявление одномерного массива из 50 вещественных чисел (тип double).
// объявление массива из 50 вещественных чисел - способ 2 float[] B = new float[50];
⇑
7. Каким образом осуществляется доступ к элементам одномерного массива? Пример
Доступ к элементам одномерного массива осуществляется с помощью индекса. Индекс определяет положение элемента в массиве. Первым индексом массива есть индекс, который имеет значение 0. Чтобы получить доступ к элементу массива с помощью индекса, нужно взять индекс элемента в квадратные скобки.
Пример 1. Доступ к элементам массива целых чисел (тип long).
// объявление массива целых чисел, имеющих тип long long[] M = new long[20]; // в массиве 20 элементов // записать в элементы массива произвольные значения M[2] = 23990; // в элемент с индексом 2 записать число 23990 M[0] = 10000; // в элемент с индексом 0 записать число 10000 M[19] = -2039; // Ошибка! // M[20] = 1000; // ошибка! Индекс выходит за пределы диапазона
Пример 2. Объявление и заполнение произвольными значениями массива из 10 вещественных чисел типа float.
// объявление массива из 10 вещественных чисел float[] B = new float[10]; // заполнение произвольными значениями int i; for (i = 0; i < 10; i++) B[i] = i + 2 * i; // B[i] - элемент в позиции i массива B // вывод элементов массива в элемент управления типа ListBox listBox1.Items.Clear(); for (i = 0; i < 10; i++) listBox1.Items.Add(B[i].ToString());
⇑
8. Пример обнуления одномерного массива из 100 вещественных чисел
// обнуление одномерного массива из 100 вещественных чисел // объявить массив double[] D = new double[100]; // обнулить массив for (int i = 0; i < D.Length; i++) // D.Length - количество элементов в массиве D[i] = 0;
⇑
9. Пример поиска заданного элемента в одномерном массиве
// поиск заданного элемента в одномерном массиве int[] A = new int[10]; bool f_is; // результат: если f_is=true, то элемент присутствует в массиве // заполнение массива произвольными значениями for (int i = 0; i < 10; i++) A[i] = i + i * i; int num; // num - искомый элемент num = 42; // поиск f_is = false; for (int i = 0; i < 10; i++) if (num == A[i]) f_is = true;
⇑
10. Пример подсчета количества вхождений заданного элемента в одномерном массиве целых чисел
В примере осуществляется подсчет количества вхождений заданного значения (сохраняется в переменной n) в массиве M. Результат записывается в переменную k.
// подсчет количества вхождений заданного элемента в одномерном массиве int[] M; M = new int[20]; // заполнение массива произвольными значениями for (int i = 0; i < 20; i++) M[i] = i * 2 - i * i; int n; // заданный элемент int k; // результат - количество вхождений n = 0; k = 0; for (int i = 0; i < 20; i++) if (n == M[i]) k++; // k = 2
⇑
11. Пример сортировки элементов одномерного массива методом вставки
// сортировка методом вставки по возрастанию // объявление массива из 10 вещественных чисел float[] A = new float[10]; // заполнение элементов массива произвольными значениями // ... // сортировка for (int i=0; i<9; i++) for (int j=i; j>=0; j--) if (A[j] > A[j + 1]) { float t = A[j]; A[j] = A[j + 1]; A[j + 1] = t; }
⇑
12. Какая общая форма инициализации одномерного массива?
В языке C# массив может быть инициализирован значениями при его создании (объявлении). Общая форма инициализации массива:
тип[] имя_массива = { значение1, значение2, ..., значениеN };
где
- тип – тип элементов массива;
- имя_массива – непосредственно имя массива;
- значение1, значение2, значениеN – значения, которыми инициализируются элементы массива в порядке индексирования. Значение1 будет присвоено ячейке массива с индексом 0. Значение2 будет присвоено ячейке массива с индексом 1 и т.д. ЗначениеN будет присвоено ячейке массива с индексом N-1.
В случае инициализации массива отпадает необходимость использовать оператор new. Система автоматически выделит необходимый объем памяти для массива.
⇑
13. Пример инициализации одномерных массивов при их объявлении
// инициализация массива состоящего из 6 элементов типа uint uint[] UI = { 5, 2, 100, 50, 35, 64 }; // инициализация массива состоящего из 5 элементов типа bool bool[] B = { true, false, false, false, true }; // инициализация массива состоящего из 10 элементов типа float float[] F = { 0.2f, 1.03f, -3.2f, -4.3f, 2.88f, 0.001f, 1.1f, 2.34f, 0.2f, 0f }; // инициализация массива состоящего из 5 элементов типа char char[] C = { '0', 'A', ';', '\\', 'z' };
⇑
14. Пример объявления и использования одномерного массива структур
Дополнительную информацию о работе с массивами структур можно получить в теме:
Пусть задан тип структуры BOOK, описывающей информацию о книге
// структура, описывающая книгу struct BOOK { public string title; // название книги public string author; // название автора книги public int year; // год издания public float price; // цена }
Тогда код, который объявляет массив структур типа BOOK будет иметь приблизительно следующий вид
// объявление и использование одномерного массива структур BOOK[] B; // объявление переменной типа "массив структур BOOK" B = new BOOK[5]; // выделение памяти для 5 структур типа BOOK // заполнение значениями массива B B[0].title = "Beginning. Microsoft. Visual C# 2008."; B[0].author = "Karli Watson, Christian Nagel, Jacob Hammer Pedersen, Jon D.Reid"; B[0].year = 2008; B[0].price = 9.99f; B[1].title = "Pro C# 2010 and the .Net Planform. Fifth edition"; B[1].author = "Andrew Troelsen"; B[1].year = 2010; B[1].price = 9.99f;
⇑
15. Что происходит, если в программе не придерживаться границ массива?
Язык программирования C# строго придерживается допустимых границ массива, которые задаются при его объявлении. Если при доступе к элементам массива, значение индекса выходит за пределы массива, то возникает исключительная ситуация типа IndexOutOfRangeException. В этом случае программа преждевременно завершится.
⇑
16. Пример объявления и использования одномерного массива классов
Пусть в отдельном модуле задается описание класса MyPoint, который описывает точку на координатной плоскости
// класс, который описывает точку на координатной плоскости class MyPoint { // координаты точки int x; int y; // свойства public int X { get { return x; } set { x = value; } } public int Y { get { return y; } set { y = value; } } }
Тогда, объявление и использование массива из 5 объектов типа MyPoint будет иметь приблизительно следующий вид
// объявление массива из 5 объектов типа класс "MyPoint" // выделение памяти для массива MyPoint[] MP = new MyPoint[5]; // выделение памяти для любого объекта - обязательно! for (int i = 0; i < 5; i++) MP[i] = new MyPoint(); // использование массива объектов в программе // заполнение массива произвольными значениями for (int i = 0; i < 5; i++) { MP[i].X = i * 3; MP[i].Y = i * i - 2; }
⇑
Связанные темы
- Многомерные массивы. Ступенчатые массивы
- Ссылки на массивы. Свойство Length. Присваивание массивов
- Неявно типизированные массивы. Ключевое слово var
- Использование массивов в структурах. Массивы структур. Вложенные структуры. Копирование структур