ЛАБОРАТОРНАЯ РАБОТА. Лабораторная работа одномерные массивы цель лабораторной работы
Скачать 28.71 Kb.
|
ЛАБОРАТОРНАЯ РАБОТА № 7.ОДНОМЕРНЫЕ МАССИВЫ Цель лабораторной работы: Изучить способы получения случай- ных чисел. Написать программу для работы с одномерными массивами. Работа с массивамиМассив – набор элементов одного и того же типа, объединенных общим именем. Массивы в С# можно использовать по аналогии с тем, как они используются в других языках программирования. Однако С#-массивы имеют существенные отличия: они относятся к ссылоч- ным типам данных, более того – реализованы как объекты. Фактически имя массива является ссылкой на область кучи (динамической памяти), в которой последовательно размещается набор элементов определен- ного типа. Выделение памяти под элементы происходит на этапе ини- циализации массива. А за освобождением памяти следит система сбор- ки мусора – неиспользуемые массивы автоматически утилизируются данной системой. Рассмотрим в данной лабораторной работе одномерные массивы. Одномерный массив – это фиксированное количество элементов одного и того же типа, объединенных общим именем, где каждый элемент име- ет свой номер. Нумерация элементов массива в С# начинается с нуля, то есть если массив состоит из 10 элементов, то его элементы будут иметь следующие номера: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Одномерный массив в С# реализуется как объект, поэтому его соз- дание представляет собой двухступенчатый процесс. Сначала объявля- ется ссылочная переменная на массив, затем выделяется память под требуемое количество элементов базового типа, и ссылочной перемен- ной присваивается адрес нулевого элемента в массиве. Базовый тип оп- ределяет тип данных каждого элемента массива. Количество элементов, которые будут храниться в массиве, определяет размер массива. В общем случае процесс объявления переменной типа массив и выделение необходимого объема памяти может быть разделен. Кроме того, на этапе объявления массива можно произвести его инициализа- цию. Поэтому для объявления одномерного массива может использо- ваться одна из следующих форм записи: тип[] имя_массива; В этом случае описывается ссылка на одномерный массив, которая в дальнейшем может быть использована для адресации на уже сущест- вующий массив. Размер массива при таком объявлении не задается. Пример, в котором объявляется массив целых чисел с именем a: int[] a; Другая форма объявления массива включает и его инициализацию указанным количеством элементов: тип[] имя_массива = new тип[размер]; В этом случае объявляется одномерный массив указанного типа и выделяется память под указанное количество элементов. Адрес данной области памяти записывается в ссылочную переменную. Элементы мас- сива инициализируются значениями, которые по умолчанию приняты для данного типа: массивы числовых типов инициализируются нулями, строковые переменные – пустыми строками, символы – пробелами, объ- екты ссылочных типов – значением null. Пример такого объявления: int[] a = new int[10]; Здесь выделяется память под 10 элементов типа int. Наконец, третья форма записи дает возможность сразу инициали- зировать массив конкретными значениями: тип[] имя_массива = {список инициализации}; При такой записи выделяется память под одномерный массив, размер- ность которого соответствует количеству элементов в списке инициализа- ции. Адрес этой области памяти записан в ссылочную переменную. Значе- ние элементов массива соответствует списку инициализации. Пример: int[] a = { 0, 1, 2, 3 }; В данном случае будет создан массив a, состоящий из четырех эле- ментов, и каждый элемент будет инициализирован очередным значени- ем из списка. Обращение к элементам массива происходит с помощью индекса: для этого нужно указать имя массива и в квадратных скобках – его но- мер. Например: a[0], b[10], c[i]. Следует помнить, что нумерация эле- ментов начинается с нуля! Так как массив представляет собой набор элементов, объединен- ных общим именем, то обработка массива обычно производится в цик- ле. Например: int[] myArray = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; for (int i = 0; i < 10; i++) MessageBox.Show(myArray[i]); Случайные числаОдним из способов инициализации массива является задание эле- ментов через случайные числа. Для работы со случайными числами используют класс Random. Метод Random.Next создает случайное число в диапазоне значений от нуля до максимального значения типа int (его можно узнать с помощью свойства Int32.MaxValue). Для создания слу- чайного числа в диапазоне от нуля до какого-либо другого положи- тельного числа используется перегрузка метода Random.Next(Int32) – единственный параметр метода указывает верхнюю границу диапазо- на, сама граница в диапазон не включается. Для создания случайного числа в другом диапазоне используется перегрузка метода Random.Next(Int32, Int32) – первый аргумент задает нижнюю грани- цу диапазона, а второй – верхнюю. Порядок выполнения индивидуального заданияСоздайте форму с элементами управления, как показано на рис. 7.1. Опишите одномерный массив. Создайте обработчики события для кно- пок (код приведен ниже). Данная программа заменяет все отрицатель- ные числа нулями. Протестируйте правильность выполнения програм- мы. Модифицируйте программу в соответствии с индивидуальным заданием. // Глобальная переменная видна всем методам int[] Mas = new int[15]; // Заполнение исходного массива private void button1_Click(object sender, EventArgs e) { // Очищаем элемент управления listBox1.Items.Clear(); // Инициализируем класс случайных чисел Random rand = new Random(); // Генерируем и выводим 15 элементов for (int i = 0; i < 15; i++) { Mas[i] = rand.Next(‐50, 50); listBox1.Items.Add("Mas[" + i.ToString() + "] = " + Mas[i].ToString()); } } // Замена отрицательных элементов нулями private void button2_Click(object sender, EventArgs e) { // Очищаем элемент управления listBox2.Items.Clear(); // Обрабатываем все элементы for (int i = 0; i < 15; i++) { if (Mas[i] < 0) Mas[i] = 0; listBox2.Items.Add("Mas[" + Convert.ToString(i) + "] = " + Mas[i].ToString()); } } Рис. 7.1. Окно программы для работы с одномерными массивами |