Студопедия

КАТЕГОРИИ:


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

Dim NameArray1 (N, M)




Next

Next

Перебор элементов массива

Для перебора всех элементов массива (коллекции), например при выводе на экран, очень полезен специальный тип цикл:

For each VarName in ArrName

где:

ArrName – массив для перебора

VarName – некоторая переменная, куда будут попадать по очереди элементы массива ArrName

Например: (печать всех элементов массива на экран)

For each incl in Arr1

Msgbox incl

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

Таблица 11– Двухмерный массив

  0-й столбец 1-й столбец 2-й столбец 3-й столбец 4-й столбец
0-ая строка 11.2       5.05
1-ая строка          
2-ая строка     12.09   9.14
3-ая строка 11.01   22.9    

Размерность матрицы – <это количество строк> на <количество столбцов> матрицы. В данном примере размерность матрицы 4 на 5. Если размерность матрицы N на N, то такая матрица называется квадратной. Главная диагональ квадратной матрицы – последовательность элементов, находящихся на воображаемой линии, соединяющей левый верхний и правый нижний углы квадратной матрицы. Побочная диагональ квадратной матрицы – последовательность элементов, находящихся на воображаемой линии, соединяющей правый верхний и левый нижний углы квадратной матрицы.

Объявление двумерного массива имеет вид:

где: 1) Dim - служебное слово;

2) NameArray1 - имя массива;

3) N, M - индексы последнего элемента в данном массиве

Для доступа к данным, хранящимся в определённом элементе двумерного массива, следует указать имя массива с последующими числами, называемыми индексами элемента. Местоположение каждого элемента в матрице характеризуется двумя индексами. Первый индекс обозначает номер строки, в которой находится элемент, второй – номер столбца. Нумерация начинается с нуля. Индекс всегда заключается в круглые скобки. Например, если матрица имеет имя Mat1, то следующий оператор присваивает переменной x значение i-го элемента матрицы Mat1:

x= Mat1(i,j), где i, j – индексы нужного элемента двумерного массива Mat1

Пусть данные, хранящиеся в Таблице 1, символизируют матрицу Mat1. Тогда элемент матрицы Mat1(2,3) равен числу 11.

Пример:

Задача:


Расположить в памяти компьютера двухмерный массив:

12.1   5.1    
    12.1    
         
         

Программа:

Dim A (3, 4)

A(0,0)= 1: A(0,1)= 1: A(0,2)= 1: A(0,3)= 1: A(0,4)= 1

A(1,0)= 1: A(1,1)= 1: A(1,2)= 1: A(1,3)= 1: A(1,4)= 1

A(2,0)= 1: A(2,1)= 1: A(2,2)= 1: A(2,3)= 1: A(2,4)= 1

A(3,0)= 1: A(3,1)= 1: A(3,2)= 1: A(3,3)= 1: A(3,4)= 1

В VBScript можно работать не только с одномерными и двумерными, но и n-мерными массивами (n<60). Какова величина n, столько индексов и используется для определения местоположения элемента в массиве. Работа с массивами, имеющими 4 или более измерений, быстро становится запутанной. Но чаще всего в программировании используют одно-, двух- и трёхмерные массивы.

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

Рассмотрим массив Mas2:

       
       
       

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

Объявление массива массивов Mas2 производится следующим образом:

 

dim Mas2 (2) ' объявление одномерного массива

' 0-му элементу одномерного массива присваивается одномерный массив, состоящий из

' элементов: 1, 2, 3, 4

Mas2 (0)=Array(1, 2, 3, 4)

' 1-му элементу одномерного массива присваивается одномерный массив, состоящий из

' элементов: 5, 6, 7, 8

 

Mas2 (1)=Array(5, 6, 7, 8)

' 2-му элементу одномерного массива присваивается одномерный массив, состоящий из

' элементов: 9, 10, 11, 12

Mas2 (2)=Array(9, 10, 11, 12)

 

Пусть дан трёхмерный массив Mas3 (2, 2, 3), заполненный единицами. Данный массив мы также можем представить как массив массивов:

dim Mas3 (2, 2, 3)

Mas2 (0)=Array (Array(1, 1, 1, 1), Array(1, 1, 1, 1), Array(1, 1, 1, 1))

Mas2 (1)=Array (Array(1, 1, 1, 1), Array(1, 1, 1, 1), Array(1, 1, 1, 1))

Mas2 (2)=Array (Array(1, 1, 1, 1), Array(1, 1, 1, 1), Array(1, 1, 1, 1))

Точно так же любой многомерный массив мы можем представить как массив массивов.

Для доступа к данным, хранящимся в определённом элементе массива массивов, следует указать имя массива с последующими числами, называемыми индексами элемента, причём каждый индекс должен быть в круглых скобках:

x=Mas4 (2)(3)

До настоящего времени, все многомерные массивы, рассмотренные нами, имели одинаковое число элементов в каждой строке и одинаковое количество элементов в каждом столбце. То есть (если говорить о двумерных или трехмерных массивах) все матрицы имели прямоугольный вид, а трёхмерные массивы напоминали параллелепипед. Однако следует упомянуть о том, что существуют и “неровные” (нерегулярные) массивы. Нерегулярная матрица имеет, например, следующий вид:

2 3

4 5 6

7 8 9 10

Использование нерегулярных многомерных массивов не рекомендуется, однако иногда они бывают весьма полезны. Например, если нужно обработать очень большой двухмерный массив, который редко заполнен (то есть в котором многие элементы содержат нулевые значения), то нерегулярный массив мог бы быть подходящим решением проблемы.

Объявлять нерегулярную матрицу удобно с использованием массива массивов. Объявим вышеописанную нерегулярную матрицу:

Dim NeRegMat (3)

NeRegMat (0)=Array (1)

NeRegMat (1)=Array (2, 3)

NeRegMat (2)=Array (4, 5, 6)

NeRegMat (3)=Array (7, 8, 9, 10)

Не всегда разработчику программ заранее известен размер массива. В одних случаях это зависит от информации, вводимой пользователем в диалоге, в других - от количества записей в одной из многих разновидностей файлов, в третьих - от результатов некоторых вычислений и т.д. Так или иначе, это довольно частое явление. В VBScript имеется возможность работать с массивами, размеры которых не фиксированы объявлением. Такие массивы называют динамическими или массивами переменной размерности. Динамические массивы получили свое название, потому что можно изменять число элементов в массиве при выполнении программы. Динамический массив (в сочетании с «правильным» программированием) может увеличиваться или сжи­маться (уменьшаться в размере), чтобы вмещать точно необходимое число элемен­тов без напрасного расходования памяти. Для изменения размера динамического массива используйте оператор ReDim, описываемый далее.

Объявление динамического массива имеет следующий вид:




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


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


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



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




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