Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Инструкция по программе Nova

.pdf
Скачиваний:
138
Добавлен:
28.05.2015
Размер:
27.02 Mб
Скачать

Глава 5. Элементы макроязыка

Название переменной не должно быть длиннее 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

value2=5

MultyInputBox 2, "Value1", value1, "Value2", value2

3-17

ЧАСТЬ 3. Макроязык “Nova PowerScript”

Чтобы в соответствующих полях ввода отобразились определенные значения по умолчанию, нужно вызвать 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:

ReDim Array_Name(размер-1)

3-24