Главная страница
Случайная страница
Разделы сайта
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Массив - это сколько угодно значений, объединенных одним именем.
Массив, прежде чем использовать, надо объявить. Объявляется он совершенно также как и переменная. Если ты объявишь его локально в процедуре (здесь можно использовать ключевое слово Static), то он будет доступен только в этой процедуре и нигде больше, если в разделе (General)-(Daclarations) формы (c оператором Dim) - то во всей форме, а если тебе нужно объявить его глобально, так, чтобы он был доступен всему проекту, то в стандартном модуле с ключевым словом Public. Кроме того, массивы бывают статическими и динамическими.
Статический массив - это когда ты заранее знаешь, сколько переменных туда нужно будет записать, т.е. если ты объявил массив на 10 членов, то уж туда никак не запихнешь одиннадцать. В форме он объявляется так:
Dim Chislo(9) As Long
Что здесь важно. Dim - оператор, который точно также, как и при объявлении переменной, объявляет массив и выделяет для нее память. Chislo - ну это просто имя, придумывается также как и для переменной и отвечает тем же требованиям. (9) - количество элементов в массиве - их 10. Почему так. Дело в том, что элементы массива нумеруются с нуля, а не с единицы, поэтому у нас десять элементов массива c номерами 0, 1, 2, 3, 4, 5, 6, 7, 8 и 9. Если для каких-то целей такой порядок тебя не устраивает, то используется оператор Option Base 1, который прописывается в разделе Declarations и привязывает первый элемент ВСЕХ, повторяю ВСЕХ, массивов в программе к единице. As Long - определение типа данных массива так же как тип обычной переменной. Почти всегда все элементы массива имеют один и тот же тип (в данном случае длинное число Long). На крайняк, если это не так, или если ты не знаешь какого типа будут данные, можно задать тип Variant, но это нежелательно из-за того, что это занимает значительный объем памяти, особенно если массив большой. Размерность - ее так сразу не заметно, но она здесь присутствует и равна единице, потому, что у на одна циферка (девятка), т.е. наш массив является одномерным - по сути список значений. Теперь создадим массив для хранения результатов, ну скажем таблицы умножения на 8. Поскольку на ноль умножать бесперспективно, привязываем первый элемент массива к единице и объявляем переменную x для организации цикла For...Next.
Option Explicit Option Base 1 Dim Chislo(10) As Long 'так как мы используем оператор Option Base, то элементы массива нумеруются с единицы Dim x As Long
Положим на форму Text1 с установленными свойствами .MultiLine в True, а .ScrollBars - в 2-Вертикаль, а также кнопку Command1. В процедуре Form_Load напишем цикл, который будет присваивать каждому элементу массива значение, соответствующее его номеру, умноженному на 8.
Private Sub Form_Load() Text1.Text = " " For x = 1 To 10 Chislo(x) = x * 8 Next x End Sub
Как видите, в цикле мы вместо номера элемента просто используем значение x, и таким образом перебираются все элементы массива. Теперь мы выведем значения элементов массива в Text1 в процедуре Command1.
Private Sub Command1_Click() For x = 1 To 10 Text1.Text = Text1.Text & Chislo(x) & vbCrLf Next x End Sub
Таким образом наш одномерный массив представляет собой аналог таблицы с одной строчкой:
1 элемент
| 2 элемент
| 3 элемент
| 4 элемент
| 5 элемент
| 6 элемент
| 7 элемент
| 8 элемент
| 9 элемент
| 10 элемент
|
|
|
|
|
|
|
|
|
|
| Теперь переделаем его в двухмерный массив, чтобы в еще одну строчку записать множитель, на который умножается число 8. Переделаем наш код на такой:
Option Explicit Option Base 1 Dim Chislo(10, 2) As Long Dim x As Long
Private Sub Form_Load() Text1.Text = " " For x = 1 To 10 Chislo(x, 1) = x Chislo(x, 2) = x * 8 Next x
Private Sub Command1_Click() For x = 1 To 10 Text1.Text = Text1.Text & " 8 x " & Chislo(x, 1) & " = " & Chislo(x, 2) & vbCrLf Next x End Sub
И наш массив будет представлять собой следующее
| 1 элемент
| 2 элемент
| 3 элемент
| 4 элемент
| 5 элемент
| 6 элемент
| 7 элемент
| 8 элемент
| 9 элемент
| 10 элемент
| 1 элемент
|
|
|
|
|
|
|
|
|
|
| 2 элемент
|
|
|
|
|
|
|
|
|
|
| таким образом элемент массива Chislo (7, 2) будет иметь значение 56. Обратите внимание, что размерность массива определяет колиство циферек в объявлении. Массив Chislo (10, 5) - тоже двухмерный, только строк в табличке было-бы не две, а пять. А объявление трехмерного массива выглядело бы так Dim(10, 5, 2). Такую трехмерную таблицу нарисовать мне затруднительно. В принципе VB поддерживает до 64 размерностей массива, но это в голове трудно укладывается. Все, как видите очень просто. Однако статические массивы используются довольно редко. Чаше мы не знаем сколько данных мы будем иметь и потом ведь хочется дописать при необходимости в массив новые данные. Для этого существуют динамические массивы.
Часто возникает ситуация, когда мы не знаем заранее, сколько элементов массива мы будем использовать заранее. Поэтому массив объявляется без размерности, например
|