VBScript: Операторы языка

Операторы языка vbscript позволяют контролировать возникновение ошибок. Создавать различные условные конструкции и конструкции выбора, производить логические сравнения и многое другое. Условно все операторы языка можно разделить на несколько пунктов:

  • Арифметические
  • Обработка исключительных ситуаций
  • Логические и операторы сравнения
  • Циклы
  • Условные операторы языка
  • Прочие конструкции

Давайте, рассмотрим все операторы vbscript языка по порядку, и начнем с арифметических.

Арифметические операторы языка:

— (унарный) — Изменение знака аргумента на противоположный
— (бинарный) — Вычитание двух чисел
+ — Сложение двух чисел
* — Умножение двух чисел
/ — Деление двух чисел
\ — Целочисленное деление двух чисел
Mod — Вычисление остатка от деления двух чисел
^ — Возведение в степень

Обработка исключительных ситуаций:

Режим обработки исключительных ситуаций в VBScript включается с помощью оператора On Error Resume Next. Если после этого при исполнении какого-либо оператора языка в сценарии произойдет ошибка времени выполнения, то управление передастся к следующему оператору в тексте. Для анализа ошибок используется специальный объект Err, который содержит два свойства: Number — числовой код возникшей ошибки и Description — краткое описание этой ошибки. Для отмены режима обработки исключительных ситуаций нужно выполнить оператор On Error Goto 0. Имитацией ошибки периода выполнения занимается оператор Err.Raise 6. Для сброса кода ошибки используется оператор Err.Clear. Например:

'***************************
'error_resume.vbs
'***************************
On Error Resume Next
dim var1, var2, result, Mess
var1=100
var2="data"
result=var1/var2
 
If Err.Number<>0 Then
     Mess="Ошибка!!! " & "Код ошибки: " & Err.number & vbCrlf &_
     "Описание: " & Err.description
     Wscript.Echo Mess
Else
     Wscript.Echo result
End If

Логические и операторы сравнения:

Логические операторы языка могут возвращать только логические значения true или false

Not — Оператор отрицания. Возвращает true, если операнд равен false. В противном случае возвращает false
Or — Оператор отношения «ИЛИ». Возвращает true, если один из опе­рандов равен true. В противном случае возвращает false
Xor — Оператор отношения «ИСКЛЮЧАЮЩЕЕ ИЛИ». Возвращает true, если один из операндов равен true, а другой равен false. В про­тивном случае возвращает false
And — Оператор отношения «И». Возвращает true, если оба операнда равны true. В противном случае возвращает false

Операторы сравнения позволяют сравнивать значения двух переменных, они возвращают только логическое true или false:

> — Левый операнд больше правого
>= — Левый операнд больше или равен правому
< — Левый операнд меньше правого
<= — Левый операнд меньше или равен правому
= — Левый операнд равен правому
<> — Левый операнд не равен правому

Циклы:

Цикл For Next

For счетчик=начальное значение
То конечное значение [Step шаг счетчика]
тело цикла
[Exit For] тело цикла
Next

Тут, если  [Step шаг счетчика] не указано, то берется единица.

[Exit For] – используется для безусловного выхода из цикла

'********************************
'for_next.vbs
'********************************
Dim howFar, sum(10), icount, theSum
howFar = 10
theSum = 0
sum(0) = 0
For icount = 0 To howFar
     theSum = theSum+icount
     sum(icount) = theSum
Next
Wscript.Echo theSum

For Each…In

For Each переменная In имя массива(коллекции)
тело цикла
[Exit For]
тело цикла
Next

Используется для перебора всех элементов массива (коллекции).

