КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Динамические массивы
Статические массивы
Статические массивы не меняют размерности и размера в процессе выполнения программы.
Объявление статических массивов. Одномерный массив:
Dim <имя_массива (верхняя граница индекса)> As тип
Нижняя граница индекса по умолчанию равна 0.
Двумерный массив:
Dim <имя_массива (верхняя_граница_индекса1, верхняя_граница индекса2)> As Тип
Нижние границы индексов по умолчанию равны 0. Примеры: Dim A(20) As Integer Dim Mass(10, 15) As String ‘аналогично определяются и другие ‘многомерные массивы. При объявлении массива за ним закрепляется область оперативной памяти (ОП). Для установки произвольных границ массива используют другое объявление.
Одномерный массив:
Dim <имя_массива(нижняя_граница_индекса> Тo <верхняя_граница индекса)> As Тип
Двумерный массив:
Dim <имя_массива (нижняя_граница_индекса1> Тo <верхняя_граница индекса1, _ нижняя_граница_индекса2> Тo <верхняя_граница_индекса2)> As Тип Примеры: Dim A(1 To 10, 5 To 15) As Integer ‘двумерный массив Dim C(3 To 12) As Boolean ‘одномерный массив Dim D(7, 10 To 20) As Single ‘двумерный массив, первый индекс – от 0 до 7
Замечание: При объявлении массивов, как и при объявлении переменных, можно использовать вместо Dim ключевые слова Private и Public: - Private – область определения: контейнер (форма, модуль); - Public – область определения: всё приложение.
Нередко размер массива не может быть определен заранее. Было бы расточительно объявлять массив заведомо большего размера. В языке Visual Basic есть средство, позволяющее решить эту проблему. Это динамический массив Объявление такого массива осуществляется в два этапа. Сначала массив определяют в секции General Declarations контейнера (формы, модуля) без указания размера:
Dim <имя_массива()> As Тип ‘область определения – контейнер, ‘если Public, то массив глобальный Затем в процедуре с помощью оператора переопределения (переобъявления) массива ReDim устанавливают фактический размер массива (изменять можно только верхнюю границу и только последнего индекса):
Private Sub … ReDim <имя_массива (10, 20)> ............... ............... End Sub
Замечание: Первоначальные значения констант, определяющих границы изменения индексов, могут задаваться в разделе описания Const, указав имя константы, ее значение. Наиболее гибкий способ объявления массивов – размеры массивов задаются путём ввода их значений с использованием функции InputBox. Пример: Const M = 20, N = 10 ‘ключевое слово Const предваряет объявление констант _ более гибко: M = InputBox (“Укажите значения M и N”) Dim A(M) As Single, B(1 To N) As Integer Функцией InputBox предпочтительнее обеспечивать задание границ изменения индексов и при переопределении массивов, используя её перед оператором ReDim, например, перед ReDim <имя массива> (M, N).
3.4. Одномерные массивы
3.4.1. Ввод одномерных массивов
1. Ввод массива в память (создание массива) с помощью клавиатуры и функции InputBox:
Процедура ввода имеет вид: Private Sub CmdSozd_Click () Const N = 15 Dim I As Integer Dim A(1 To N) As Single ‘объявление массива For I = 1 To N A(I) = InputBox (“Введите значение элемента с номером: ”& I) Next I End Sub
2. Ввод (создание) массива с использованием стандартной функции Choose, выполняющей выбор элементов (значений), заданных в списке. Синтаксис функции: Choose (Index, ch_1 [, ch_2, … [, ch_n]]), где: - index – числовое выражение или поле, принимающее значения от 1 до числа возможных элементов в списке; ch_1, …, ch_n – элементы списка. Пример For I = 1 To 7 ‘занесение данных в массив Den_Ned Den_Ned(I) = Choose(I, “Пн”, “Вт”, “Ср”, “Чт”, “Пт”, “Сб”, “Вс”) Next I 3.4.2. Вывод одномерных массивов
Вывод массива (его отображение) может осуществляться несколькими способами: - оператором MsgBox – сцепляя элементы массива в строку – в специальное окно; - в элемент ListBox – построчно, начиная с нулевой строки массива; - в элемент TextBox – сцепляя элементы массива в строки; - оператором Print – на форму - выводимая информация будет появляться либо вдоль левой границы формы, либо в верхней части ЭФ в зависимости от используемых в операторе разделителей, “ скрываясь ” за объектами (элементами) управления, расположенными на форме (принять меры, чтобы печать была видна – переместить элементы). Пример: Пусть на форме имеются текстовое поле с именем TxtViv, список с именем ListViv и кнопка “Вывод” с именем CmdViv. Двойным щелчком вызовем процедуру: Procedure Sub CmdViv_Click () Dim A(1 To 5) As Single ‘массив Dim I As Integer ‘параметр цикла Dim Mass As String ‘строка для размещения элементов массива ‘Создание массива А (см. начало п. 3.4) ‘Вывод массива Mass = “”: TxtViv.Text = “” ‘очистка строки для вывода массива и текстового поля For I = 1 To 5 TxtViv.Text = TxtViv.Text & “ ” & A(I) ‘формирование строки в TextViv Mass = Mass & Str(A(I)) & “ ” ‘подготовка строки для MsgBox ListViv.List (I) = A(I) ‘вывод в список (5 строк) Next I MsgBox “Массив:” & Mass ‘вывод в специальное окно End Sub
3.4.3. Обработка одномерных массивов
Для упрощения будем считать, что решение производится на простейшей форме с двумя кнопками Cmd1 и CmdExit, так что вся программа будет сосредоточена в процедуре связанной с кнопкой Cmd1. Примеры: Пример1. Определить максимальный элемент массива из заданного числа элементов. Определить также номер максимального элемента.
Private Sub Cmd1_Click () Dim A(1 To 10) As Single, Max As Single, I As Integer, Nom As Integer For I = 1 To 10 ‘Ввод массива A(I) = InputBox (“Вв.элемент с номером ” & I) Next I Max = A(1) For I = 1 To 10 If A(I) > Max Then Max = A(I) Next I Print “Максимальный элемент = ” & Max ‘второй просмотр позволит _ определить номера всех максимальных элементов Print “номера максимальных элементов” For I = 1 To 10 If A(I) = Max Then Print I ‘принять меры, чтобы печать была видна Next I End Sub Пример 2. Определить первый максимальный элемент из числа отрицательных элементов массива. Private Sub Cmd1_Click () Dim A(1 To 20) As Single, Max As Single ‘объявление массива и переменных Dim I As Integer, Nom As Integer
‘ ввод массива – (см. выше Пример1) Max = -1E45 For I = 1 To 20 If A(I) < 0 And A(I) > Max Then Max = A(I): Nom = I ‘если нужно искать _ последний, то: If A(I) < 0 And A(I) >= Max Then Max = A(I): Nom = I Next I If Max =-1E45 Then MsgBox “В массиве нет отрицательных элементов” Else MsgBox “искомый максимальный элемент =” & Max & “ “ & _ “номер=” & Nom
Дата добавления: 2014-01-04; Просмотров: 439; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |