ПиОА_1 семестр_1 / ПОСОБИЕ_VB.Net
.pdf
Метод AddRange экземпляра класса ArrayList добавляет совокупность объектов в конец списка:
Принимающий список.AddRange(Исходный список)
Пример. Добавить список b в конец списка a:
' Массивы a и b объявлены как экземпляры класса ArrayList
Dim a, b As New ArrayList()
Dim S As New Random
For i = 0 To 15 ' Список a заполняется 16 элементами a.Add(S.Next(1, 9))
Next i
For i = 0 To 6 ' Список b заполняется 7 элементами b.Add(s.Next(100, 200))
Next i
a.AddRange(b) ' Список b копируется в конец списка a
Метод Insert(Индекс, Объект) экземпляра класса
ArrayList вставляет Объект в список по указанному индексу:
Принимающий список.Insert(Индекс, Объект)
Метод InsertRange экземпляра класса ArrayList вставля-
ет элементы одного списка в другой по указанному индексу:
Принимающий список.InsertRange (Индекс,
Исходный список)
Пример. Вставить
-число 10000 в конец списка a,
-список b в начало списка a,
-список b в список a, начиная с индекса 5.
'Вставляет объект в конец списка a.Insert(a.Count, 10000)
28
'Вставляет список b в начало списка a a.InsertRange(0, b)
Исходный список а:
Исходный список b:
Результат (список a):
'Вставляет список b в середину списка a a.InsertRange(5, b)
Исходный список а:
Исходный список b:
Результат (список a):
Удаление элементов из списка. Метод Remove(Объект) экземп-
ляра класса ArrayList удаляет первое вхождение указанного объекта из списка. Если коллекция ArrayList не содержит указанный объект, то список ArrayList остается неизменным.
Метод RemoveAt(Индекс)экземпляра класса ArrayList
удаляет объект с указанным индексом.
Метод RemoveRange(Индекс, Количество объектов)
экземпляра класса ArrayList удаляет из списка указанное количе-
ство объектов, начиная с указанного индекса.
Пример. Из списка, содержащего названия животных, удалить:
-элемент "Курица",
-элемент с номером 5,
-три элемента, начиная с четвертого:
Dim a As New ArrayList() a.Add("Волк") : a.Add("Заяц") a.Add("Лиса") : a.Add("Медведь") a.Add("Тигр") : a.Add("Курица") a.Add("Лев") : a.Add("Лось")
… … … … … … … … … …
a.Remove("Курица") 'Удаляет из списка a элемент "Курица"
29
… … … … … … … … … …
a.RemoveAt(5) 'Удаляет элемент с индексом 5
… … … … … … … … … …
'Удаляет диапазон из трех элементов, начиная с элемента с индексом 4 a.RemoveRange(4,3)
Копирование элементов списка ArrayList в массив
Array. Метод CopyTo экземпляра класса ArrayList копирует список в одномерный массив Array:
Список.CopyTo(Принимающий массив)
Метод CopyTo «перегружен» (у него может быть от одного и более параметров), например,
Список.CopyTo(Принимающий массив, Индекс)
копирует в одномерный массив Array список ArrayList, начиная с указанного индекса.
Пример. Заданы: массив MArr, состоящий из 6 элементов:
{"один","два","три","четыре","пять","шесть"}
и список Mlist, состоящий из 5 элементов элементов:
{"one","two","three","four","five"}.
Заменить:
-начальные элементы всем списком,
-начиная с указанного индекса всем списком,
-начиная с указанного индекса частью списка:
'Копирование всего списка MList в совместимый по типу одномерный 'массив MArr, начиная с нулевого элемента
MList.CopyTo(MArr)
MList:
MArr:
Результат (MArr):
30
'Копирование всего списка MList в совместимый по типу одномерный 'массив MArr, начиная с указанного индекса
MList.CopyTo(MArr,1)
MList:
MArr:
Результат (массив MArr):
'Копирование трех элементов списка MList, начиная с элемента с 'индексом 1 в совместимый по типу одномерный массив MArr, начиная 'с индекса 2.
MList.CopyTo(1,MArr, 2, 3)
MList:
MArr:
Результат (массив MArr):
Примечание. В отличие от списка ArrayList массив Array имеет фиксиро-
ванную длину и не может увеличиваться или уменьшаться в размерах. Поэтому метод CopyTo фактически заменяет элементы принимающего массива.
Поиск элемента в списке. Метод IndexOf(Объект) экземп-
ляра класса ArrayList ищет первое вхождение указанного объекта в списке, а метод LastIndexOf(Объект) – последнее. Оба метода возвращают индекс найденного элемента, если поиск увенчался успехом, и -1, если ничего не найдено.
Методы IndexOf и LastIndexOf «перегружены». Это означает, что у них может быть и большее количество параметров. Например,
Список.IndexOf(Объект, Индекс)
ищет первое вхождение указанного объекта в списке, начиная с ука-
занного индекса.
31
Пример. Найти номер первого и последнего появления заданного числа M в списке:
nom1 = a.IndexOf(M)
nom2 = a.LastIndexOf(M)
Изменение порядка элементов списка. Изменить порядок эле-
ментов в списке возможно с помощью двух методов экземпляра клас-
са ArrayList - Reverse(), Sort().
Метод Reverse()меняет порядок следования элементов в списке на обратный:
Список.Reverse
Метод Sort() сортирует список по возрастанию:
Список.Sort
Пример. Отсортировать список a по убыванию, его вначале можно отсортировать по возрастанию, а затем перевернуть.
a.Sort
a.Reverse
Примечание. За удобство и функциональность коллекций ArrayList приходится платить. По сравнению с массивами коллекции ArrayList работают гораздо медленнее и занимают больше оперативной памяти. В табл. 6.3 представлено время выполнения некоторых операций для массивов и списков.
Таблица 6.3. Сравнение времени
Время, сек |
Массив |
Список |
|
|
|
|
|
Формирование 10000000 элементов целых числовых данных |
0,05 |
1,84 |
|
|
|
|
|
Перестановка 10000000 элементов целых числовых данных в |
0,02 |
0,07 |
|
обратном порядке (метод Reverse) |
|
|
|
Сортировки 10000000 элементов целых числовых данных |
0,47 |
9,36 |
|
(метод Sort) |
|||
|
|
||
|
|
|
|
Сортировка 10000 элементов строковых данных (метод |
0,03 |
0,14 |
|
Sort) |
|||
|
|
||
|
|
|
|
32 |
|
|
6.4.Использование объекта DataGridView для работы с массивами
Компонент DataGridView 
используется для ввода/вывода данных из/в таблицы/у.
Основные свойства DataGridView:
Название |
Описание |
|
|
Значение, указывающее, отображается |
|
ColumnHeadersVisible |
ли строка, содержащая заголовки |
|
|
столбцов (по умолчанию – True) |
|
|
|
|
|
Значение, указывающее, отображается |
|
RowHeadersVisible |
ли столбец, содержащий заголовки |
|
|
строк (по умолчанию – True) |
|
|
|
|
ScrollBars |
Задает тип полос прокрутки |
|
|
|
|
|
Значение, указывающее, отображается |
|
Visible |
или нет DataGridView при выполне- |
|
|
нии проекта |
|
|
|
|
EditMode |
Значение, указывающее, как можно на- |
|
чать изменение ячейки |
||
|
||
|
|
Количество строк и столбцов в таблице можно установить только в программном коде с помощью свойств:
Название |
Описание |
RowCount |
Количество строк в таблице |
|
|
ColumnCount |
Количество столбцов в таблице |
|
|
Доступ к отдельной ячейке (Cells) таблицы в программном коде можно осуществить двумя способами:
Первый способ. Доступ к ячейке таблицы DataGridView можно получить через свойство Value с указанием номера строки Rows и номера ячейки в этой строке Cells:
DataGridView1. Rows(i).Cells(j).Value,
где i-номер строки, j – номер ячейки в этой строке.
33
Примечание. Нумерация столбцов и строк в таблице начинается с нуля!
Второй способ. Этот способ доступа к ячейкам таблицы аналогичен доступу в электронных таблицах, в которых при ссылке на ячейку указывается сначала номер столбца, а затем номер строки. В этом случае доступ к отдельным ячейкам таблицы DataGridView можно получить через подобъект Item и его свойство Value:
DataGridView1.Item(j, i).Value
где j-номер столбца, i – номер строки.
Ширину столбца можно изменить через свойство Width с указанием номера столбца Columns()следующим образом:
DataGridView4.Columns(j).Width = 40.
Стиль ячеек (расположение, цвет) в программном коде можно установить, изменяя свойство DefaultCellStyle (рис. 6.1).
Рис. 6.1. Установка стиля ячеек DataGridView
Для того чтобы разрешить изменять содержимое ячеек таблицы DataGridView при выполнении приложения, необходимо установить значение свойства EditMode равным EditOnEnter,
EditOnKeystroke или EditOnKeystrokeOrF2 (рис. 6.2).
Примечание. Значение EditProgrammatically, установ-
ленное по умолчанию запрещает изменять содержимое ячеек таблицы.
Рис. 6.2 Установка значения свойства EditMode
34
6.5. Формирование массивов
Сформировать массив можно по-разному:
-проинициализировать массив при его описании;
-использовать некоторое правило (выявить закономерность, формулу) и заполнить массив в программном коде;
-заполнить массив случайными числами;
-ввести элементы массива с клавиатуры;
-ввести элементы массива из файла и т.д.
Инициализация массива при описании. Массивы могут ини-
циализироваться при объявлении, например:
Dim S() As Int32 = {9,7,5,4,2,-37,6}
Dim А(,) As Int32 = {{9,7},{5,4},{2,-37}}
Заполнение массива по некоторому правилу. Например, не-
обходимо сформировать одномерный массив вида:
3индекс элемента |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
… |
значение элемента |
1 |
1 |
2 |
3 |
5 |
8 |
13 |
21 |
... |
|
|
|
|
|
|
|
|
|
|
Фрагмент программного кода:
Dim a() As Int32
Dim n As Byte = Convert.ToByte(TextBox1.Text) ReDim a(n - 1)
'формирование первого и второго элемента массива a(0) = 1 : a(1) = 1
'формирование остальных элементов массива
For i As Int32 = 2 To a.GetUpperBound(0) a(i) = a(i - 2) + a(i - 1)
Next i
Пояснение. Одномерный массив целых чисел a описывается динамически. Переменная n отвечает за количество элементов в массиве, ее значение задается при начале выполнения программы с помощью текстового окна TextBox1. С помощью ReDim выделяется необходимая память под хранение элементов массива после определения их количества (в скобках указывается номер последнего элемента массива).
35
Первый и второй элементы массива задаются. Все остальные элементы определяются с помощью цикла с параметром (for … next). Метод GetUpperBound(0) возвращает номер последнего элемента формируемого массива.
Или необходимо сформировать двумерный массив вида:
|
0 |
1 |
2 |
3 |
4 |
5 |
6 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
1 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
2 |
0 |
0 |
1 |
2 |
3 |
4 |
5 |
3 |
0 |
0 |
0 |
1 |
2 |
3 |
4 |
4 |
0 |
0 |
0 |
0 |
1 |
2 |
3 |
5 |
0 |
0 |
0 |
0 |
0 |
1 |
2 |
6 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
|
|
|
|
|
|
|
|
Фрагмент программного кода:
Dim a(6, 6) As Int32
'формирование первой строки
For j As Int32 = 0 To a.GetUpperBound(0) a(0, j) = j + 1
Next j
'формирование остальных строк
For i As Int32 = 1 To a.GetUpperBound(0) For j As Int32 = i To a.GetUpperBound(1)
a(i, j) = a(i - 1, j - 1)
Next j Next i
Пояснение. Двумерный массив целых чисел a описывается статически. Память выделяется под 49 элементов (7 × 7).
Вначале с помощью цикла с параметром (for … next) задается первая строка массива, так как остальные строки будут определены через нее. Все остальные элементы определяются с помощью двух вложенных циклов с параметром (по количеству измерений).
Метод GetUpperBound(0) возвращает номер последней строки массива, метод GetUpperBound(1) возвращает номер последнего столбца массива.
36
Заполнение массива случайными числами. В библиотеке
.NET Framework имеется класс Random пространства имен System для работы со случайными числами. Методы этого класса вызываются для конкретного экземпляра, т.е. до использования метода нужно сначала создать объект этого класса.
В VB.NET объекты (экземпляры класса) создаются с помощью конструктора, вызываемого ключевым словом New.
Создание объекта (экземпляра) класса Random:
Dim B As New Random
Здесь New – конструктор объектов классов;
Random – класс, предназначенный для работы со случайными числами;
B – имя создаваемого экземпляра класса Random.
Только создав объект класса Random, можно использовать методы и свойства этого класса для данного объекта. Например, чтобы задать случайные числа из некоторого диапазона, можно воспользоваться методом Next класса Random:
Next(Лев_граница_,Прав_граница)
Параметрами этого метода явлются левая граница и правая граница диапазона, из которого будут выбираться случайные числа.
В следующем фрагменте программного кода n элементам одномерного массива присваиваются случайные числа из диапазона [-10; 10], которые генерируются с помощью метода Next.
Dim b As New Random
Dim a() As Int32
Dim n As Byte = Convert.ToByte(TextBox1.Text) ReDim a(n-1)
For i As Int32 = 0 To a.Length-1
a(i) = b.Next(-10, 10)
Next i
37
Еще один пример, в следующем фрагменте программного кода элементам двумерного массива (n × m) присваиваются случайные числа из диапазона [0; 20], которые генерируются с помощью метода
Next:
Dim b As New Random
Dim a(,) As Int32
Dim n As Byte = Convert.ToByte(TextBox3.Text) Dim m As Byte = Convert.ToByte(TextBox4.Text)
ReDim a(n - 1, m - 1)
For i As Int32 = 0 To a.GetLength(0) - 1
For j As Int32 = 0 To a.GetLength(1) - 1
a(i, j) = b.Next(0, 20)
Next j
Next i
Ввод элементов массива вручную. Вводить элементы массива можно с помощью объектов:
-TextBox (обычно для ввода одномерных массивов);
-DataGridView (обычно для ввода двумерных массивов).
Использование объекта TextBox. В этом случае придется использовать метод Split, который позволит из строки символов, что хранится в свойстве Text, сформировать массив символьных подстрок по количеству элементов в массиве, используя в качестве разделителя между элементами пробел.
Фрагмент программного кода:
Dim a() As Int32 Dim s() As String
Dim n As Byte = Convert.ToByte(TextBox1.Text) ReDim a(n - 1)
ReDim s(n - 1)
s = TextBox2.Text.Split()
For i As Int32 = 0 To a.GetLength(0) - 1 a(i) = Convert.ToInt32(s(i))
Next i
38
Пояснение. Одномерный массив целых чисел a описывается динамически. Переменная n отвечает за количество элементов в массиве. Дополнительно динамически описывается массив подстрок s, в котором будут храниться символы после разделения методом Split строки символов, введенной с помощью текстового окна TextBox2. В качестве разделителя символов в данном случае используется пробел.
Например, в текстовом окне задано |
|
. После приме- |
|
нения метода Split массив подстрок будет заполнен следующим образом s(0) = "9", s(1) = "7", s(2) = "1", s(3) = "-8", s(4) = "-6", который затем с помощью метода Convert преобразуется в массив целых чисел a.
Использование объекта DataGridView. Для ввода вручную элементов массива можно использовать объект класса
DataGridView (рис. 6.3).
Рис. 6.3 Объект класса DataGridView
Примечание. Для того чтобы разрешить изменять содержимое ячеек таблицы DataGridView при выполнении приложения, необходимо установить значение свойства EditMode равным
EditOnEnter, EditOnKeystroke или EditOnKeystrokeOrF2
(рис. 6.4).
39
Рис. 6.4 Установка значения свойства EditMode
Перед тем как использовать таблицу для ввода данных в массив, ее следует разметить, т.е. задать внешний вид: количество строк и столбцов, ширину столбцов и т.д. Поэтому следует создать две событийные процедуры: одна разметит таблицу, другая – передаст в массив данные из заполненных ячеек таблицы. Здесь следует иметь ввиду, что переменные, которые отвечают за хранение количества строк и количества столбцов, необходимо описать глобально.
Программный код заполнения двумерного массива из таблицы приведен ниже:
Public Class Form1
Dim n As Byte
Dim m As Byte
'Разметка таблицы
Private Sub Button1_Click(...) Handles Button1.Click
n = Convert.ToByte(TextBox1.Text)
m = Convert.ToByte(TextBox2.Text)
DataGridView1.ColumnHeadersVisible = False
DataGridView1.RowHeadersVisible = False
DataGridView1.RowCount = n
DataGridView1.ColumnCount = m
For j As Int32 = 0 To m - 1
DataGridView1.Columns(j).Width = 40
Next j
End Sub
40
'Заполнение массива из таблицы
Private Sub Button2_Click(...) Handles Button2.Click
Dim a(,) As Int32
ReDim a(n - 1, m - 1)
For i As Int32 = 0 To a.GetUpperBound(0) For j As Int32 = 0 To a.GetUpperBound(1) a(i, j) = _
Convert.ToInt32(DataGridView1.Rows(i).Cells(j).Value)
Next j
Next i
End Sub
End Class
Пояснение. Перед началом работы с ячейками таблицы необходимо определить в ней количество строк n и количество столбцов m. Это можно сделать с помощью свойств RowCount и ColumnCount соответственно. Замена значений свойств RowHeadersVisible и ColumnHeadersVisible на False скроет видимость заголовочных строки и столбца соответственно.
Двумерный массив целых чисел a описывается динамически. Переменная n отвечает за количество строк в массиве, переменная m отвечает за количество столбцов в массиве. С помощью ReDim выделяется необходимая память под хранение элементов массива (в скобках через запятую указываются номера последней строки и последнего столбца массива).
Два вложенных цикла с параметром заполнят двумерный массив а значениями, введенными пользователем в ячейки таблицы, доступ к которым осуществляется с помощью свойства
Rows(i).Cells(j).Value.
Рис. 6.5 демонстрирует последовательность работы с формой приложения.
41
Вид формы после нажатия кнопки |
Вид формы до нажатия кнопки |
«Разметить таблицу» |
«Ввести данные» |
Рис. 6.5 Демонстрация работы программы
6.6. Вывод массивов
Для вывода массивов можно также воспользоваться объектами классов:
-TextBox (обычно для вывода одномерных массивов);
-DataGridView (обычно для вывода двумерных массивов).
Фрагмент программного кода вывода одномерного массива в объект класса TextBox:
'Очистка текстового окна
TextBox1.Text = ""
'Вывод элементов a(i) в текстовое окно
For i As Int32 = 0 To a.Length - 1
TextBox1.Text &= Convert.ToString(a(i)) & " "
Next i
Фрагмент программного кода вывода одномерного массива в
таблицу DataGridView:
42
DataGridView1.RowCount = 2
DataGridView1.ColumnCount = a.GetLength(0) + 1
DataGridView1.ColumnHeadersVisible = False
DataGridView1.RowHeadersVisible = False
'Изменение цвета нулевой строки и нулевой колонки
DataGridView1.Rows(0).DefaultCellStyle.BackColor _ = Color.Yellow
DataGridView1.Columns(0).DefaultCellStyle. _ BackColor = Color.Yellow
'Изменение ширины нулевой колонки
DataGridView1.Columns(0).Width = 40
DataGridView1. Rows(0).Cells(0).Value = "i" 'Заголовки строк
DataGridView1. Rows(1).Cells(0).Value = "a(i)" For j As Int32 = 1 To a.GetLength(0)
'Вывод номера j в нулевую строку и элемента aj в первую строку
DataGridView1. Rows(0).Cells(j).Value = _ Convert.ToString (j)
DataGridView1. Rows(1).Cells(j).Value = _
Convert.ToString(a(j-1))
Next j
Результат вывода представлен на рис. 6.6.
Рис. 6.6 Вывод одномерного массива в DataGridView
Фрагмент программного кода вывода двумерного массива в таб-
лицу DataGridView:
DataGridView1.ColumnHeadersVisible = False DataGridView1.RowHeadersVisible = False
'Количество строк в таблице
DataGridView1.RowCount = a.GetLength(0)
'Количество столбцов в таблице
DataGridView1.ColumnCount = a.GetLength(1)
'Установка стиля ячейки: вывод в центр ячейки
DataGridView1.DefaultCellStyle.Alignment = _ DataGridViewContentAlignment.BottomCenter
For i As Int32 = 0 To a.GetUpperBound(0)
43
For j As Int32 = 0 To a.GetUpperBound(1)
'Установка ширины столбца
DataGridView1.Columns(j).Width = 40
'Вывод элементов a(i, j), в j-ую ячейку i-ой строки
DataGridView1.Rows(i).Cells(j).Value = _
Convert.ToString(a(i,j))
Next j
Next i
Фрагмент программного кода вывода двумерного массива в таблицу DataGridView с использованием подобъекта Item
For As Int32 i = 0 To a.GetUpperBound(0)
For As Int32 j = 0 To a.GetUpperBound(1)
DataGridView1.Item(j, i).Value= _
Convert.ToString (a(i, j))
Next j
Next i
6.7. Практическая часть. Массивы
Формирование и вывод массивов
Задача 6.1. Заполнить одномерный и двумерный массивы случайными числами из заданного диапазона. Вывод массивов оформить в объекты классов TextBox и DataGridView. Заполнение и вывод массивов оформить пользовательскими процедурами.
Пояснение. Для данной задачи будут сформированы перегруженные пользовательские процедуры S_L – для заполнения массивов случайными числами и out_put – для вывода массивов, которые затем вызываются в событийной процедуре Button1_Click.
Ниже представлен программный код задачи.
Public Class Form1
'процедура заполнения случайными числами одномерного массива
Sub S_L(ByVal c As Int32, ByVal d As Int32, _
ByRef a() As Int32)
Dim b As New Random
44
For i As Int32 = 0 To a.Length - 1 a(i) = b.Next(c, d)
Next i
End Sub
'процедура заполнения случайными числами двумерного массива
Sub S_L(ByVal c As Int32, ByVal d As Int32, _ ByRef a(,) As Int32)
Dim b As New Random
For i As Int32 = 0 To a.GetUpperBound(0) For j As Int32 = 0 To a.GetUpperBound(1)
a(i, j) = b.Next(c, d)
Next j Next i
End Sub
'процедура вывода одномерного массива в объект класса TextBox Sub out_put(ByVal a() As Int32, ByVal b As TextBox)
b.Text = ""
For i As Int32 = 0 To a.Length - 1
b.Text &= Convert.ToString(a(i)) & " " Next i
End Sub
'процедура вывода одномерного массива в объект класса DataGridView Sub out_put(ByVal a() As Int32, ByVal b As DataGridView)
'Запрет на вывод заголовочных столбца и строки таблицы b.ColumnHeadersVisible = False b.RowHeadersVisible = False
'Задание количества строк и столбцов в таблице
b.RowCount = 1 : b.ColumnCount = a.GetLength(0) For j As Int32 = 0 To a.GetUpperBound(0)
'Установка ширины столбцов таблицы b.Columns(j).Width = 40 b.Rows(0).Cells(j).Value = _
Convert.ToString(a(j))
Next j
End Sub
'процедура вывода двумерного массива в объект класса DataGridView Sub out_put(ByVal a(,) As Int32, ByVal b As DataGridView)
'Запрет на вывод заголовочных столбца и строки таблицы b.ColumnHeadersVisible = False b.RowHeadersVisible = False
'Задание количества строк в таблице b.RowCount = a.GetLength(0)
45
'Задание количества столбцов в таблице b.ColumnCount = a.GetLength(1)
For i As Int32 = 0 To a.GetUpperBound(0) For j As Int32 = 0 To a.GetUpperBound(1)
'Установка ширины столбцов таблицы b.Columns(j).Width = 40 b.Rows(i).Cells(j).Value = _
Convert.ToString(a(i, j))
Next j Next i
End Sub
Private Sub Button1_Click(...) Handles Button1.Click
Dim a() As Int32
Dim b(,) As Int32
Dim c As Int32 = Convert.ToInt32(TextBox1.Text)
Dim d As Int32 = Convert.ToInt32(TextBox2.Text)
Dim n As Byte = Convert.ToByte(TextBox3.Text)
Dim k As Byte = Convert.ToByte(TextBox4.Text)
Dim m As Byte = Convert.ToByte(TextBox5.Text) ReDim a(n - 1)
ReDim b(k - 1, m - 1)
'вызов процедуры заполнения случайными числами одномерного массива
S_L(c, d, a)
'вызов процедуры вывода одномерного массива в объект класса TextBox out_put(a, TextBox6)
'вызов процедуры вывода одномерного массива в объект класса
'DataGridView
out_put(a, DataGridView1)
'вызов процедуры заполнения случайными числами двумерного массива
S_L(c, d, b)
'вызов процедуры вывода двумерного массива в объект класса
'DataGridView
out_put(b, DataGridView2)
End Sub
End Class
Пояснение к процедуре S_L. Данная процедура – перегруженная и представлена в двух вариантах: для заполнения случайными числами
46
одномерного массива и для заполнения случайными числами двумерного массива.
Для первого варианта. Входными параметрами процедуры являются – левая (c) и правая (d) границы диапазона для выборки случайных чисел, они передаются по значению (ByVal), выходным параметром является одномерный массив (a) заполненный случайными числами, он передается по ссылке (ByRef). Процедура создает с помощью конструктора New экземпляр b класса Random. В цикле с параметром метод Next, примененный к экземпляру b, формирует случайное число, которое запоминается в соответствующем элементе массива a. Свойство Length класса Array определяет количество элементов в массиве a, который передается в процедуру при вызове.
Для второго варианта. Входными параметрами для данной процедуры являются левая (c) и правая (d) границы диапазона для выборки случайных чисел, они передаются по значению (ByVal), выходным параметром является двумерный массив (a) заполненный случайными числами, он передается по ссылке (ByRef). Процедура создает с помощью конструктора New экземпляр b класса Random. Во вложенных циклах с параметром метод Next, примененный к экземпляру b, формирует случайное число, которое запоминается в соответствующем элементе массива a. Методы GetUpperBound(0) и GetUpperBound(1) класса Array определяют индексы последнего элемента по первому (строки) и второму (столбцы) измерению двумерного массива a, который передается в процедуру при вызове.
Пояснение к процедуре out_put. Данная процедура перегруженная и представлена в трех вариантах: для вывода одномерного массива в объект класса TextBox, для вывода одномерного массива в объект класса DataGridView и для вывода двумерного массива в объект класса DataGridView.
Для первого варианта. Входными параметрами для данной процедуры являются одномерный массив a (что выводится) и объект класса TextBox – b (куда осуществляется вывод). Оба параметра передаются по значению. В цикле с параметром очередной элемент массива a конвертируется в строку символов и добавляется в строку
47
