- •Visual Basic for Applications
- •1. Основы языка программирования Visual Basic 5
- •1. Основы языка программированияVisualBasic
- •1.1. Общие сведения оVisualBasic
- •1.2. Среда vb, инструментальные средства. Разработка проектов
- •1.3. Типы данных. Константы и переменные
- •1.4. Операции
- •1.5. Ввод и вывод данных
- •1.6. Управляющие операторы
- •1.7. Массивы
- •1.8. Примеры программ работы с числами
- •1.9. Обработка строк. Примеры
- •1.10. Математические вычисления. Другие операторы и функции
- •1.11. Процедуры и функции. Примеры
- •1.12. Работа с файлами
- •2. ОсновыVba
- •3. Практические задания
- •3.1. Практическое задание №1. Знакомство сVba
- •3.2. Практическое задание №2. Линейное программирование
- •3.3. Практическое занятие №3. Программирование ветвлений
- •3.4. Практическая работа №4. Программирование повторений
- •3.5. Практическая работа №5. Работа с массивами
- •3.6. Практическая работа №6. Процедуры и функции
- •3.7. Практическое занятие №7. Файлы. Последовательный доступ
- •3.8. Практическое занятие №8. Файлы с произвольным доступом
- •Задания самостоятельной работы
- •4.1. Линейное программирование
- •4.2. Программирование ветвлений
- •4.3 Программирования циклов
- •4.4. Массивы
- •4.5. Файлы
- •5. Задания для контрольной работы
- •5.1. Для студентов очной формы обучения
- •5.1.1. Линейное программирование
- •5.1.2. Программирование ветвлений
- •5.1.3. Программирование циклов
- •5.1.4. Массивы
- •5.2. Для студентов заочной формы обучения
- •Список литературы
1.7. Массивы
Массив – это совокупность нескольких переменных одного типа, которые могут принимать одинаковые или различные значения. Различают статические и динамические массивы. Границы статических массивов устанавливаются на этапе разработки и могут изменяться только в новой версии программы. Динамические массивы изменяют свои границы в ходе выполнения программы.
Статические массивы нельзя объявить локально внутри процедуры, а только глобально или для контейнера (Form, Module, Class).
В общем случае индексирование элементов начинается с нуля, однако, использование оператора Option Base 1 позволяет установить индексацию с 1. Данный оператор указывается в секции (General)(Declarations) контейнера. Границы индексации можно установить в опции РАЗМЕРНОСТЬ (см. ниже).
Шаблон объявления массивов:
Static | Public | Dim [Shared] ПЕРЕМЕННАЯ [РАЗМЕРНОСТЬ]
где РАЗМЕРНОСТЬ – указывает диапазон изменения индекса массива, такой индекс является переменной величиной и используется для указания конкретного элемента массива; РАЗМЕРНОСТЬ имеет следующий вид m To n, где m – начальное значение индекса, n – конечное значение индекса; если при обработке массива значение индекса выходит из указанного в объявлении диапазона, выдается сообщение об ошибке. В данном параметре можно через запятую указать диапазон изменения для нескольких индексов (многомерные массивы). Примеры:
Dim a$(1To 20) – массив из 20-ти строковых элементов: а$(1) – 1-й элемент, a$(2) – 2-й элемент и т. д;
Dim p%(5 To 10) – массив из 6-ти целых элементов: p%(5) – 1-й элемент, р%(6) – 2-й элемент и т.д.;
Dim x(10) As Single – массив из 11вещественных чисел х(0) – й элемент, х(1) – 2-й элемент, …, х(10) – 11-й элемент.
Если определить переменную-индекс как Dim i As Integer, то можно обратиться к любому элементу массива (предварительно задавая конкретное значение для i), например х(i) – это i-й элемент массива х. С учетом вышесделанного определения этого массива x(n) индекс i может изменяться в диапазоне от 1 до n и при i = 1 ‘это будет 1-й элемент массива.
Массив, объявленный как Variant может содержать другие массивы различных типов данных, например:
Dim c(5) As Integer
Dim s(5) As String
Dim X(2) As Variant
c( ) =... 'заполнение данными первых двух массивов
s( ) =…
X(1) = c() 'заполнение массива X другими массивами
X(2) = s()
Массивы могут быть многомерными: например, двумерный массив Dim m(5, 10).
Массивы могут быть динамическими, т. е. их размеры могут меняться в любое время. Для создания динамического массива надо: 1) объявить массив оператором Public или Dim, или Static с пустой размерностью в секции (General)(Declarations) контейнера, например Dim D() As Variant; 2) оператором ReDim распределить фактическое количество элементов ReDim D(100) [As ТИП]; этот оператор может появляться только в процедурах; он может изменять нижний и верхний пределы размерностей, но не изменяет количества размерностей.
Для изменения размерности без потери содержимого используется ReDim Preserve, но в многомерных массивах это допускается только для последнего измерения, а при наличии верхней и нижней границы – только для верхней.
Начиная с Visual Basic 6.0, можно присвоить содержимое одного массива В другому С так же как для обычных переменных: С = В. При следует учитывать, что могут появиться ошибки из-за несоответствия типов, размерности или количества измерений статических массивов. В то же время для динамических массивов указанная операция, как правило, проходит успешно.
Пределы динамического массива могут также устанавливаться с помощью переменных ReDim B(X,Y).