Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

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 Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...