Программирование на языке C#
Объявление и инициализация одномерных массивов
Download 1.19 Mb. Pdf ko'rish
|
Программирование на языке C#
- Bu sahifa navigatsiya:
- ИмяМассива
9.2.
Объявление и инициализация одномерных массивов Массивы представляют собой ссылочную структуру, поэтому создание массива состоит из двух этапов: 1) Объявление ссылки на массив; 2) Инициализация ссылки/создание массива. Синтаксис объявления ссылки выглядит следующим образом тип данных [] ИмяМассива; По умолчанию ссылка ИмяМассива принимает значение null . На втором этапе выполняется инициализация ссылки, т.е. создание массива в памяти с заданным количеством элементов. Создание массива выполняется с помощью оператора new , для которого необходимо задать типДанных, и с помощью спецификатора размерности [ ] задать нужное количество ячеек. Массив можно проинициализировать в момент создания, для этого необходимо задать явные значения для каждой из его ячеек в фигурных скобках после спецификатора размерности. В общем случае инициализация может быть опущена. Синтаксическая конструкция создания массива выглядит следующим образом: ИмяМассива = new типДанных [Количество Ячеек] { инициализация}; Например, создадим массив целых чисел из N=5 элементов. В соответствии с рассмотренным синтаксисом: int N=5; int [] tmpArray; Array = new int [N]; //создан массив из 5-ти элементов значения которых равно 0 В некоторых случаях, когда размерность массива известна, можно создавать массив в момент его объявления, что позволяет объединить два этапа в один, причем, также допускается инициализация элементов массива. Рассмотрим примеры. 1. Объявление и инициализация массива, состоящего из 5 элементов, без оператора new . int [] Array = {1, 2, 3, 4, 5}; 2.Варианты объявления и создания массива с заданным количеством элементов N с их инициализацией. int N = 5; 49 int [] Array = new int[N]{10, 20, 30, 40, 50}; В следующем примере создаем массив, но инициализируем всего две ячейки из десяти, что неверно, будет сгенерирована ошибка, поскольку нужно инициализировать все ячейки. int N = 10; int [] Array = new int[N]{10,20}; Далее, создаём массив из пяти элементов, но инициализация выполняется для шести, что не верно, будет сгенерирована ошибка, так как шестой ячейки нет. int N = 5; int [] Array = new int[N]{10,20,30,40,50,60}; Инициализацию массивов можно выполнять по-разному, рассмотрим простейшие варианты на примере целочисленного массива. Можно организовать ввод элементов с консоли (листинг 4) или заполнить массив случайными числами (листинг 5). Рассмотрим реализации этих способов. Например, рассмотрим вариант заполнения элементов массива с консоли. Реализация представлена на листинге 4. public static void Main (string[] args) { try{ int size = 100; string input=""; int [] Array = new int[size]; for(int index=0;index < 100;index++){ input = Console.ReadLine(); Array [index] = int.Parse (input); } } catch(System.FormatException ){ Console.WriteLine("Неверный формат данных"); } } Листинг 4. Например, рассмотрим заполнение массива случайными числами public static void Main (string[] args){ int size = 100; int [] Array = new int[size]; 50 Random Rnd = new Random(); for(int index=0;index < 100;index++){ Array [index] = Rnd.Next(10,234); } } Листинг 5. Решая задачи с использованием массивов, нужно избегать ситуации, провоцирующие возникновения исключений, которые могут возникнуть в результате неправильного использования массива. К таким ситуациям можно отнести выход значения рабочего индекса за границы массива. Например, создадим массив, состоящий из трех элементов, int[] tmpArray = new int[3]; допустимые номера ячеек для tmpArray это номера 0 , 1, 2, следовательно обращение к ячейке под любым другим номером приведет к генерации исключения типа System.IndexOutOfRangeException. Следующий вариант исключительной ситуации заключается в работе с пустым массивом, т. е. объявленным, но не созданным. Например, после объявления ссылки на массив int[] tmpArray = null; выполняется попытка обращения к какому либо элементу, например tmpArray[0] = 12; Такое обращение приводит к генерации исключения типа System.NullReferenceException . Заметим, что такие ошибки не обнаруживаются на этапе компиляции, так как с точки зрения синтаксиса все записано верно, возникают они на этапе выполнения программы, следовательно при реализации программ с участием массивов это нужно учитывать и не допускать. В качестве примера вычислим сумму элементов массива с четными номерами (листинг 6). public static void Main (string[] args) { int size = 100; int Sum = 0; int [] tmpArray = new int[size]; Random Rnd = new Random(); for(int index=0;index < 100;index++){ tmpArray [index] = Rnd.Next(10,234); 51 } for(int i=0;i < size - 2; i += 2){ Sum = Sum + tmpArray[i] } } Листинг 6. В первых четырех строках листинга 6 программы происходит объявление и инициализация переменных size и sum , массива tmpArray размерности size , и создание объекта Rnd типа Random. Первый цик л for предназначен для заполнения массива случайными числами, полученные методом Next объекта Rnd в диапазоне от 10 до 234. Второй цикл for служит для подсчета суммы элементов массива. Здесь индекс i меняет свои значения в диапазоне от 0 до size-2 c шагом i=i+2 для перебора значений с четными номерами. Граница, заданная выражением size-2 Download 1.19 Mb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling