Студопедия

КАТЕГОРИИ:


Архитектура-(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)

Массивы




Многие задачи, которые решаются с помощью компьютера, связаны с обработкой больших объемов информации, представляющей совокупность данных, объединенных единым математическим содержанием или связанных между собой по смыслу. Такие данные удобно представлять в виде линейных или прямоугольных таблиц.

В линейной таблице каждому ее элементу соответствует порядковый номер. Для элемента прямоугольной таблицы должны быть указаны два номера: номер по вертикали (номер строки) и номер по горизонтали (номер столбца).

В высшей математике табличные величины называют соответственно векторами и матрицами.

В программе для представления таких данных используются массивы. Массив – совокупность однотипных данных, с каждым из которых связан упорядоченный набор целых чисел, называемых индексами. Это структурированный тип данных, состоящий из фиксированного числа элементов, имеющих один и тот же тип. Например, в программе можно описывать и обрабатывать массивы целых и вещественных чисел, логических и символьных значений. Различают статические массивы и динамические массивы. Длина статического массива объявляется в разделе описаний, а длина динамического массиване объявляется заранее, а определяется в программе. Массив характеризуется именем, размерностью и размером.

Имя массива образуется по общему правилу образования имен, т. е. представляет собой идентификатор, например A, Bl, C8 и т. д. Однако оно не должно совпадать с именем ни одной простой переменной, используемой в той же программе.

Работа с массивом сводится к действиям над его элементами. Для того чтобы указать, какой элемент в данный момент используется, достаточно задать его порядковый номер, который приписывается к имени соответствующего массива. Таким образом, элементы массива обозначаются переменной с индексами. Запись переменной с индексами состоит из имени массива и следующего за ним в круглых скобках списка индексов, например, А(1), A(i), B1(k),
C8(i,j), С8(2,1).

Индексы определяют положение элемента в массиве. Число индексов определяет размерность массива, т.е. форму его компоновки: одномерный, двумерный и т. д. Одномерный массив соответствует линейной таблице. Его элемент обозначается переменной с одним индексом: A(l), A(i) – соответственно первый и i -й элементы одномерного массива А;

Двумерный массив описывает в программе прямоугольную таблицу. Его элементы обозначаются переменной с двумя индексами: C8(i, j), С8(2,1), где первый индекс обозначает номер строки, а второй – номер столбца.

Таким образом, для обращения к конкретному элементу массива необходимо указать имя массива и значения индексов.

Для записи элементов массива в память компьютера нужно выделить для их хранения необходимое количество (массив) ячеек памяти, которое определяется размером массива. Размеры массива задаются границами изменения индексов по каждому измерению (минимальное и максимальное значение индекса).

По умолчанию применяется так называемая нумерация с нулевой базой, т.е. элементы массива нумеруются, начиная с 0.

В программе для каждого массива должны быть указаны его параметры: имя, размерность и размеры. Эта информация нужна для резервирования необходимого объема памяти для хранения числовых значений; она задается специальным оператором описания массивов.

Описание статического массива определяет имя, размер массива и тип данных, которые в нем хранятся. Формат описания массива в разделе переменных:

Dim Имя_массива ([Тип_индекса]) [ As Тип_данных]

Чаще всего в качестве типа индекса используется интервальный целый тип (тип-диапазон). Интервальный тип задается начальным и конечным значениями, которые разделяются словом To.

Например,

Dim A (1 To 10)) As Integer

Описывается одномерный массив вещественных чисел A,состоящий 10 элементов. Нижняя граница индекса равна 1, верхняя – 10.

Если нижний индекс при описании массива не указан, то он принимается равным нулю:

Dim A (10) As Integer

Описывается одномерный массив вещественных чисел A состоящий 11 элементов. Нижняя граница индекса равна 0, верхняя – 10.

Можно объявлять массивы, используя ключевые слова Public, Private и Static – точно так же, как для любой другой переменной и с тем же влиянием на область действия:

Примеры объявления массивов:

Dim s(1 To 100) As String

Private A (1 To N,1 To M) As Double

Dim st(0 To 15, 0 To 15) As String

Static Matr_2(1 To 3, 1 To 4) As Real

Dim V (1 To 3, 1 To 10,1 To 15)

Элементы массива можно использовать в любом выражении точно также как значение константы или переменную.

Например: a(0)=11.2

a(1)=10.2

x(i,j)=f

y(i)= (a(0)*2 – a(1))/x(i,j).

Для обработки массивов обычно используются циклы с параметром For … Next. Для двумерных массивов их должно быть два: один вложен в другой.

Оператор Option Base

Начальный индекс при описании массива можно задать используя, оператор Option Base. Синтаксис этого оператора:

Option Base 0 ô 1.

Оператор Option Base помещается в область объявлений перед объявлением любых переменных, констант или процедур. В программе можно написать только один оператор Option Base, он будет влиять на описание всех массивов, объявляемых в программе, независимо от того, являются они локальными в процедуре или объявлены глобально.

При использовании оператора Option Base нижний диапазон в операторе Dim не указывается:

Динамические массивы

Динамические массивы отличаются от обычных статических тем, что для них не объявляется заранее длина массива. Объявление такого массива содержит только имя и тип элементов.

Dim Имя_массива() As Тип_данных.

Количество элементов динамического массиваможет меняться по ходу выполнения программы. При объявлении динамического массива место под него не отводится. Прежде чем использовать такой массив, надо задать в программе его размер процедурой Redim:

ReDim Имя_массива(Кол-во эл-ов по каждой размерности)

Параметры данной процедуры - количество элементов по каждой размерности. Например, Redim А(10,20) - для двумерного массива A. После этого оператора к элементам динамического массива можно обращаться также как к статическому.

Функции LBound и UBound

Для контроля за размерами массивов переменной размерности в VB есть две функции LBound и UBound, которые возвращают нижнее и верхнее граничные значения индексов соответственно:

Lbound(Имя_массива [,Номер индекса])

Ubound(Имя_массива [,Номер индекса])

Функция Lbound возвращает левую границу изменения индекса массива, Ubound возвращает верхнюю границу изменения индекса массива. Аргумент Номер индекса представляет целое число, определяющее измерение массива, для которого необходимо получить нижний или верхний предел. Если аргумент опущен, возвращается предел для первого измерения массива, например:

Фрагмент программы Результат
Dim A(3 To 9) As String For I = Lbound(A) To Ubound(A) A(I) = 0 Next I Очистка одномерного массива А
Dim a_m(1 To 365, 2000 To 2004) For i= Lbound(a_m, 1) To Ubound(a_m, 1) For j = LBound(a_m, 2) To Ubound(a_m, 2) a_m(i,j) = Rnd Next j Next i Заполнение двумерного массива a_m случайными числами

Функция Rnd

При отладке процедур на обработку массивов очень удобно использовать датчик случайных чисел Rnd для заполнения массивов.

Функция Rnd возвращает, случайное число меньшее 1 и большее или равное нулю типа Single.

Если необходимо получить целое случайное число в диапазоне [ a, b ] следует использовать формулу:

Int((b-a +1) * Rnd +a).

Перед вызовом функции необходимо написать оператор
Randomize без аргументов для инициализации генератора случайных чисел.

Оператор Erase

Оператор Erase позволяет очищать все элементы массива в случае массивов с фиксированным размером.

В случае динамических массивов оператор Erase позволяет полностью очистить массив и его содержимое из оперативной памяти.

Синтаксис оператора:

Erase a1[, a2, …],

т.е. за один раз можно очистить (удалить) несколько массивов.




Поделиться с друзьями:


Дата добавления: 2014-11-16; Просмотров: 582; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.022 сек.