Dim dynarray1. Redim Preserve dynarray2 (ubound(dynarray)+1). Ценное замечание. 6. 3 демонстрационные Примеры. Далее в программе, где это необходимо, с помощью оператора redimуказывают размерность массива
Dim DynArray1 где 1) Dim – служебное слово 2) DynArray – имя переменной массива То есть, массивом может стать любая объявленная переменная Далее в программе, где это необходимо, с помощью оператора ReDim указывают размерность массива. Например: ReDim DynArray1 (5) ' для вектора или ReDim DynArray1 (3, 4) ' для матрицы или ReDim DynArray1 (2, 4, 7) ' трёхмерного массива При каждом выполнении оператора ReDim значения всех элементов массива, сохранённые ранее, теряются. VBScript переустанавливает их в Empty (пустое значение) (для Variant-массивов), в нулевые значения (для числовых массивов), в строки нулевой длины (для строковых массивов). Конечно, это, скорее всего, неудобно. Если вам нужно добавить к массиву новый элемент в конец массива, то есть увеличить размер массива, то нет смысла терять при этом, может быть, «с трудом полученные» ранее элементы. “К счастью”, с помощью ключевого слова Preserve в операторе ReDim можно указать, чтобы система сохранила значения массива, размеры которого изменяются. В следующем примере размер вектора увеличивается на единицу от текущего размера с сохранением значений, ранее запомненных в массиве. Текущий размер массива определяется с помощью функции UBound (подробнее о ней будет рассказано ниже): ReDim Preserve DynArray2 (UBound(DynArray)+1) VBScript имеет функцию, которая освобождают пользователя от необходимости вручную отслеживать верхний предел массива – функция UBound. Эта функция возвращают верхнее граничное значение индекса массива. Пример использования: Dim A (3, 4) ' объявление матрицы А MsgBox UBound (A, 1) ' вывод на экран максимального индекса в строке MsgBox UBound (A, 2) ' вывод на экран максимального индекса в столбце
Ценное замечание Для того чтобы определить является ли переменная массивом можно использовать функцию IsArray(ArrName), возвращающую «Истина», тогда и только тогда когда ArrName – массив. 6. 3 ДЕМОНСТРАЦИОННЫЕ ПРИМЕРЫ Пример 1 'Имя файла Input_Output_1. vbs 'Программа содержит процедуру ввода и процедуру вывода одномерного 'массива (вектора)
Option Explicit Dim A(4) ' объявление одномерного массива А Const k=4 ' k-индекс последнего элемента в векторе '------------------------------------------------------------------------------- Sub Input (A) ' процедура ввода элементов вектора с клавиатуры ' процедура с параметрами ' A-параметр, передаваемый по ссылке ' k-глобальная константа Dim i ' параметр цикла For i=0 to k A(i)=CDbl(InputBox(" Введите " & i& " -й элемент одномерного массива", _ " Ввод вектора A: ", 5)) Next End Sub '------------------------------------------------------------------------------- Sub Output (A) ' процедура вывода на экран элементов вектора ' процедура с параметрами ' A-параметр, передаваемый по ссылке ' k-глобальная константа Dim i ' параметр цикла Dim s ' строковая переменная, в которой будет сохранён массив For i=0 to k s=s+CStr(A(i))+" " Next MsgBox " Вы ввели одномерный массив: " & vbCrLf& _ s, _ vbExclamation, _ " Вывод вектора A: " End Sub '------------------------------------------------------------------------------- Input A ' вызов процедуры ввода элементов массива Output A ' вызов процедуры вывода элементов массива Пример 2 'Имя файла Input_Output_2. vbs 'Программа содержит процедуру ввода и процедуру вывода двумерного 'массива (матрицы) Option Explicit Dim A(4, 5) ' объявление двумерного массива А Const m=4 ' m, n -индексы последнего элемента матрицы Const n=5 '------------------------------------------------------------------------------- Sub Input (A) ' процедура ввода элементов матрицы с клавиатуры ' процедура с параметрами ' A-параметр, передаваемый по ссылке
' m, n -глобальные константы Dim i, j For i=0 to m For j=0 to n A(i, j)=CDbl(InputBox(" Введите элемент A(" & i& ", " & j& " )", _ " Ввод матрицы A: ", 5)) Next Next End Sub '------------------------------------------------------------------------------- Sub Output (A) ' процедура вывода на экран элементов матрицы ' процедура с параметрами ' A-параметр, передаваемый по ссылке ' m, n -глобальные константы Dim i, j Dim s ' строковая переменная, в которой будет сохранён массив For i=0 to m For j=0 to n s=s+CStr(A(i, j))+" " Next s=s& vbCrLf Next MsgBox " Вы ввели двухмерный массив: " & vbCrLf& _ s, _ vbExclamation, _ " Вывод матрицы A: " End Sub '------------------------------------------------------------------------------- Input A ' вызов процедуры ввода элементов массива Output A ' вызов процедуры вывода элементов массива Пример 3 ' Имя файла Min_Max. vbs ' Программа находит минимальный и максимальный элемент вектора Option Explicit Dim s, i Dim A(4) ' объявление одномерного массива А Const k=4 ' k-индекс последнего элемента в векторе '------------------------------------------------------------------------------- Sub Input_Rnd (A) ' процедура заполнения одномерного массива целыми ' числами от 0 до 20, выбранными случайным образом Dim i For i=0 to k Randomize A(i)=Fix(Rnd(1)*20) Next End Sub '------------------------------------------------------------------------------- Function Min (A) Dim i Min=A(0) For i=1 to k If A(i)< Min Then Min=A(i) End If Next End Function '------------------------------------------------------------------------------- Function Max (A) Dim i Max=A(0) For i=1 to k If A(i)> Max Then Max=A(i) End If Next End Function '------------------------------------------------------------------------------- Input_Rnd A ' вызов процедуры ввода элементов массива ' Вывод введённого вектора: For i=0 to k s=s+CStr(A(i))+" " Next MsgBox " Вектор, полученный случайным образом: " & vbCrLf& _ s& vbCrLf& _ " Минимальный элемент данного вектора: " & Min (A)& vbCrLf& _ " Максимальный элемент данного вектора: " & Max (A)& vbCrLf, _ vbExclamation, _ " Результат: "
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|