Теоретические сведения. В программах для хранения данных одного типа помимо переменных могут использоваться специальные языковые конструкции – массивы
В программах для хранения данных одного типа помимо переменных могут использоваться специальные языковые конструкции – массивы. Синтаксис объявления массива (одномерного) следующий: Dim <идентификатор> (размерность) As <тип> Объявление и использование массивов похоже на использование переменных. Также как и переменная, массив имеет имя (<идентификатор>), но для обращения к данным в массиве требуется помимо идентификатора указать номер (индекс), под которым данные находятся в массиве (как его элементы). Количество номеров (индексов) элементов в массиве определяется при его объявлении размерностью (размерность). Адресация элементов массива определяется от 0 до размерности, т.е. кол-во элементов данных больше размерности на 1. Синтаксис записи данных в элементы массива и чтения данных из них представляется в следующем виде: <идентификатор>(индекс)=<значение> <значение>=<идентификатор>(индекс) Пример использования массива: Sub primer() Dim A(1) As Integer ' Объявление (создание) массива по имени A из 2-х элементов ' для хранения целых чисел A(0)=23 ' Запись в первый элемент массива числа A(1)=35 ' Запись во второй элемент массива числа MsgBox A(0)+A(1) ' Считывание значений из двух элементов массива, ' нахождение суммы этих значений и его отображение End Sub Массивы удобно использовать в сочетании с циклами для выполнения повторяющихся операций над данными: Sub primer() Dim A(2) As Double ' Объявление массива A для хранения трех вещественных чисел Dim i As Integer ' Объявление переменной-счетчика i For i=0 To 2 Step 1 ' Задания цикла, выполняемого от значения ' переменной-счетчика i=0 до 2 при шаге ее изменения равном 1 A(i)=Rnd() ' Запись в i-ый элемент массива случайного числа MsgBox A(i) ' Отображение значения из i-ого элемента массива Next i ' Переход к следующему значению переменной-счетчика End Sub
Для массивов возможно задание размерности в ходе работы программы по следующему синтаксису: Dim <идентификатор>() As <тип> …(программный код)… ReDim <идентификатор>(<размерность>) Пример переопределения размерности массива: Sub primer() Dim A() As Double ' Создание массива неизвестного до запуска программы размера Dim i As Integer ' Создание переменной для хранения целых чисел Dim j As Integer ' Создание переменной для хранения целых чисел i = InputBox("Размерность массива (ЦЕЛОЕ ЧИСЛО >0):") ' Ввод в переменную i желаемой размерности массива ReDim A(i - 1) ' Задание размерности массива из переменной i For j = 0 To i - 1 Step 1 ' Задания цикла, выполняемого от значения ' переменной-счетчика j=0 до i-1 при шаге ее изменения равном 1 A(j) = Rnd() ' Запись массива случайного числа в j-й элемент MsgBox "A(" & j & ") = " & A(j) ' Отображение значения j-ого элемента массива Next j ' Переход к следующему значению переменной-счетчика End Sub
Помимо одномерных используются многомерные массивы, например объявление двумерного массива имеет следующий синтаксис: Dim <идентификатор> (размерность 1, размерность 2) As <тип> Пример использования двумерного массива: Sub primer6() Dim A(2, 2) As Integer ' Объявление двумерного массива 3×3 Dim i As Integer, j As Integer ' Объявление переменных циклов For i = 0 To 2 Step 1 ' Задание внешнего цикла по переменной i For j = 0 To 2 Step 1 ' Задание вложенного цикла по j A(i, j) = (i + 1) * (j + 1) ' Запись вычисленного значения в элемент двумерного массива Next j ' Переход к следующему значению переменной вложенного цикла Next i ' Переход к следующему значению переменной внешнего цикла End Sub Программа заполняет двухмерный массив по следующей схеме:
Пример Дана произвольной длины последовательность целых чисел. Составить алгоритм и написать программу для нахождения наименьшего из чисел последовательности, делящихся нацело на 3 или на 7, и номера этого числа в последовательности. Количество чисел последовательности и сами числа задаются пользователем после запуска программы. Предусмотреть контроль значений, вводимых пользователем. Числа, вводимые пользователем, хранить в массиве.
|