]]> ]]>

VBScript

Реализация языка программирования Basic

VBScript (сокращение от Visual Basic Scripting Edition) — скриптовый язык программирования, разработанный Microsoft и основанный на Visual Basic. Используется для создания скриптов в ОС семейства Windows.

Разработка VBScript началась в 1996 году в рамках технологии Microsoft Windows Script, изначально предназначенной для веб-разработчиков. Он должен был заменить устаревший язык, интерпретируемый приложением command.com. За следующие два года язык развился достаточно, чтобы обратить на себя внимание системных администраторов, нуждающихся в более мощном инструменте автоматизации, чем языке batch-файлов. Начиная с Windows 98, VBScript входил в стандартную поставку всех экземпляров Windows.

Развитие языка и включение в него новых возможностей продолжалось до появления фреймворка .NET; на этом этапе он был встроен в ASP.NET, и выпуск новых версий языка прекратился. Последней версией стала VBScript 5.8. Поддержкой языка занимается Sustaining Engineering Team.

Использование

Скрипты VBScript выполняются в специальной среде, существующей в нескольких вариантах:

  • Windows Script Host позволяет создавать независимые приложения путем написания скриптов .vbs и их запуска командами Cscript.exe (в режиме командной строки) и Wscript.exe (с графическим интерфейсом).
  • В Internet Explorer VBScript выполняет функции, аналогичные JavaScript, — создание исполняемых функций, встраиваемых в HTML.
  • С Active Server Pages язык используется для обработки веб-страниц на стороне сервера.
  • VBScript можно встраивать в два других типа скриптовых файлов: Windows Script Files (файлы .wsf, обеспечивающие модульность и повторное использование кода) и HTML Applications (файлы .hta, комбинирующие возможности HTML для описания интерфейса программы и VBScript для реализации логики).
  • Технология Microsoft Script Control позволяет встраивать среду выполнения VBScript в другие программы.

Особенности языка

Синтаксис VBScript является несколько упрощённой версией синтаксиса Visual Basic. В частности, не поддерживается типизация: все переменные имеют тип Variant, хотя каждое отдельно взятое значение можно преобразовать к нужному типу использованием явных функций преобразования CStr, CDate и т.д. Язык определяет множество констант для улучшения читабельности кода.

VBScript обеспечивает работу с датой/временем, обработку строк, математические вычисления, обработку ошибок, регулярные выражения и другое. Дополнительные функциональные возможности можно добавить, используя технологию ActiveX. Управление файловой системой, модификация файлов, операции с бегущим текстом доступны при использовании библиотеки scrrun.dll. Доступ к базе данных реализуется через ActiveX Data Objects (ADO), и IIS Metabase. Файлами XML и схемами можно управлять при помощи Microsoft XML Library Application Programming Interfaces (msxml6.dll, msxml3.dll), которые также могут использоваться для поиска информации в интернете.

Примеры:

Hello, World!:

Пример для версий VBScript 5.7, VBScript 5.8

Программа выводит сообщение в консоль и запускается командой cscript.exe.

WScript.Echo("Hello, World!")

Факториал:

Пример для версий VBScript 5.7, VBScript 5.8

Факториал вычисляется итеративно. Обратите внимание на то, что переполнения переменной-факториала не происходит, несмотря на то, что ее тип определяется автоматически.

f = 1
For i = 0 To 16
   WScript.Echo(i & "! = " & f)
   f = f * (i + 1)
Next

Числа Фибоначчи:

Пример для версий VBScript 5.7, VBScript 5.8

Числа Фибоначчи вычисляются рекурсивно. Обратите внимание на то, что многие элементы, типичные для Visual Basic, здесь отсутствуют: объявление переменных и типа значения, возвращаемого функцией, явное преобразование чисел в строку для конкатенации и т.д.

Function Fibonacci(N)
  If N < 2 Then
    Fibonacci = N
  Else
    Fibonacci = Fibonacci(N - 1) + Fibonacci(N - 2)
  End If
End Function

For i = 1 To 16
  res = res & Fibonacci(i) & ", "
Next
WScript.Echo (res & "...")

CamelCase:

Пример для версий VBScript 5.7, VBScript 5.8

В отличие от многих других реализаций Visual Basic, в VBScript нет функции StrConv. Поэтому проще всего выполнить нужное преобразование строки посимвольно.

Text = LCase(WScript.StdIn.ReadLine)
CamelCase = ""
WasSpace = True
For i = 1 To Len(Text)
  Ch = Mid(Text, i, 1)
  If InStr("abcdefghijklmnopqrstuvwxyz", Ch) = 0 Then
    WasSpace = True
  Else
    If WasSpace Then
      CamelCase = CamelCase & UCase(Ch)
    Else
      CamelCase = CamelCase & Ch
    End If
    WasSpace = False
  End If
Next
WScript.Echo CamelCase

Квадратное уравнение:

Пример для версий VBScript 5.7, VBScript 5.8
Function GetInt()
  Input = WScript.StdIn.ReadLine
  If not IsNumeric(Input) Then
    WScript.Echo "Coefficient is not a number."
    WScript.Quit
  End If
  GetInt = CInt(Input)
End Function
  

A = GetInt()
If A = 0 Then
  WScript.Echo "Not a quadratic equation."
  WScript.Quit
End If
B = GetInt()
C = GetInt()
D = B * B - 4 * A * C
p1 = -B / 2.0 / A
p2 = Sqr(Abs(D)) / 2.0 / A
If D = 0 Then
  WScript.Echo "x = " & p1
Else
  If D > 0 Then
    WScript.Echo "x1 = " & (p1 + p2)
    WScript.Echo "x2 = " & (p1 - p2)
  Else
    WScript.Echo "x1 = (" & p1 & ", " & p2 & ")"
    WScript.Echo "x2 = (" & p1 & ", " & -p2 & ")"
  End If
End If

Комментарии

]]>

blog comments powered by Disqus

]]>

Работа программистам