VISUAL BASIC: ОБРАБОТКА МАССИВОВ
Цель и содержание работы: изучениепринципов работы с массивами,создание приложений и отладка программ для задач с одномерными массивами.
Теоретическое обоснование
Массив – поименованный структурированный тип данных, состоящий из фиксированного числа элементов одного типа, которым присвоено общее имя.
Массивы характеризуются: именем, размерностью и типом данных, которые хранятся в данном массиве. Элементами массива могут быть целые числа, вещественные числа, а также символы.
Имя массива – уникальный набор символов, которые входят в алфавит языка программирования. Размерность массива – максимально допустимое число элементов массива.
Положение элемента массива среди остальных задается значением индекса. В зависимости от количества индексов массивы бывают одномерными (один индекс), двумерными (два индекса) и т. д.
Например, А(40) – одномерный массив целых чисел под именем А размерностью 40.
В Visual Basic существуют массивы фиксированного размера и динамические массивы. Массив фиксированного размера имеет неизменный размер, заданный при его объявлении. Динамические массивы могут изменять размер в процессе выполнения.
|
|
Объявление массива фиксированного размера зависит от области его видимости и осуществляется следующим образом:
- глобальный массив объявляется с помощью оператора public в секции Declaration модуля;
- массив уровня модуля – с помощью оператора private в секции Declaration модуля;
- локальный массив – с помощью оператора private процедуры.
При объявлении массива после его имени в круглых скобках указывается верхняя граница массива. По умолчанию нижней границей массива является 0. Например:
Dim intMas (20) As Integer
Задает массив из 21 элемента, индекс элементов массива изменяется от 0 по 20 включительно. Для создания глобального массива такого же размера:
Public intCountPar (20) As Integer
Можно явно задать нижнюю границу массива, используя ключевое слово То:
Dim intCountPar (1 To 20) As Integer
В этом случае задается массив из 20 элементов. Индекс элементов массива изменяется от 1 до 20.
Visual Basic позволяет использовать многомерные массивы. Например, в следующем коде объявляется двумерный массив размерностью 21х21:
Dim intCountPar (20, 20) As Integer
Для начала работы с массивом необходимо элементам массива присвоить определенные значения. Заполнить массив можно разными способами.
Пример 1. Заполнить с помощью функции InputBox числовой массив из 30 элементов произвольными числами и распечатать элементы этого массива на форме.
Dim sngA(1 To 30) As Single, I As Byte
Sub Command1_Click()
For I=1 To 30
sngA(I)= val(InputBox(“Введите число”,”Заполнение массива”))
Print ”sngA(”; I; ”)=”; sngA(I) ‘Печать элементов массива
|
|
Next I
End Sub
Пример 2. Заполнить с использованием оператора присваивания числовой массив bytA(I) целыми случайными числами в интервале от 1 до 100, используя функцию случайных чисел Rnd и функцию выделения целой части числа Int в цикле со счетчиком.
Dim bytA (1 To 100), I As Byte
Sub Command1_Click()
For I=1 To 100
bytA(I)=Int(Rnd*100)
Next I
End Sub
Методика и порядок выполнения работы
1. Изучите теоретическое обоснование.
2. Выполните пример 1 и 2.
3. Выполните пример 3. Найти наибольший элемент массива Х(x 1, x 2,…, x 10) и его порядковый номер.
4. Алгоритм решения задачи представлен на рисунке 1. Здесь нет необходимости вычислять сравниваемые значения, так как они имеются в массиве Х. Поэтому в качестве начального значения принимается первые элемент массива. Поскольку сравнение первого элемента массива с собой не имеет смысла, цикл выполняется, начиная со второго элемента.
Схема алгоритма решения представлена на рисунке 1. Блок 3 перед циклом задает начальные значения х max= х 1 и n max=1. В цикле блоки 6 и 7 реализуют условие из блока 4, блок 7 определяет номер наибольшего элемента массива, а блок 6 – его значение.
5. Запустите среду Visual Basic для ввода и выполнения программного кода. С помощью стандартного набора инструментов Toolbox создайте экранную форму с командной кнопкой «Поиск наибольшего элемента массива».
6. Создайте программный код.
Private Sub Command1_Click()
Dim x (1 To 10), I As Integer
Dim xmax, nmax As Integer
Randomize
For I = 1 To 10
x(I) = Int(Rnd * 100)
Print x(I)
Next I
nmax = 1
xmax = x(1)
For I = 2 To 10
If xmax < x(I) Then xmax = x(I): nmax = I
Next I
MsgBox xmax,, "Максимальный элемент в массиве="
MsgBox nmax,, "Номер максимального элемент в массиве="
End Sub