Шаг 62.
Переменные, массивы и константы

    На этом шаге речь пойдет правилах задания переменных, массивов, констант.

    В примере предыдущего раздела мы уже использовали переменные. Напомним, что переменные используются для хранения данных приложения. Прежде чем переменную можно будет использовать, ее необходимо объявить. Это можно осуществить двумя способами:

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

    Иногда возникает необходимость хранить данные в массивах, обращаясь к ним с помощью индекса. VBScript поддерживает одномерные и многомерные массивы двух типов:

    Любой тип массива определяется оператором Dim. Отличие от объявления переменной заключается в том, что после имени массива в круглых скобках указывается его размерность.

    Синтаксис задания массива следующий:


Dim имя_массива([индексы])

    Параметром «индексы» задается число размерностей массива и протяженность каждой размерности.

    Если этот параметр представляет одно целое число, то он задает одномерный массив, содержащий число элементов на единицу больше значения параметра. Это связано с тем, что первый элемент массива имеет индекс нуль. Например, следующий оператор Dim M(9) задает массив, состоящий из 10 элементов: первый элемент — М(0), второй — М(1) и т.д.

    Если параметр индексы задан в виде последовательности целых чисел, разделенных запятыми, то оператор Dim задает многомерный массив. Количество чисел в списке определяет число размерностей массива, а значение каждого индекса равно количеству элементов массива, соответствующей этой размерности плюс единица. Следующий оператор задает двумерный массив или таблицу из 10 строк и 4 столбцов: Dim В(9,3).

    Для получения значения элемента массива следует указать имя массива и индексы элемента. Например, чтобы получить значение элемента, находящегося на пересечении второй строки и третьего столбца массива B, следует использовать запись B(1,2).

    Если параметр «индексы» задан, то массив в этом случае будет называться статическим, т.е. это массив, количество элементов и размерности которого известны и не могут быть изменены в процессе выполнения приложения.

    Если при задании массива отсутствует параметр «индексы», то такая конструкция определяет динамический массив, размерность и протяженность каждой размерности которого могут меняться в процессе выполнения программы.

    Для задания числа размерностей и их протяженности применяется оператор ReDim, синтаксис которого аналогичен синтаксису оператора Dim при задании статических массивов:


Dim Array() 
.   .   .   .   .   .
ReDim Array(3)

В этом фрагменте оператор Dim задает динамический массив Array, а в операторе ReDim назначается его размерность.

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

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


Dim Array ()
.   .   .   .   .   .
ReDim Array(3)
.   .   .   .   .   .
ReDim Preserve Array [Ubound (Array) +1)

    В этом фрагменте используется функция Ubound для определения верхней границы изменения индекса массива Array, затем его протяженность увеличивается на единицу с сохранением предыдущих значений элементов.

    Проиллюстрируем сказанное следующим примером.


<HTML>
<HEAD>
<TITLE>Динамические массивы.</TITLE>
<SCRIPT TYPE="text/vbscript"  LANGUAGE=VBScript>
<!--
Sub Button1_OnClick()
  Dim A() 'Описываем динамический массив.
  'Задаем начальную размерность массива
  '(по умолчанию 3).
  Y=CInt(Prompt("Задайте размерность _
          массива","3"))
  ReDim A(Y) 'Изменяем размерность массива.
  B = "Массив: "
  'Заполняем массив в цикле случайными 
  'целыми числами от 0 до 9.
  For I=0 To Y-1
    A(I) = Round(Rnd()*10)
    B = B & CStr(A(I)) & " "
  Next 
  alert B 'Выводим массив на экран.
  'Задаем новую размерность, большую, 
  'чем предыдущая.
  Y1=CInt(Prompt("Задайте размерность массива_ 
     больше, чем "&Y,CStr(Y+1)))
  'Устанавливаем новую размерность с сохранением
  '"старых" значений элементов массива. 
  ReDim Preserve A(Y1)
  'Дополняем массив.
  For I=Y To Y1-1
     A(I) = Round(Rnd()*10)
  Next 
  B = "Массив: " 'Вывод нового массива.
  For I=0 To Y1-1
    B = B & CStr(A(I)) & " "
  Next 
  alert B
End Sub
'-->
</SCRIPT>
</HEAD>
<BODY>
<H2> Пример использования динамического массива.</H2>
<FORM>
<INPUT TYPE=BUTTON VALUE="Нажмите кнопку!" NAME=BUTTON1
</FORM>
</BODY>
</HTML>

Текст этой программы можно взять здесь.

    Иногда в программе необходимо задавать переменные, значения которых нельзя изменять. Такие переменные называются именованными константами. В VBScript для задания констант существует оператор Const, имеющий следующий синтаксис:


Const имя_константы = значение

    Параметр «значение» представляет собой любой допустимый литерал. Например, следующий фрагмент кода определяет несколько констант разных подтипов:


Const conName = "Александр"    ‘Строковая константа.
Const conPi = 3.1416 ‘Числовая константа.
Const conBirthDay = #l-6-53#   ‘Константа даты

   


    Замечание. Чтобы отличать в программе константы от переменных, следует выбрать схему именования констант и придерживаться ее на протяжении разработки всех сценариев. Например, можно использовать для всех констант префикс con.

    На следующем шаге мы перечислим основные операторы языка VBScript.




Предыдущий шаг Содержание Следующий шаг