Название переменной не должно быть длиннее 255 символов. Примеры названий переменных приведены в Табл. 5-1.
Табл. 5-1. Названия переменных
Правильные названия переменных
Неправильные названия переменных
MyVariable
My Variable
My_Variable
My.Variable
Var1
1Var
Самым простым способом объявления переменной является присвоение ей значения:
MyVar = 1
В этом примере переменной MyVar было присвоено значение “1”.
Если требуется объявить переменную, не задавая её значения, то используется служебное слово Dim:
Dim MyVar
В этом случае в памяти компьютера была создана «пустая» переменная.
5.4.Типы данных
Переменные в памяти компьютера хранятся различным образом, в зависимости от вида переменной. Это обусловлено тем, что под разные данные нужно выделять разное количество памяти. Например, для хранения числа “5” нужно выделить 1 байт памяти, а для числа “3.1416” – 4 байта.
“VBScript” автоматически определяет и переопределяет тип переменной в зависимости от хранящегося в ней значения, что значительно облегчает использование этого языка в написании простых приложений.
Типы данных ,используемые в “VBScript, приведены в Табл. 5-2.
3-15
ЧАСТЬ 3. Макроязык “Nova PowerScript”
Табл. 5-2. Типы данных
Тип
Диапазон
Комментарии
Byte
0 .. 255
Положительные числа в
диапазоне от 0 до 255
Boolean
True, False
Логический тип. Может
принимать только два
значения: Правда/Ложь
(True/False)
Integer
-32,768 .. 32,767
Целочисленный тип
Long
-2,147,483,648.. ..2,147,483,647
Расширенный
целочисленный тип
Single
+/- 1.401298*E-45..
Тип чисел с плавающей
.. +/- 3.402823*E38
точкой одинарной точности
Double
+/- 4.94 *E-324..
Тип чисел с плавающей
.. +/- 1.79*E308
точкой двойной точности
Currency
-922,337,203,685,477.5808..
Денежный тип
.. 922,337,203,685,477.5807
Date
January 1, 100 ..
Тип для хранения даты
.. December 31, 9999
String
0..~109 символов
Строковый тип
5.5.Средства ввода–вывода
Для вывода данных на экран используется функция MsgBox.
Чтобы вывести фразу, следует заключить её в кавычки. Когда литерал заключается в кавычки, ему автоматически присваивается тип “String” и после этого он воспринимается как последовательность символов.
Пример использования функции MsgBox приведен ниже:
MsgBox "Let’s Start Programming! "
После выполнения этой функции на экране появится окно:
3-16
Глава 5. Элементы макроязыка
Для того чтобы вывести значение переменной, следует передать эту переменную функции MsgBox:
Pi=3.14 MsgBox Pi
На экране появится сообщение:
Если в одном окне требуется вывести несколько переменных, следует использовать оператор конкатенации (сращивания) строк “&”. Если запустить следующий код:
Pi=3.14
MsgBox "Pi = "&Pi
то на экране появится сообщение:
Таким образом, в окно сообщения выводятся строка "Pi = " и значение переменной Pi.
Для ввода данных используются процедуры InputBox (одно поле ввода) и
MultyInputBox (до 10 полей ввода).
Пример окна с двумя полями ввода приведен ниже: value1=1
Чтобы в соответствующих полях ввода отобразились определенные значения по умолчанию, нужно вызвать MultiInputBox с желаемыми значениями параметров
(в примере value1=1 и value2=5).
Если эти переменные не были проинициализированы, поля ввода будут пустыми.
#ПРИМЕЧАНИЕ. Функции MsgBox, InputBox и MultyInputBox имеют большую функциональность, нежели описано выше. Для ознакомления со всеми возможностями этих функций используйте справку.
5.6.Способы структурирования кода скрипта
5.6.1.Комментарии
В написании скриптов, как и любых программ, полезно использовать комментарии. Текст комментария присутствует в тексте кода, но не учитывается при запуске скрипта. Для того чтобы создать комментарий, нужно поставить перед текстом комментария апостроф: “‘”. Интерпретатор не воспринимает текст, стоящий после апострофа до конца строки. Например:
a = 3 + 4 ‘ This is the comment
5.6.2.Перенос строки
Если требуется перенести строку кода скрипта, используется подчёркивание “_”:
MsgBox "Можно увидеть, что"&_
" эта строка кода оказалась слишком длинной"
#ПРИМЕЧАНИЕ. Размеры скриптов варьируются от нескольких строк до нескольких сотен строк кода.
3-18
Глава 5. Элементы макроязыка
5.7.Элементарные операторы
Для того, чтобы производить арифметические, логические операции, а также операции сравнения и конкатенации (сращивания), в “VBScript” используются элементарные операторы. Перечень операторов приведен в Табл. 5-3.
Табл. 5-3. Элементарные операторы
Арифметические операторы
+
Сложение
-
Вычитание
*
Умножение
/
Деление
\
Деление с отсечением дробной части (Integer)
^
Возведение в степень
mod
Остаток от деления. Если операнды – не целые числа, то
сначала они автоматически округляются
Операторы сравнения
=
Равно
<>
Не равно
>
Больше
<
Меньше
>=
Больше либо равно
<=
Меньше либо равно
Операторы
конкатенации
&
«Сращивание» строк
Логические операторы
Not
Логическое отрицание
And
Логическое «И»
Or
Логическое «ИЛИ»
XOr
Логическое «Исключающее ИЛИ»
Eqv
Логическое «Равно»
3-19
ЧАСТЬ 3. Макроязык “Nova PowerScript”
5.7.1.Условные операторы
Представим себе задачу. Имеется два числа: a и b. Нужно выбрать из них максимальное и вывести его на экран.
Логически решение задачи выглядит следующим образом: Если a>b, то вывести a.
Иначе – вывести b.
На языке “VBScript” решение задачи выглядит следующим образом:
If a>b then MsgBox a
Else
MsgBox b End If
#ПРИМЕЧАНИЕ. Как видно из примера выше, «вложенные» операторы сдвинуты относительно остальных. Структурированный таким образом текст гораздо удобнее для чтения. Сдвиг вложенных операторов в программировании считается хорошим тоном. Чем больше вложенность оператора, тем дальше он сдвигается вправо.
Условный оператор If используется, когда требуется совершить действие при выполнении одного либо нескольких условий:
If <условие> Then <код>
Else
<код> End If
В самом простом случае, когда имеется одно условие и при его выполнении вызывается только один оператор, конструкция "If…" записывается в одну строчку:
If a < 0 then MsgBox "a < 0"
Если требуется задать составное условие, используются ключевые слова NOT, AND, OR. Например, требуется вывести на экран сообщение, если не выполнено
"a" ("a" присвоено значение "False"), b>c, или b/c>1:
If NOT a AND b > c OR b/c > 1 Then MsgBox "Condition is True"
3-20
Глава 5. Элементы макроязыка
Если условие представляется в виде конечного списка вариантов значения переменной, используется конструкция "Select Case…":
Select case <varname> Case 1
<код>
‘Код выполняется, если varname = 1
Case 2 <код>
‘Код выполняется, если varname = 2
Case Else
<код>
‘Код выполняется, если переменная не приняла ни одно из
‘значений
End Select
5.7.2.Циклические операторы
Представьте себе, что нужно посчитать сумму чисел от одного до 5. Можно сделать это следующим образом:
a=1+2+3+4+5
В случае пяти чисел получилась достаточно компактная запись. А что, если чисел 1000? В этом случае удобно будет использовать оператор цикла:
For counter = StartValue to EndValue Step increment <code>
Next
В этой конструкции переменная “counter” изменяет своё значение от
"StartValue" до "EndValue" с шагом "increment". При каждом шаге исполняется код, помещённый между заголовком цикла и служебным словом Next. Указание значения шага необязательно. По умолчанию шаг равен 1.
Таким образом, сумму от 1 до 1000 можно посчитать, запустив скрипт:
Sum = 0
For i = 1 to 1000 Sum = Sum + i
Next
MsgBox "Sum = "&Sum
3-21
ЧАСТЬ 3. Макроязык “Nova PowerScript”
#ПРИМЕЧАНИЕ. Значение переменной “counter” нельзя изменять самостоятельно (это делает интерпретатор).
Sum = 0
For i = 1 to 1000
Sum = Sum + i
i = i+1
‘ неправильно!
Next
MsgBox "Sum = "&Sum
Теперь представим ситуацию, когда нужно повторять действие, пока не выполнится условие. Теперь мы уже не можем задать верхний диапазон изменения счётчика. В этом случае используются операторы "Do While…Loop" и
"Do…Loop Until":
Do While <условие>
‘ код выполняется, пока истинно условие <код>
Loop
Do
‘ выполняется, пока истинно условие <код>
Loop Until <условие>
Эти конструкции очень похожи между собой. Разница состоит в том, что в случае "Do…Loop Until", даже при ложном условии, код выполнится один раз.
3-22
Глава 5. Элементы макроязыка
Пример:
Переменная "a" принимает случайные значения от 0 до 1. Нужно посчитать, через сколько итераций "a" примет значение, большее 0,99.
i=0
Do While a<=0.99 i=i+1
a=RND
Loop
msgbox "a = "&a&Chr(13)&Chr(10)&"Number of Iterations = "&i
В этом примере переменная "a" приняла значение большее 0,99 на 42-й итерации.
Последовательность Chr(13)&Chr(10) служит для переноса строки в строковых переменных. Как видно на примере, значение переменной "a" располагается на одной строке, а "i" - на другой. См. описание функции Chr() в Табл. 5-4
#ПРИМЕЧАНИЕ. Циклы с неизвестным количеством итераций часто применяются в программировании приложений для СЗМ. Один из самых распространённых примеров – это «Совершать действие, пока значение измеряемого сигнала не превысит заданный уровень».
Для досрочного выхода из цикла используются следующие операторы:
Exit For
Exit Do
3-23
ЧАСТЬ 3. Макроязык “Nova PowerScript”
5.8.Массивы
Массив – это переменная, в которую можно записать не одно значение, а несколько. Массивы используются для записи и обработки однотипных данных. Представьте себе, что нужно сохранить такую последовательность переменных
(степеней "2" ai = 2^i): a0 = 1
a1 = 2
a2 = 4
a3 = 8
a4 = 16
а затем обратиться к результату, задав значение степени. Этот алгоритм реализуется при использовании условного оператора. Но такая конструкция получилась бы слишком громоздкой и неудобной в использовании. Это как раз тот случай, когда удобно использовать массив.
5.8.1.Статические массивы
Статические массивы – это массивы с заданным заранее размером. Статический массив объявляется подобно переменной, только с указанием размера:
Dim Array_Name(размер-1)
В “VBScript” счёт ячеек ведётся не с "1", а с "0", поэтому, если, например, требуется задать массив с именем “MyArray” размером в 10 ячеек, то объявление будет выглядеть следующим образом:
Dim MyArray(9)
Для обращения к значению i-й ячейке вызывается имя массива с i–индексом: a = MyArray(3)
В этом случае мы присвоили переменной "a" значение 4-й ячейки массива
“MyArray”.
5.8.2.Динамические массивы
Динамические массивы – это массивы с переменным размером. Динамический массив объявляется следующим образом:
Dim Array_Name()
Для того чтобы задать либо изменить размер массива во время исполнения скрипта, используется функция Redim: