ПиОА_1 семестр_1 / ПОСОБИЕ_VB.Net
.pdf
5. ПОДПРОГРАММЫ ПОЛЬЗОВАТЕЛЯ
Если в программе возникает необходимость частого обращения к некоторой группе операторов, то рационально сгруппировать такую группу в самостоятельный блок, к которому можно обращаться по имени из любого места в программе.
Программные блоки, созданные самим пользователем называ-
ются подпрограммами пользователя.
Каждой пользовательской подпрограмме дается уникальное имя. Передача данных в подпрограмму и возврат результата выполнения осуществляется с помощью входных и выходных параметров.
Входной параметр – это переменная, значение которой должно быть установлено до начала работы данной подпрограммы, а выход- ной параметр – это переменная, которая получает свое значение в результате работы подпрограммы.
Имя подпрограммы и ее параметры записываются в заголовке подпрограммы.
Различают формальные параметры – параметры, определенные в заголовке подпрограммы, и фактические параметры – выражения, задающие конкретные значения при обращении к подпрограмме.
Имеется два типа пользовательских подпрограмм:
-процедуры (Sub);
-функции (Function).
Главные отличия функции от процедуры:
-результат работы функции – единственное значение, а результат работы процедуры – одно значение, несколько значений или ни одного;
-обращение к функции является разновидностью операнда, т.е. функция включается в состав выражения (арифметического, логического, строкового и др.). При этом говорят, что функция возвращает свое значение. Вызов же процедуры – это разновидность оператора.
8
5.1.Процедуры пользователя
Формат пользовательской процедуры:
Sub Имя процедуры ([Формальные параметры])
Описание локальных переменных
Операторы тела процедуры
End Sub
Чтобы процедура была доступна из любого места программного кода модуля формы, она создается в начале файла формы сразу после
слов Public Class.
Private Sub Имя процедуры ([Формальные параметры])
Описание локальных переменных
Операторы тела процедуры
End Sub
Формальные параметры перечисляются через запятую с указанием их типов.
Переменные, объявленные внутри процедуры, являются локаль- ными, они доступны только в этой процедуре.
Обращение к процедуре осуществляется в основной программе путем задания имени процедуры и списка фактических параметров в круглых скобках:
Имя процедуры ([Cписок фактических параметров])
При вызове процедуры формальные параметры заменяются фактическими в порядке их следования. Количество, типы и порядок
следования формальных и фактических параметров должно в точ- ности совпадать!
Способ передачи параметров
В VB.Net параметры процедуры могут передаваться двумя спо-
собами: либо по значению (ByVal), либо по ссылке (ByRef).
При передаче по ссылке ByRef вызываемая процедура получает физический адрес памяти передаваемой переменной. В этом случае значение параметра может изменяться, так как вызываемая и вызы-
9
вающая процедуры обращаются к одной и той же области памяти. Обычно так передают выходные параметры процедуры.
При передаче по значению ByVal вызываемая процедура получает копию значения параметра, и изменить его не может. Обычно так передают входные параметры процедуры.
5.2. Функции пользователя
Формат пользовательской функции:
Function Имя функции ([…]) As Тип функции Описание локальных переменных Операторы тела функции
End Function
Чтобы функция была доступна из любого места программного кода модуля формы, она создается в начале файла формы сразу после
слов Public Class.
Private Function Имя функции ([…]) As Тип функции Описание локальных переменных Операторы тела функции
End Function
Формальные параметры перечисляются через запятую с указанием их типов. После ключевого слова As указывается тип возвращаемого функцией значения. В разделе операторов тела функции должен обязательно присутствовать, по крайней мере, один оператор вида:
Имя функции = Вычисленное значение
В этом операторе вычисленное значение присваивается переменной, совпадающей с именем функции. В точку вызова возвращается результат последнего такого присваивания.
Так как обращение к функции является разновидностью операнда, то обращение к функции включается в состав выражения (арифметического, логического, строкового и др.). При вызове функции формальные параметры заменяются фактическими в порядке их сле-
дования. Количество, типы и порядок следования формальных и фактических параметров должно в точности совпадать!
10
Например, функцию
Function Tangens(x) As double
Tangens = sin(x)/cos(x)
End Function
можно вызвать
s = Tangens(pi()/2)
5.3. Рекурсивные процедуры и функции
Слово «рекурсия» происходит от латинского слова «recursio» - возвращение.
Если процедура (или функция) обращается сама к себе как к процедуре (или функции) непосредственно или через цепочку подпрограмм с измененными значениями параметров, то это называется рекурсией.
Например, вычисления факториала можно оформить в виде рекурсивной функции:
Function Fakt (n As byte) As double
Fakt = n * Fakt(n-1)
End Function
Вызов функции в основной программе:
…
F = Fakt (5)
…
Как работает рекурсия в этом случае: Fakt = 5*Fakt(4)
Fakt = 4*Fakt(3) Fakt = 3*Fakt(2) Fakt = 2*Fakt(1) Fakt = 1*Fakt(0)
Fakt = 0*Fakt(-1) и т.д.
В итоге – переполнение памяти. Следовательно, при работе с рекурсивными подпрограммами, необходимо обеспечить выход из рекурсии:
11
Function Fakt (n As byte) As double
If n = 0 Then 'Условие выхода из рекурсии
Fakt = 1
Else
Fakt = n * Fakt(n-1)
End If
End Function
Как работает рекурсия в этом случае:
В глубь рекурсии:
Fakt = 5*Fakt(4)
Fakt = 4*Fakt(3)
Fakt = 3*Fakt(2)
Fakt = 1*Fakt(0) |
'Остановка рекурсии |
Возврат из рекурсии:
Fakt=1*1
Fakt=2*1
Fakt=3*2
Fakt=4*6
Fakt=5*24=120
Количество вызовов подпрограммы самой себя называется глу-
биной рекурсии или глубиной рекурсивных вызовов.
Плюсы рекурсии:
-Для составления функции используется постановка задачи, поэтому ряд задач легче запрограммировать в виде рекурсии
Минусы рекурсии:
-большие расходы оперативной памяти,
-медленная работа при большой глубине рекурсии.
12
5.4. Практическая часть. Подпрограммы пользователя
Задача 5.1. Вычислить площадь четырехгранника, если даны длины его ребер.
Вычисление площади треугольника по формуле Герона необходимо оформить в виде процедуры.
Процедура вычисления площади треугольника:
Private Sub Sq (ByVal x,y,z As Double, ByRef s As Double)
Dim p As Double
p = (x + y + z) / 2
s = math.sqrt(p*(p-x)*(p-y)*(p-z))
End Sub
Пояснение. Формальные параметры:
Входные: длины сторон (x, y, z); Выходной: площадь треугольника s.
Вызов процедуры вычисления площади треугольника в основной программе:
Sq(a,b,c,s1)
Sq(c,d,e,s2)
Sq(b,e,f,s3)
Sq(a,f,d,s4)
s = s1+s2+s3+s4
Фактические параметры:
a, b, c, s1 – в первом обращении c, d, e, s2 – во втором обращении и т.д.
Задача 5.2. Вычислить число сочетаний из n по m: C m = |
n! |
|
|
. |
|
n
m! (n − m)!
Вычисление факториала оформить в виде рекурсивной функции.
13
Функция вычисления факториала:
Function Fakt (n As byte) As double
If n = 0 Then Условие выхода из рекурсии
Fakt = 1
Else
Fakt = n * Fakt(n-1)
End If
End Function
Вызов функции в основной программе:
Dim c As Double
Dim n, m As Byte
…
n = 7 : m = 5
c = F(n) / (F(m)*F(n-m))
…
Задача 5.3. Найти наибольший общий делитель (НОД) двух натуральных чисел. Вычисление НОД оформить в виде рекурсивной функции.
Пояснение. НОД – это наибольшее целое число, на которое делятся оба числа без остатка. Например, НОД (12, 9) = 3.
Великий математик Эйлер (XVIII век) обнаружил, что если В делится на А нацело, то НОД(А, В) = А, в противном случае НОД(А, В) = НОД(В mod А, А).
Рекурсивная функция вычисления НОД:
Function N_D (A As Int32, B As Int32) As Int32
If B mod A = 0 Then N_D = A Else N_D = N_D (B mod A, A)
End Function
14
5.5. Контрольные вопросы
1.Что такое подпрограмма?
2.Что такое функция и процедура? Опишите различия между функцией и процедурой.
3.Где описываются процедуры и функции?
4.Каковы главные отличия функции от процедуры?
5.Что такое формальные и фактические параметры?
6.В чем разница между параметрами, передаваемыми по значению,
ипараметрами, передаваемыми по ссылке?
7.Каким ключевым словом описываются параметры, передаваемые по значению, а каким по ссылке?
8.Как обычно передают входные параметры процедуры: по значению или по ссылке?
9.Какой оператор должен обязательно присутствовать в разделе операторов тела функции?
10.Как осуществляется в программном коде обращение к функциям
ик процедурам?
11.Объясните понятие рекурсии. Опишите алгоритм ее применения.
12.Что такое рекурсивные процедуры и функции?
13.Что такое глубина рекурсии?
14.Как осуществляется выход из рекурсии?
15.Приведите пример рекурсивной процедуры.
16.На плоскости задаются 4 точки своими координатами. Определить, между какими парами точек самое большое расстояние. Для вычисления расстояния используйте подпрограмму-функцию.
17.Создать проект для нахождения наибольшего общего делителя и
наименьшего общего кратного двух натуральных чисел
|
|
a b |
|
|
НОК(a, b) = |
|
. Используйте подпрограммы. |
|
|||
|
|
|
|
|
|
НОД(a, b) |
|
18. Создать проект вычисления суммы факториалов всех четных чисел от m до n .
15
19. Найти все целые корни уравнения ax3 + bx |
2 + cx + d = 0 , где |
a, b, c, d – заданные целые числа, причем a ≠ 0 |
и d ≠ 0 . (Целыми |
корнями могут быть только положительные и отрицательные де- |
|
лители коэффициента d ).
20.Дано простое число. Составить проект, корый будет находить следующее за ним простое число. Использовать подпрограмму.
21.Натуральные числа a, b, c называюся числами Пифагора, если
выполняется условие a 2 + b 2 = c 2 . Найти все числа Пифагора, меньшие N . Вычисление условия оформить в виде функции (выходной параметр – логического типа).
22.Создайте проект для вычисления частичной суммы бесконечного ряда (задание 20 раздела 4)
∑ (−1) k + 1 |
k k +1 |
|
(2k − 1)! |
||
= |
||
k 1 |
|
сиспользование рекуррентной формулы:
-при заданном количестве слагаемых ( n = 5 );
-при заданной точности вычислений ( ε = 0,0001).
Вычисление сумм оформите в виде процедур.
16
6. МАССИВЫ
Массив – это конечная упорядоченная совокупность однотип-
ных данных, которая связана с упорядоченным набором целых чисел, называемых индексами.
Массив характеризуется
-именем,
-размерностью,
-размером.
Количество индексов определяет размерность массива: одномерный (вектор), двумерный (таблица) и т. д.
Размер массива задается границами изменения индексов по каждому измерению (минимальное и максимальное значение индекса). Размер массива – это количество его элементов.
Для доступа к элементу массива следует указать имя массива и индексы элемента, заключив их в круглые скобки. Индексы могут быть – константами, переменными или выражениями целого типа.
Одномерный массив соответствует списку, каждый его элемент имеет один индекс, например:
A(1), A(i), A(b*5+2)
Местоположение элемента двумерного массива (таблицы) задается двумя индексами (номером строки и номером столбца), которые записываются после имени массива в круглых скобках через запятую,
например, A(0,1), A(i,j), A(b*5+2,i+1)
Для работы с элементами массива, как правило, используются операторы цикла, чаще всего циклы с параметром, с двумерными массивами используются вложенные циклы.
6.1. Описание массивов
Формат статического описания одномерных массивов:
Dim Имя_массива(Верхняя_граница_индекса) As Tип_данных
Формат статического описания двумерных массивов:
Dim Имя_массива (Верхняя_граница_индекса_по_строкам,
Верхняя_граница_индекса_по_столбцам) As Тип_данных
17
Примечание. Нижняя граница индексов массива в .Net по умолчанию равна
нулю!
Например,
Dim A(10) As Single описывает одномерный массив вещественных чисел A, состоящий из 11 элементов. Нижняя граница индекса равна 0, верхняя – 10.
Dim A (8,9) As Single описывает двумерный массив вещественных чисел A, состоящий из 90 элементов (9×10).
Массивы могут инициализироваться при объявлении, например:
Dim S() As Int32 = {9,7,5,4,2,-37,6}
Dim А(,) As Int32 = {{9,7},{5,4},{2,-37}}
Указывая верхнюю границу массива, пользователь заранее выделяет память под определенное количество элементов.
Массив можно описать динамически, т.е. заранее не выделяя под него память.
Формат динамического описания одномерных массивов:
Dim Имя_массива () As Тип_данных
Например, Dim A() As Single описывает одномерный массив вещественных чисел. Какое число элементов будет в массиве при этом не известно, и память под него заранее не выделяется.
Формат динамического описания двумерных массивов:
Dim Имя_массива (,) As Тип_данных
Например: Dim A(,) As Int32 описывается двумерный массив целых чисел. Какое число элементов будет в массиве при этом не известно, и память под него заранее не выделяется.
Перед тем, как использовать массив, объявленный таким образом, в программном коде необходимо применить процедуру ReDim, с помощью которой указать верхнюю границу индексов массива. Именно ReDim и выделит необходимое количество памяти.
Формат процедуры ReDim для одномерных массивов:
ReDim Имя_массива (Верхняя граница индекса)
18
Формат процедуры ReDim для двумерных массивов:
ReDim Имя_массива (Верхняя_граница_индекса_по_строкам,
Верхняя_граница_индекса_по_столбцам)
При работе с массивами необходимо жестко задать его размер. В дальнейшем размер массива изменен быть не может. Причем, как уже говорилось выше, языками, входящими в .NET, поддерживаются только массивы с верхней границей, равной нулю.
6.2. Класс System.Array для работы с массивами
Все типы данных в .NET являются объектами. Например, когда вы создаете переменную целого типа (Int32), на самом деле создается экземпляр класса System.Int32. Это касается и массивов – любой массив является экземпляром класса System.Array.
Класс System.Array содержит свойства и методы для работы с массивами. Некоторые методы и свойства класса Array представлены в табл. 6.1.
|
Таблица 6.1. Методы и свойства класса Array |
|
|
|
|
Название |
Описание |
|
|
Свойства |
|
|
|
|
Length |
Возвращает общее число элементов во всех измерениях |
|
массива. Ноль, если в массиве нет элементов |
||
|
||
|
|
|
Rank |
Возвращает ранг (размерность) массива |
|
|
|
|
|
Методы класса |
|
|
|
|
GetLength |
Возвращает количество элементов в заданном измерении |
|
массива |
||
|
||
|
|
|
GetLowerBound |
Возвращает индекс первого элемента заданного измере- |
|
ния в массиве. |
||
|
|
|
GetUpperBound |
Возвращает индекс последнего элемента заданного из- |
|
мерения в массиве. |
||
|
|
|
IndexOf |
Ищет первое вхождение в массив указанного объекта |
|
|
|
|
LastIndexOf |
Ищет последнее вхождение в массив указанного объекта |
|
|
|
|
Sort |
Позволяет сортировать элементы одномерного массива |
|
по возрастанию |
||
|
||
|
|
|
Copy |
Копирует часть одного массива в другой |
|
|
|
|
|
19 |
|
Продолжение табл. 6.1 |
|
|
Методы экземпляра класса |
|
|
|
|
GetValue |
Ищет значение элемента с указанным индексом |
|
|
|
|
SetValue |
Присваивает значение элементу, находящемуся в указан- |
|
ной позиции |
||
|
||
|
|
|
CopyTo |
Копирует все элементы одного массива в другой массив, |
|
начиная с указанного индекса |
||
|
||
|
|
|
|
Изменяет порядок элементов таким образом, что послед- |
|
Reverse |
ний элемент становится первым, предпоследний – вто- |
|
|
рым и так далее |
|
|
|
Примечание. С описанием остальных свойств и методов пространства имен System.Array вы можете ознакомиться в Интернете на сайте Microsoft по адресу:
http://msdn.microsoft.com/en-us/library/system.array
В табл. 6.1 приведены методы класса и методы экземпляра класса. Методы класса определяются именем класса Array. На-
пример, Array.Sort(a).
Для того чтобы при вызове методов класса System.Array не указывать имя класса Array, этот класс следует импортировать в модуль c помощью оператора Imports:
Imports System.Array
Методы экземпляра класса основываются на отдельном экземпляре класса Array и должны уточняться именем экземпляра, например,
Dim b() as int32
b.CopyTo(a, 8),
здесь b – экземпляр класса Array.
Примечание. Все методы класса Array работают с массивами только
фиксированной длины.
Некоторые из приведенных в табл.6.1 методов, например, Sort являются перегруженными, т.е. фактически это несколько методов с одним именем, но имеющих разное количество параметров, причем тип параметров тоже может отличаться.
20
Применение свойств и методов класса Array
Определение размерности массива и количества элементов в массиве.
Для одномерного массива a, состоящего из 10 элементов:
a.Rank вернет значение 1 a.Length вернет значение 10 a.GetLength(0) вернет значение 10
a.GetUpperBound(0) вернет значение 9
Для двумерного массива b, состоящего из двух строк и трех столбцов:
b.Rank вернет значение 2 b.Length вернет значение 6 b.GetLength(0) вернет значение 2 b.GetLength(1) вернет значение 3
b.GetUpperBound(0) вернет значение 1 b.GetUpperBound(1) вернет значение 2
Изменение порядка следования элементов в массиве. Изме-
нить порядок элементов в массиве возможно с помощью двух методов класса Array: путем задания обратного порядка следования элементов (метод Reverse()) и путем сортировки (метод Sort()) .
Метод Reverse()имеет формат:
Array.Reverse(Массив)
Метод Reverse() «перегружен». Если необходимо задать обратный порядок следования только у части массива, достаточно задать еще два параметра: индекс начального элемента и длину части массива, которую нужно изменить:
Array.Reverse(Массив, Нач_номер, Длина)
Метод Sort() также «перегружен». Самый простой вариант его применения выглядит так:
Array.Sort(Массив)
В таком виде метод Sort сортируется весь массив по возрастанию.
21
Если необходимо отсортировать только часть массива, то к параметру Массив следует добавить индекс начального элемента и длину части массива, которую нужно отсортировать:
Array.Sort(Массив, Нач_номер, Длина)
У метода Sort есть ещё одна интересная разновидность, позволяющая сортировать элементы одного массива в соответствии со значениями элементов другого массива:
Array.Sort(Массив_ключей, Массив)
В первом параметре задаётся массив ключей. На основе элементов этого массива будет отсортирован массив, передаваемый во втором параметре. Длины массивов должны быть одинаковыми.
Пример. Массив f содержит фамилии студентов, а в массиве
r – накопленные ими баллы. Отсортировать массив f по накопленным баллам r в порядке убывания.
Dim f() As String ={"Ханов", "Иванов", "Петров", _ "Седов", "Исаев", "Фролов", _ "Макеев", "Тукаев", _ "Шафеев", "Ассев"}
Dim r() As Byte ={29, 38, 24, 7, 18, 5, 28, 94, 79, 32}
Array.Sort(r, f) Array.Reverse(f) Array.Reverse(r)
For i As Byte = 0 To 9
TextBox1.Text &= f(i) & " " & Str(r(i)) & _ Chr(13) & Chr(10)
Next i
Результат работы: Тукаев |
94 |
Шафеев |
79 |
Иванов |
38 |
Ассев |
32 |
Ханов |
29 |
Макеев |
28 |
Петров |
24 |
Исаев |
18 |
Седов |
7 |
Фролов |
5 |
22
Копирование массивов. Метод Copy класса Array позволя-
ет скопировать часть исходного массива, начиная с первого эле- мента, и заменить этой частью элементы принимающего массива,
также начиная с первого элемента. Его формат:
Array.Copy(Исходный массив, Принимающий массив, Длина части исходного массива)
Пример. В исходном массиве b заменить первые два элемента двумя первыми элементами из массива a:
Array.Copy(a, b, 2)
Исходный массив а:
Исходный принимающий массив b:
Результат (массив b):
Метод экземпляра класса CopyTo класса Array копирует все
элементы исходного массива и заменяет ими элементы в принимающем массиве, начиная с указанного индекса:
Исходный массив.CopyTo(Принимающий массив, Индекс в принимающем массиве)
Пример. В исходном массиве a заменить элементы, начиная с индекса 2, элементами массива b:
Dim a(),b() As String
… … … … … … … … … …
b.CopyTo(a, 2)
Массив а:
Массив b:
Результат (массив a):
23
Пример. Добавить массив b в конец массива а. Размерность массива а должна быть объявлена с учетом вставки массива b:
Dim a(),b() As String
'na – размерность исходного массива а. 'nb – размерность массива b.
ReDim a(na+nb-1) ' Размерность массива a объявляем с учетом ' вставки массива b
ReDim b(nb-1)
b.CopyTo(a, na)' Копируем массив b в конец массива a
Исходный массив а:
Исходный массив b:
Результат (массив a):
Примечание. Массив класса Array имеет фиксированную длину и не может увеличиваться или уменьшаться в размерах. Поэтому методы Copy и CopyTo фактически заменяют элементы принимающего массива.
Поиск объекта в массиве. Найти первое вхождение указанного объекта в массиве можно с помощью метода IndexOf класса Array, а последнее вхождение – с помощью метода LastIndexOf. Синтаксис у этих двух методов одинаков:
Array.IndexOf(Массив, Объект)
Array.LastIndexOf(Массив, Объект)
Эти методы «перегружены», т.е. у них может быть и большее количество параметров. Например, при следующих параметрах:
Array.IndexOf(Массив, Объект, StartIndex)
метод ищет первое вхождение указанного объекта, начиная с индекса
StartIndex.
Пример. Найти номер первого появления символа "b" в массиве символов a {"a", "b", "c", "a", "b", "c"}:
Array.IndexOf(a, "b")
24
Пример. Найти номер первого появления символа "b" в массиве a,
начиная с заданного индекса k:
Array.IndexOf(a, b, k)
Пример. Найти значение элемента с указанным индексом можно с помощью метода GetValue экземпляра класса Array:
Массив.GetValue(Индекс)
Пример. В заданном массиве a {"1", "2", "3", "4", "5", "6", "7", "8"} найти значение элемента с индексом 2:
a.GetValue(2)
Результат: 3
Примечание. Все описанные выше методы возвращают индекс найденного элемента, если поиск увенчался успехом, и -1, если ничего не найдено.
Замена указанного элемента в массиве. Метод экземпляра класса Array:
Массив.SetValue(Новое_значение_элемента, Индекс)
присваивает новое значение элементу, находящемуся в указанной позиции одномерного массива.
Пример. В заданном массиве a элемент с индексом 0 заменить на слово «Петух»:
Dim a() = {"1", "2", "3", "4", "5", "6", "7", "8"}
… … … … … … … … … …
a.SetValue("петух", 0)
Исходный массив:
Результат :
25
6.3.Класс System.Collections.ArrayList для работы
сдинамическими массивами
В отличие от класса Array, который работает с массивами только фиксированной длины, класс ArrayList пространства имен
System.Collections работает c массивами переменной длины.
Методы класса ArrayList рассматривают одномерные массивы как экземпляры списков и поэтому позволяют спискам увеличиваться и уменьшаться в размерах. В таких списках можно динамически удалять элементы и добавлять новые.
Пространства имен System.Collections содержит разные типы коллекций. Коллекцией можно считать конечную совокупность объектов, с которыми можно совершать те или иные действия. Хотя в
.NET Framework массивы не относится к числу коллекций, но по своему предназначению это тоже коллекции. Массивы отделены от коллекций потому, что они поддерживаются средой исполнения CLR непосредственно.
Основные свойства и методы класса ArrayList представлены в табл. 6.2.
|
|
Таблица 6.2. Методы и свойства класса ArrayList |
|
|
|
|
|
|
Название |
Описание |
|
|
|
Свойства |
|
|
Count |
Получает число элементов, которое в действительности со- |
|
|
держится в списке |
||
|
|
||
|
|
|
|
|
|
Методы экземпляра класса |
|
|
Add |
Добавляет элемент (объект) в конец списка |
|
|
|
|
|
|
AddRange |
Добавляет совокупность объектов в конец списка |
|
|
|
|
|
|
Remove |
Удаляет первое вхождение указанного объекта из списка |
|
|
|
|
|
|
RemoveAt |
Удаление из списка элемента, находящегося в указанной по- |
|
|
зиции |
||
|
|
||
|
|
|
|
|
RemoveRange |
Удаление из коллекции указанного количества элементов, |
|
|
начиная с указанной позиции |
||
|
|
|
|
|
Clear |
Удаляет все элементы из списка |
|
|
|
|
|
|
|
26 |
|
|
|
Продолжение табл. 6.2 |
|
|
Insert |
Вставляет элемент в список по указанному индексу |
|
|
|
|
|
|
InsertRange |
Вставляет элементы одного массива в другой массив, начи- |
|
|
ная с указанного индекса |
||
|
|
|
|
|
CopyTo |
Копирует список ArrayList или его часть в одномерный |
|
|
массив класса Array. |
||
|
|
||
|
|
|
|
|
IndexOf |
Ищет первое вхождение в список указанного объекта |
|
|
|
|
|
|
LastIndexOf |
Ищет последнее вхождение в список указанного объекта |
|
|
|
|
|
|
Reverse |
Изменяет порядок элементов во всем списке на обратный. |
|
|
|
|
|
|
Sort |
Сортирует элемента списка по возрастанию |
|
|
|
|
|
|
|
|
|
Примечание 1. При использовании методов класса ArrayList необходимо вначале создать экземпляр коллекции с помощью конструк-
тора: Dim a As New ArrayList()
Примечание 2. Для того чтобы при вызове методов класса ArrayList не указывать имя класса, этот класс следует импортировать в модуль c помощью оператора Imports:
Imports System.Collections.ArrayList
Примечание 3. С описанием остальных свойств и методов пространства имен System. Collections вы можете ознакомиться в Интернете на сайте Microsoft по адресу: http://msdn.microsoft.com/en-us/library/system.collections.arraylist
Применение свойств и методов класса ArrayList
Добавление элементов в список. Добавить элемент в конец списка можно с помощью метода Add экземпляра класса
ArrayList:
Список.Add(Oбъект)
Пример. Заполнить список 16 случайными числами:
For i As Int32 = 0 To 15
a.Add(S.Next(1, 9))
Next i
27
