Лабораторная работа 6. массивы
ЛАБОРАТОРНАЯ РАБОТА 6. МАССИВЫ 6. 1 ЦЕЛЬ РАБОТЫ Познакомиться с понятиями " массивы", закрепить практические навыки работы с одномерными и многомерными массивами 6. 2 ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ Массив - это упорядоченный набор элементов. Массивы можно создавать из элементов любого типа (в отличие от многих других императивных языков программирования), и они могут иметь одно или несколько измерений. Одномерный массив принято называть вектором, а двухмерный - матрицей. Одномерный массив - это последовательность элементов любых типов. Каждому элементу массива соответствует индекс - целое неотрицательное число, определяющее его номер в последовательности. Первому элементу массива соответствует индекс 0. Во многих языках программирования элементы массива размещаются в памяти последовательно (другими словами, друг за другом).
Таблица 10 – Одномерный массив
Данные, хранящиеся в таблице 10 олицетворяют собой одномерный массив, состоящий из 8-ми элементов. Объявление одномерного массива имеет вид: Dim NameArray1 (N) где: 1) Dim - служебное слово (объявление переменной); 2) NameArray1 - имя переменной массива; 3) N – индекс последнего элемента в данном массиве Зная все элементы одномерного массива, то его можно объявить и другим образом: NameArray2=Array (Num1, Num2, …, NumN) где: 1) NameArray2 - имя массива; 2) Array – название функции языка VBS; 3) Num1 – 0-й элемент одномерного массива Num2 – 1-й элемент одномерного массива … NumN – N-й элемент одномерного массива
Для доступа к данным, хранящимся в определённом элементе одномерного массива, следует указать имя массива и индекс элемента массива. Индекс всегда заключается в круглые скобки. Например, если вектор имеет имя Arr, то следующий оператор присваивает переменной x значение i-го элемента вектора Arr: x=Arr(i), где i – индекс нужного элемента одномерного массива Arr Пример: Задача: расположить в памяти компьютера одномерный массив, состоящий из 7-ми элементов, каждый из которых соответствует соответственно дню недели: “Понедельник”, “Вторник”, “Среда”, “Четверг”, “Пятница”, “Суббота”, “Воскресенье” Программа:
Замечание : Нумерация элементов в массиве (не только одномерном, но и в многомерном) начинается с 0, поэтому не стоит забывать, что i-тый элемент массива на самом деле по счёту является (i+1)-ым. Примечание: Для получения имен дней недели лучше использовать функцию WeekDayName(i), которая возвращает название дня недели в соответствии с целочисленным параметром i. См. пример: 1Weekdays. vbs. Например: WeekDayName(1)=Воскресенье Перебор элементов массива Для перебора всех элементов массива (коллекции), например при выводе на экран, очень полезен специальный тип цикл: For each VarName in ArrName … next где: ArrName – массив для перебора VarName – некоторая переменная, куда будут попадать по очереди элементы массива ArrName Например: (печать всех элементов массива на экран) For each incl in Arr1 Msgbox incl next Одномерные массивы хорошо подходят для представления простых списков данных. Однако часто бывает необходимо представить таблицы данных в программах с организацией данных в формате строк и столбцов, подобно ячейкам в таблицах. Для этого существуют двумерные массивы или матрицы. Двухмерный массив можно представить как таблицу:
Таблица 11– Двухмерный массив
Размерность матрицы – < это количество строк> на < количество столбцов> матрицы. В данном примере размерность матрицы 4 на 5. Если размерность матрицы N на N, то такая матрица называется квадратной. Главная диагональ квадратной матрицы – последовательность элементов, находящихся на воображаемой линии, соединяющей левый верхний и правый нижний углы квадратной матрицы. Побочная диагональ квадратной матрицы – последовательность элементов, находящихся на воображаемой линии, соединяющей правый верхний и левый нижний углы квадратной матрицы. Объявление двумерного массива имеет вид: Dim NameArray1 (N, M) где: 1) Dim - служебное слово; 2) NameArray1 - имя массива; 3) N, M - индексы последнего элемента в данном массиве Для доступа к данным, хранящимся в определённом элементе двумерного массива, следует указать имя массива с последующими числами, называемыми индексами элемента. Местоположение каждого элемента в матрице характеризуется двумя индексами. Первый индекс обозначает номер строки, в которой находится элемент, второй – номер столбца. Нумерация начинается с нуля. Индекс всегда заключается в круглые скобки. Например, если матрица имеет имя Mat1, то следующий оператор присваивает переменной x значение i-го элемента матрицы Mat1: x= Mat1(i, j), где i, j – индексы нужного элемента двумерного массива Mat1 Пусть данные, хранящиеся в Таблице 1, символизируют матрицу Mat1. Тогда элемент матрицы Mat1(2, 3) равен числу 11. Пример: Задача: Расположить в памяти компьютера двухмерный массив:
Программа: 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 , описываемый далее. Объявление динамического массива имеет следующий вид:
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|