'********************************
'for_in.vbs
'********************************
Dim FSO, Folder, Files, File, s
s="Список файлов" & vbCrLf
Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder("C:\")
Set Files = Folder.Files
For Each File In Files
s = s & File.Name & vbCrLf
Next
Wscript.Echo s

While Wend

While условие
тело цикла
Wend

Если условие равно true, то тело цикла выполняется, в противном случае цикл завершается.

'********************************
'while_wend.vbs
'********************************
Option Explicit
Dim a, MySum, msg
 
while MySum<=1000
     a=45
     MySum=MySum +a
wend
msg= "Сумма ровна - " & MySum
 
wscript.echo msg

Do Loop

Do [While | Until] условие
тело цикла
[Exit Do]
тело цикла
Loop

или

Do
тело цикла
[Exit Do]
тело цикла
Loop [While | Until] условие

Первый синтаксис – с предусловием, второй – с постусловием.

[Exit Do] – безусловный выход из цикла

' *****************************************************************************
' do_while_loop.vbs
' *****************************************************************************
Option Explicit
Dim sum(10), icount, MySum, AllElement 
 
MySum = 0  
sum(0) = 0 
AllElement=""
 
Do While (icount < 10)
     MySum = MySum+icount    
     sum(icount) = MySum    
     icount = icount+1  
     AllElement=AllElement & MySum & vbCrLf
Loop 
 
wscript.echo AllElement

и

' *****************************************************************************
' do_until_loop.vbs
' *****************************************************************************
Option Explicit
 
Dim sum(10), icount, MySum, AllElement 
 
MySum = 0  
sum(0) = 0 
AllElement=""
 
Do  Until (icount >= 10)
     MySum = MySum+icount    
     sum(icount) = MySum    
     icount = icount+1  
     AllElement=AllElement & MySum & vbCrLf
Loop 
 
wscript.echo AllElement

Условные операторы языка:

If

If условие_1 Then выражение_1
[Elself условие_2 Then выражение_2]
[Else выражение_3]
End If

' *****************************************************************************
' operator_if.vbs
' *****************************************************************************
Option Explicit
Dim D, x, a, b, c, x1, x2, msg
a=-2
b=6
c=20
'Идет поиск дискриминанта
d=b^2-4*a*c
 
if d=0 then
     x=-b/(2*a)
     msg="Уравнение имеет одно решение, x ровно " & x
End If
 
if d>0 then
     x1=(-b+sqr(d))/(2*a)
     x2=(-b-sqr(d))/(2*a)
     msg="Уравнение имеет два решения" & vbCrLf & "x1 ровно " & x1 & vbCrLf & "x2 ровно " & x2
else
     msg="Решения нет"
End If
wscript.echo msg

Select Case

Case значение_1 выражение_1
[Case значение_2  выражение_2 ]
[Case Else выражение_3 ]
End Select

' *****************************************************************************
' select_case.vbs
' *****************************************************************************
Option Explicit
Dim D, x, a, b, c, x1, x2, msg, col
a=-2
b=6
c=20
'Идет поиск дискриминанта
d=b*b-4*a*c
 
if d=0 then
     x=-b/(2*a)
     col=1
elseif d>0 then
     x1=(-b+sqr(d))/(2*a)
     x2=(-b-sqr(d))/(2*a)
     col=2
else
     col=0
End If
 
Select case col
     case 0
                 msg="Решения нет"
     case 1
                 msg="Уравнение имеет одно решение, x ровно " & x
     case else
                 msg="Уравнение имеет два решения" & vbCrLf & "x1 ровно " & x1 & vbCrLf & "x2 ровно " & x2
End Select
 
wscript.echo msg

Прочие конструкции:

. — Точка. Применяется для доступа к свойству объекта или для вызова его метода

() — Скобки. Применяются либо для изменения порядка вычисления выражений, либо для передачи параметров функциям, либо для индексирования массива

& — Оператор языка конкатенации (склеивание между собой) символьных строк

With … End With — Позволяет обращаться к свойствам объекта без написания имени этого объекта

Например:

Set rst = CreateObject("ADODB.Recordset")
With rst
    .CursorType = adOpenKeySet
    .LockType = 3
    .Open cmd
End With

Оцените статью
Технологии программирования и ведение блога
Добавить комментарий