Vbscript процедуры с необязательными параметрами. Сравнительный анализ JavaScript и VBScript. Присваивание значения переменной

В этом начальном уроке, мы изучим синтаксис vbscript языка. Синтаксис языка vbscript является таким же как и в языке Visual Basic и фактически, является подмножеством данного языка программирования. Основной упор в использовании vbscript – это возможность написания сценариев (расширение vbs) с открытым кодом для платформы Windows. Пользователю не нужно прибегать к установке дополнительного программного обеспечения, так как все сценарии выполняются под управлением сервера сценариев .

И так, давайте рассмотрим базовый синтаксис vbscipt и его возможности.

  • Комментарии – для комментирования строк кода можно использовать ключевое слово REM , или одинарную кавычку (").
  • Строки кода – что бы произвести перенос одной строки на несколько, используется символ подчёркивания.
  • Переменные – для объявления переменных используется ключевое слово Dim . Более детально, работу с ними я рассмотрел в статье " "

Можно прописать несколько операторов в одну строчку, для этого используется знак двоеточия (:). Сам язык нечувствителен к регистру символов.

Хорошо, давайте рассмотрим синтаксис языка vbscript на таком примере:

REM Общий синтаксис vbscript REM primer_1.vbs "**************************************** dim a, b, c a = "строка" b = 100 c = 22.5 MsgBox a:MsgBox b:MsgBox c

Видим, что тут, мы вначале прописали комментарии, далее объявили три переменные. Как видим, язык vbscript не требует назначения типа данных (более детально, работу с типами данных я рассмотрел в статье – " "). В конце, для вывода данных мы использовали функцию MsgBox, в данном случае она прописана в упрощенном варианте. Давайте рассмотрим ее полный синтаксис:

MsgBox(prompt[, buttons] [, title ][, helpfile, context ]) – видим, что тут, функции передаются пять параметров, последние два мы рассматривать не будет, так как они не являются актуальными и практически не применяются.

  • prompt – собственно, сообщение, которое надо вывести
  • buttons – позволяет задать дополнительные кнопки, их значения указываются через константы
  • title – заголовок окна

Работу с данной функцией я более детально рассмотрел в статье " ".

Язык vbscript предоставляют также функции для работы со строками и датой, а также, ряд математических функций.

Конечно, синтаксис vbscript позволяет пользователю создавать собственные процедуры и функции. Для определения процедуры, т. е. подпрограммы, которая не возвращает никакого значения, в VBScript используется конструкция Sub ... End Sub . После ключевого слова Sub идёт имя процедуры, а в круглых скобках указывается список её пара­метров, например:

Sub MyProcedure(Param1, Param2)
Строки кода
End Sub

Если процедура не имеет параметров, то в скобках после имени ничего ука­зывать не нужно:

Sub MyProcedure()

End Sub

Вызывать процедуру из сценария можно двумя способами. Во-первых, мож­но просто написать имя и указать через пробел список передаваемых параметров, например: MyProcedure 3,10. Во-вторых, можно использовать специальный оператор Call , при этом спи­сок параметров обязательно должен быть заключен в круглые скобки: Call MyProcedure(3,10) .

Для определения функции, т. е. подпрограммы, которая возвращает опреде­ленное значение, применяется конструкция Function ... End Function . Как и при описании процедур, после названия функции в круглых скобках указывается список её параметров, например:

Function MyFunction(Param1, Param2) … End Function

Для того чтобы возвратить из функции какое-либо значение, нужно внутри неё присвоить это значение переменной, название которой совпадает с именем функции:

Function MyFunction(Param1, Param2)
Dim Sum
Sum = Paraml+Param2
MyFunction = Sum
End Function

Если возвращаемое функцией значение не нужно присваивать никакой пе­ременной, то функция вызывается так же, как и процедура - пишется имя этой функции и через пробел указывается список ее аргументов: MyFunction 3,5

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

Вот простой пример синтаксиса vbscript для использования собственных процедур и функций:

Помимо процедур и функций, можно создавать собственные массивы (

  • СПРАВОЧНЫЕ МАТЕРИАЛЫ
    • Функции VBScript
      • Функции VBScript
      • Функции VBA, которых нет в VBScript
      • Функции VBScript, которых нет в VBA
      • Функции Scripting Run-Time Library Reference Features
    • Список ключевых слов в алфавитном порядке
    • Константы
      • Константы VBScript
      • Цветовые константы
      • Константы сравнения
      • Константы даты и времени
      • Константы форматирования даты
      • Константы разные
      • Константы MsgBox
      • Строковые константы
      • Константы трёх состояний
      • Константы типов переменных
    • События
      • Событие Initialize
      • Событие Terminate
    • Функции
    • Методы
    • Объекты
      • Объект Class
      • Объект Dictionary
        • Свойства объекта Dictionary
        • Методы объекта Dictionary
      • Объект Err
        • Свойства объекта Err
        • Методы объекта Err
      • Объект FileSystemObject
        • Свойства объекта FileSystemObject
        • Методы объекта FileSystemObject
      • Объект Drive
        • Свойства объекта Drive
      • Объект File
        • Свойства объекта File
        • Методы объекта File
      • Объект TextStream
        • Свойства объекта TextStream
        • Методы объекта TextStream
      • Объект Match
        • Свойства объекта Match
      • Объект RegExp
        • Свойства объекта RegExp
        • Методы объекта RegExp

    Программирование на Visual Basic Script для опытных программистов особой сложности не представляет. Достаточно почитать документацию, чтобы понять некоторые особенности языка и узнать отличия между VBScript и Visual Basic, а также между VBScript и VBA. Однако полная документация имеется, в основном, на английском языке. Да и начинающему разобраться в ней будет непросто. И если вы решили взяться за VBScript, то представленная ниже книга вам в этом поможет.

    Где используется VBScript? Применений довольно много. Подробно об этом вы прочитаете в книге. А если коротко, то используется Visual Basic Script для написания сценариев, которые можно сохранить в файл и затем с их помощью выполнять различные рутинные процедуры. Например, очистку диска от ненужных файлов.

    Кроме этого сценарии можно встраивать в веб-страницы. Поскольку VBScript является, пожалуй, самым простым в освоении языком сценариев, то он широко используется в различных приложениях, таких как SCADA-системы. Например, SCADA-система Reliance использует именно язык Visual Basic Script , который дополнен некоторыми специфическими для данной системы функциями.

    Ниже приведено содержание книги. Некоторые разделы можно посмотреть непосредственно на этом сайте. Книга пока не закончена, поэтому рекомендую периодически заглядывать на эту страницу, чтобы получить обновлённую версию.

    Данная статья предназначена тем, кто хотел бы получить представление о программировании на Visual Basic Script, подмножестве языка Visual Basic. VBScript позволяет решать задачи, связанные с Internet, а именно создавать сценарии (или скрипты) управления объектами (кнопками, списками, ниспадающими меню и т. д.) на Web-страничках. Для понимания этого материала нужно иметь представление о структуре HTML-документа, а также основах программирования на Visual Basic. Описанные в статье сценарии могут быть использованы в браузере Microsoft Internet Explorer 3.0. Другие браузеры попросту не понимают этого языка. В настоящее время существуют всего два языка создания сценариев по управлению объектами - Microsoft VBScript и Sun JavaScript. Оба поддерживаются IE 3.0. Браузер же компании Netscape воспринимает только JavaScript.

    С помощью VBScript вы можете быстро создавать собственные страницы или даже писать игры. И все это размещается внутри вашего HTML-документа. Если вы уже имели дело с Visual Basic или Visual Basic for Applications, то легко справитесь и с VBScript.

    Создание скриптов

    Для того чтобы браузер мог различать команды VBScript, нужно все операторы VBScript на HTML-страницах обрамлять тегами и . Первый из них используется в паре с атрибутом LANGUAGE для определения языка создания сценария. В нашем случае - Visual Basic Script (хотя может быть и JavaScript). Значением для этого языка является "VBScript":

    Пример странички с фрагментом на VBScript Обычная первая страничка

    Тег имеет завершающую часть - . Всегда употребляйте их парой! Сценарий в нашем примере помещается в специальные скобки , которые в языке HTML обозначают комментарий. Это делается для того, чтобы старые браузеры, которые не умеют работать со скриптовыми языками, случайно не отобразили сценарий на экране. Для них он - просто комментарий.

    При разработке приложения на VBScript необходимо знать концепцию этого языка, а также иметь представление о том, как работают объекты, события и процедуры. Это поможет вам в дальнейшем разобраться в функционировании объектной модели Internet Explorer 3.0 и объектов ActiveX. Помните, что объекты и VBScript связаны друг с другом.

    Процедуры

    Процедуры - это относительно самостоятельные фрагменты программы, оформленные особым образом и обозначенные именами. Упоминание этих имен в тексте программы называется вызовами процедур. Процедуры помогают разбить программу на ряд независимых частей, что необходимо для экономии памяти. Каждая процедура существует в программе в единственном экземпляре, но обращаться к ней можно из разных точек программы. При вызове процедуры вступает в действие последовательность операторов, которые находятся внутри этой процедуры. Процедуре могут быть переданы некоторые параметры.

    Виды процедур

    В VBScript существует два вида процедур: подпрограмма (Sub) и функция (Function). Подпрограмма (Sub) - это последовательность VBScript-операторов, обрамляемая операторами Sub и End Sub. Подпрограммы могут принимать параметры (константы, переменные или выражения, которые передаются при вызове процедуры), но не возвращают значений. Если подпрограмма не содержит параметров, то ее оператор должен включать пустой набор круглых скобок. Следующая подпрограмма использует две функции языка VBScript - InputBox и MsgBox. Она запрашивает у пользователя ввод температуры в градусах Фаренгейта, переводит ее в градусы Цельсия и отображает результат. Вычисление температуры происходит в функции Celsius.

    Функция (Function) - это последовательность операторов VBScript, обрамляемая операторами Function и End Function. Она похожа на подпрограмму, но отличается от последней тем, что может возвращать некоторое значение. Функция может принимать параметры (константы, переменные или выражения, передаваемые при вызове). Если она не содержит параметров, то оператор Function должен включать пустой набор круглых скобок. Возвращаемый тип у Function - Variant.

    В следующем примере функция Celsius переводит градусы Фаренгейта в градусы Цельсия. Когда вызывается функция из подпрограммы ConvertTemp, переменная, содержащая параметр-значение, передается в функцию. Результат вычисления возвращается в вызывающую процедуру и отображается в MsgBox.

    Перед использованием процедур в своей программе вы должны их объявить. Их нужно всегда размещать в самом начале раздела вашей HTML-странички. Весь последующий текст должен также находиться в разделе . Операторы Function и Sub, подобно другим элементам языка VBScript, располагаются между парой тегов для правильного их распознавания браузером. Кроме того, теги комментария () окружают текст программы внутри тега , гарантируя, что сценарий не будет отображаться в браузерах, которые не поддерживают VBScript.

    Любые данные передаются в ваши процедуры в виде параметров. При создании подпрограммы (или функции) после ее имени должны быть круглые скобки. Любые параметры внутри них отделяются запятыми. В следующем примере параметр fDegrees передает значения в функцию Celsius для преобразования:

    Используйте функции вместо подпрограмм, если требуется возвратить некоторое значение.

    Использование подпрограмм и функций

    Для применения функций в вашей программе необходимо поставить ее название справа от переменной или выражения, в которое будет возвращаться результат выполнения функции, например:

    Чтобы вызвать одну процедуру из другой, необходимо написать имя первой со значениями требуемых параметров, каждый из которых должен отделяться от предыдущего запятой. Оператор Call не требуется. Но если вы все-таки используете его, то нужно заключить любые параметры в круглые скобки. Следующий пример показывает две возможности вызова процедуры MyProc. Один использует оператор Call, другой - нет. Оба выполняют одно и то же.

    Обратите внимание, что круглые скобки опускаются при вызове подпрограммы, если оператор Call не применяется.

    Объект

    Объект (Object) - это простой объект, методами, свойствами и событиями которого вы можете управлять. Метод - это процедура или просто набор команд, сообщающих объекту, что нужно выполнить некоторую задачу. Свойство - это некоторый вид параметра объекта. Событие - это сигнал, подаваемый, если с объектом что-то происходит. И методы, и свойства, и события разработчик выбирает сам, исходя из потребностей задачи. Так, если в вашей программе нужно отследить время окончания работы, то имеет смысл обращать внимание на событие, сигнализирующее об этом. В противном случае эта информация бесполезна.

    Объектная модель

    Рассмотрим объект ActiveX Label (объект и элемент управления для VBScript фактически означают одно и то же). Он состоит из свойств и имеет один метод. Некоторые из его свойств включают заголовок (Caption), цвет фона (BackColor), цвет шрифта (ForeColor), размер (FontSize) и стиль шрифта (FontName). Его методом является About Box, отображающий при вызове окно с информацией об ActiveX. Событием для Label является перемещение указателя мыши над Label. Существует специальный тег для вставки объектов в HTML-страницу. В его синтаксисе используются два тега: и Первый - для определения используемого объекта, а также других главных параметров, связанных с объектом; второй - для установки разных свойств объекта, определенного тегом , во вложенных тегах Атрибуты тега перечислены в табл. 1, а тэга В табл. 2.

    Таблица 1.
    Атрибуты тэега .

    Атрибут Назначение
    ID Определяет имя объекта в документе
    CLASSID Класс, к которому принадлежит объект; может быть уникальным универсальным идентификатором или другой группой классов типа Java. Для элементов управления ActiveX - это идентификационный номер класса в системном реестре вашей системы
    DATA Адрес, откуда объект должен получать данные; может включать данные для определения всех свойств классов
    CODEBASE Адрес, где находится код объекта
    TYPE Тип Internet MIME (например: application/x-oleobject будет определять OLE-объект, который должен использоваться как код)
    HEIGHT Высота границы объекта
    WIDTH Ширина границы объекта

    Таблица 2.
    Атрибуты тега

    Теперь посмотрим на исходный текст, приведенный в примере для элемента управления - Label.

    Пример, демонстрирующий объект ActiveX

    Для тега определено несколько параметров, которые предоставляют полезную информацию относительно используемого объекта. Сначала определяется имя объекта "mylabel", затем свойства: ширина и высота. Далее элемент управления идентифицируется параметром "CLSID:99B42120-6EC7-11CF-A6C7-00AA00A47DD2" точно так, как он обозначается в системном реестре вашей операционной системы. Вложенные тэги Содержат свойства объекта Label. Атрибут NAME используется, чтобы определить, какое свойство должно использоваться, а VALUE - для связи значения с этим свойством. Весь этот процесс автоматизирует программа ActiveX Control Pad. В ней есть окно, позволяющее корректировать свойства любого элемента управления (см. статью , "Мир ПК", # 2/97, с. 51).

    Использование объектов

    Теперь вы знаете, что для включения объектов в HTML-документ нужно использовать пару тегов , а для установки значений его свойств - тег Если вы имели дело с программированием на Visual Basic, то использование тегов Будет напоминать вам размещение какого-либо компонента или элемента управления на форме. Например, следующие значения тегов и Добавляют на страничку (вместо формы в Visual Basic) элемент ActiveX Label:

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

    Обработчик события нажатия кнопки cmdChangeIt изменяет текст объекта Label:

    Некоторые теги (прежде всего для управления вводом информации в форму) и элементы ActiveX могут обращаться к отдельным процедурам вашего сценария (скрипта), запускаемого событием. События могут вызываться из тегов , , и . В примере, который приводится ниже, при нажатии кнопки изменяется текст объекта Label:

    Использование объектов с событиями


    sub changes MyLabel.Caption="See. . . I TOLD YOU!" MyLabel.ForeColor = "6316128" MyLabel.BackColor = "167111680" MyLabel.FontName = "Arial" end sub sub MyLabel_Click MyLabel.Caption="Watch me change!!" MyLabel.ForeColor = "65280" MyLabel.BackColor = "14527197" MyLabel.FontName = "Times" end sub

    В этом примере, помимо объекта Label, добавлены некоторые возможности сценария и несколько событий. Во-первых, определяется элемент управления Label, затем с помощью тега добавляется элемент управления Button. Когда пользователь нажимает на кнопку, то текст Label изменяется. При повторном нажатии кнопки возвращается прежний текст. Оба эти действия являются событиями. Когда пользователь нажимает на кнопку, возникает событие, заставляющее метку изменяться. Атрибут OnClick в теге используется для того, чтобы вызвать событие. Сам по себе атрибут OnClick является событием, и его значение вызывает процедуру VBScript, которая заставляет метку изменяться. Прежний текст возвращается с помощью сценария, имеющего две процедуры. Первая используется элементом Button (кнопка), а вторая - Label (метка), если пришло время вернуть ее старое содержание. Как вы заметили, во второй процедуре имя объекта Label (MyLabel) сопровождается подчеркиванием, после которого стоит имя события (MyLabel_Click). Это означает, что когда происходит событие OnClick для названного объекта, то должны выполняться последовательности операций, перечисленные в этой процедуре.

    При интенсивном программировании лучше всего использовать программу Microsoft ActiveX Control Pad, великолепно выполняющую связывание команд Visual Basic с разными событиями и элементами управления на вашей страничке. Таким образом, вы можете больше внимания обращать на сам процесс разработки приложения.

    Установка свойств для элементов управления и объектов

    Установка свойств для разных объектов на странице является одной из простейших задач при программировании на VBScript. Стандартная схема этого действия выглядит так:

    ... ObjectName.property = value ...

    Здесь ObjectName - имя вашего объекта, определенное с помощью параметров ID или NAME; property - свойство объекта, называемого ObjectName; value - присваиваемое свойству значение. Пример ниже иллюстрирует, как это делается:

    MyLabel.Caption="Watch me change!" MyLabel.ForeColor = "65280" MyLabel.BackColor = "14527197" MyLabel.FontName = "Times" ...

    Свойству Caption (заголовок) присваивается строка "Watch me change!". Затем устанавливаются свойства ForeColor (цвет текста), BackColor (цвет фона) и FontName (стиль шрифта). Так можно устанавливать свойства для любого объекта на странице.

    Обработка событий

    VBScript - событийно-ориентированный язык. Некоторые события, перечисленные в табл. 3, работают со многими элементами управления. Существует несколько методов определения того, что должно происходить в сценарии при возникновении события. Можно определить событие как параметр тега для объекта на странице. Значением этого атрибута должно быть имя процедуры, которую нужно заранее определить внутри тега. Если надо использовать определенную процедуру, то параметр LANGUAGE тега (см. табл. 4) должен быть включен в этот тэг как дополнительный атрибут.

    Таблица 3.
    Некоторые события разных объектов в VBScript.

    Таблица 4.
    Дополнительные атрибуты тега .

    Атрибут Назначение
    EVENT Декларирует событие (для объекта или элемента управления, определенного с помощью FOR), используемое для вызова кода, вставленного между парой тэгов
    FOR Определяет, для какого объекта или элемента управления на странице должен использоваться скрипт, если происходит событие, указанное в атрибуте EVENT
    LANGUAGE Назначает используемый скриптовый язык. Значением может быть либо "VBScript" для VBScript, либо "JavaScript" для JavaScript
    EventName Псевдоним события. Любое событие для определенного элемента управления может использоваться как атрибут одного из четырех тегов: , , и . Значением для этого события всегда является процедура (и в VBScript, и в JavaScript). Некоторые названия событий, которые могут использоваться как атрибуты, перечислены в табл. 3. Этот метод не может работать с некоторыми элементами ActiveX

    Типовая схема описания обработчика события следующая: , где EventName - любое правильное событие для соответствующего объекта, а method - это имя процедуры, которая вызывается при возникновении какого-то определенного события. Используя атрибуты, описанные в табл. 4, вы можете определить в теге , какое произошло событие и для какого объекта должен использоваться следующий код, что необходимо сделать, если в программе несколько процедур. Это выглядит примерно так:

    ...

    FOR определяет имя элемента управления или объекта, для которого используется последующий код; EVENT задает событие, при возникновении которого следующий код будет вызван.

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

    ... sub ObjectName_ObjectEvent ... end sub ...

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

    ... sub changes MyLabel.Caption="See. . . I TOLD YOU!" MyLabel.ForeColor = "6316128" MyLabel.BackColor = "167111680" MyLabel.FontName = "Arial" end sub ... ... sub MyLabel_Click MyLabel.Caption="Watch me change!" MyLabel.ForeColor = "65280" MyLabel.BackColor = "14527197" MyLabel.FontName = "Times" end sub ...

    Вызов методов

    Чтобы вызвать подпрограмму из вашего сценария, используйте следующий синтаксис:

    Call ProcedureName(arguments)

    ProcedureName - это имя подпрограммы, которую вы вызываете; arguments - значения, передающиеся в процедуру. Как было сказано ранее, подпрограммы используются, когда требуется обработать какое-то событие, например:

    ... sub MyObject_Click() alert "This is a subroutine which is called _ when the Click event happens for the MyObject object." end sub ...

    В нашем случае это Click, т. е. пользователь должен щелкнуть мышкой на этом объекте. Это не будет работать для функции, потому что функция - это процедура, возвращающая значение. Что касается функций, то они сами могут быть возвращены как значение, например:

    ... y = 2 x = GiveValue(y) alert x ... function GiveValue(a) GiveValue = a + 4 end function ...

    Следующий пример иллюстрирует вызовы подпрограммы и функции из сценария:

    Документ HTML, использующий элементы управления ActiveX и процедуры
    Enter Angle: The Sine is: dim pi pi = 4 * atn(1.0) sub button1_OnClick dim angle, sinangle angle = AngleInpt.value sinangle = getsin(angle) SineInpt.value = sinangle end sub function getsin(angle) getsin = sin((pi * angle)/180) end function sub ieLabel1_Click call ieLabel1.AboutBox end sub

    Когда пользователь щелкает мышью по метке Label, то вызывается метод About Box. Поля ввода используются для вычисления синуса заданного угла (в градусах). Если ввести некоторое значение в первое поле ввода, помеченное текстом "Enter Angle", и щелкнуть на кнопке мышью, то введенный аргумент будет переведен в радианы и затем вычислен синус, результат чего будет отображен. Первая процедура вызывается по нажатию мышью на единственный объект на странице - кнопку, называемую button1. Когда это событие обрабатывается, то вызывается сразу несколько методов. Сначала обновляются все переменные, которые вы собираетесь использовать для вашей программы. Затем отыскивается значение, называемое AngleInpt, которое пользователь набрал в поле ввода. Далее вызывается функция, в которую заносится введенный параметр из поля AngleInpt. Она преобразует угловые градусы в радианы, затем вычисляет его синус (радианы являются основной мерой измерения углов для тригонометрических функций в VBScript). Значение связывается с именем функции (getsin), которая возвращает его для определенной нами ранее переменной. В итоге это значение отображается в текстовом поле, называемом SineInpt.

    В данном примере задействовано два метода: подпрограмма button1_OnClick, которая, если вы помните, вызывается, когда пользователь щелкает мышью по кнопке, и функция getsin(angle), где angle - параметр, используемый для преобразования градусов в радианы. У элемента ActiveX Label используются два включаемых метода (методами называются собственные подпрограммы и функции объекта): тот, который вызывается, когда по метке щелкнули мышкой (ieLabel1_Click), и метод отображения диалоговой панели ieLabel.AboutBox(). Когда обращаются к методам объектов, обычно используют следующий синтаксис:

    Call ObjectName.MethodName()

    Ключевое слово call применяется для вызова определенного метода. ObjectName - это имя объекта, для которого вы хотели бы вызвать метод, а MethodName() - это имя метода, который будет использовать сам объект. Имя объекта и вызываемый метод отделяются точкой. Также для вызова метода не требуется никаких скобок, потому что у него нет никаких параметров.

    Объектная модель Internet Explorer 3.0

    Все объекты являются дочерними от объекта Window. Объект Window содержит несколько методов, свойств и событий. Некоторые из них перечислены в табл. 1 - 3. Объект Window является исходным объектом, так что вам не требуется добавлять его имя к свойствам или дочерним объектам. Например, вместо window.name вы могли бы использовать только name.

    Таблица 1.
    Свойства объекта Window.

    Таблица 2.
    Несколько основных методов объекта Window.

    Метод Назначение
    Open Открывает или закрывает документ внутри текущего окна или другого определенного окна. У него есть два аргумента: имя файла, который вы хотите открыть, и имя окна, на котором вы хотите его разместить. Например, window.open(filename,windowname), где filename - имя файла, а windowname - имя окна. Для этого метода требуются оба параметра
    Prompt Определяет всплывающую подсказку. Имеет два параметра: текст подсказки и любой заданный по умолчанию текст, который входит в подсказку. Например: window.prompt(ExpString, DftString), где ExpString - текст подсказки, а DftString - исходный текст в подсказке. Оба параметра необязательны. Если этот метод связан с переменной (как x=prompt("stuff","more stuff")), то эта переменная получит любые данные, которые были введены в подсказку, если не была нажата "отмена"
    Close Используется для закрытия окна
    Navigate Переключает окно на другой адрес URL. Например: window.navigate(URL), где URL - имя того URL, на который нужно перейти

    Таблица 3.
    События загрузки объекта Window.

    Объект Document

    Объект Document имеет дело прежде всего с телом HTML-страницы. Он имеет три дочерних объекта: Link, Anchor и Form, каждый из которых является индексированным массивом объектов link, anchor и form. Кроме того, объект Form содержит подобъект Element, который является индексированным массивом всех объектов и элементов управления на странице. Некоторые важные свойства и методы перечислены в табл. 4. Для Document, заметим, не существует никаких событий.

    Таблица 4.
    Некоторые методы объекта Document.

    Метод Назначение
    BgColor Устанавливает цвет фона текущего документа. Этот цвет может иметь шестнадцатеричное представление #rrggbb или соответствующее название
    FgColor Устанавливает цвет текста документа. Аналогичен по функциям свойству BgColor
    Referrer Указывает URL документа, на который ссылается пользователь в настоящее время. Например, если кто-то обратился по адресу: http://www.nm.org/welcome.htm с сервера http://www.someplace.com, то свойством Referrer будет: http://www.someplace.com, если это свойство было в странице вышеупомянутого расположения; в противном случае оно обращается в Null
    LastModified Показывает дату последней модификации документа
    Open Открывает документ для записи дополнительных строк в формате HTML. Синтаксис: document.open()
    Write Записывает HTML-текст в текущий документ и должен вызываться, когда документ открывается для записи. Синтаксис: document.write(somestring), где somestring может быть одной строкой, переменной или же несколькими связанными строками в формате HTML, которые выводятся на экран
    Close Закрывает документ после того, как имели место следующие вызовы: document.write, document.close.
    Объект Frame

    Объект Frame - это индексированный массив из фреймов (кадров) на странице. Первый кадр из списка соответствует кадру в верхнем левом углу браузера. Вы можете использовать данный объект для установки или получения различных URL-адресов разных фреймов, которые находятся на экране браузера. Фреймовый массив очень похож на объект Window, поскольку он использует другие объекты похожим способом. Например, вы можете использовать расположение объекта для получения или установки расположения соответствующего фрейма.

    Объект History

    Основной целью объекта History является доступ к списку введенных адресов в браузере. Существуют три метода, используемых для навигации по папке History. Наиболее важные методы перечислены в табл. 5. Объект History не генерирует никаких событий.

    Таблица 5.
    Некоторые методы объекта History.

    Объект Location

    Этот объект необходим для получения информации относительно текущего расположения Internet Explorer. Наиболее важные свойства перечислены в табл. 6. Этот объект не имеет никаких событий или методов.

    Таблица 6.
    Наиболее важные свойства объекта Location.

    Теперь вы имеете представление о объектах, их функционировании, а также их событиях, методах и свойствах. Вы познакомились с тем, как использовать VBScript для вызова процедур, которые основаны на различных событиях, происходящих с объектом. Надеемся, что это поможет вам в дальнейшей работе.

    Процедура sub выполняет последовательность действий, но не возвращает никакого, значения, ассоциированного с ее именем. Она имеет следующий синтаксис:

    sub имя_процедуры ([список-параметров])

    операторы

    Через необязательный параметр можно передать в процедуру внешние данные или, наоборот, получить некоторые вычисленные ею значения.

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

    call MyProc(firstarg, secondarg)

    MyProc firstarg, secondarg

    Функция также выполняет определенную последовательность операторов и ей можно передать внешние данные через параметры процедуры, но, в отличие от процедуры sub, она возвращает значение, присваиваемое ее имени, и может быть использована в выражениях VBScript. Она имеет следующий синтаксис:

    function имя_процедуры ([список-параметров])

    операторы

    имя_процедуры = значение

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

    VBScript предоставляет два способа передачи параметров в процедуру:

    По значению

    Способ передачи параметров по ссылке, применяемый по умолчанию, передает фактический адрес переменной, используемой в качестве параметра. Это позволяет изменить содержимое соответствующего адреса памяти, а тем самым, и значение переменной.

    Передача параметров по значению предполагает передачу в процедуру копии переменной, а не адреса самой переменной. Поэтому любые изменения параметра внутри процедуры воздействуют на копию, а не на саму переменную, и, следовательно, значение переменной, переданной в качестве параметра, изменяться не будет. Для указания интерпретатору, что параметр передается в процедуру по значению, используется ключевое слово ByVal, задаваемое перед параметром в описании процедуры.

    6 Объекты6.1 JavaScript

    На самом верхнем уровне иерархии находится объект window, представляющий окно браузера и являющийся “родителем” всех остальных объектов. Расположенные ниже в иерархии объекты могут иметь свои подчиненные объекты.

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

    Каждая страница в добавление к объекту navigator обязательно имеет еще четыре объекта:

    window – объект верхнего уровня, свойства которого применяются ко всему окну, в котором отображается документ.

    document – свойства которого определяются содержимым самого документа: связи, цвет фона, формы и т.д.

    location – свойства которого связаны с URL-адресом отображаемого документа.

    history – представляет адреса ранее загружавшихся HTML-страниц.

    Кроме указанных объектов страница может иметь дополнительные объекты, зависящие от ее содержимого, которые являются дочерними объектами объекта document. Если на страницы расположена форма, то все ее элементы являются дочерними объектами этой формы. Для задания точного имени объекта используется точечная нотация с полным указанием всей цепочки наследования объекта. Это возможно, так как объект верхнего уровня имеет свойство, значением которого является объект нижнего уровня. Ссылка на объект осуществляется по имени, заданному параметром NAME тэга HTML.

    Фамилия:

    Курс:

    Для получения фамилии студента, введенного в первом поле ввода, в программе JavaScript следует использовать ссылку document.form1.studentName.value, а чтобы определить курс, на котором обучается студент, необходимо использовать ссылку document.form1.course.value.

    Омский Государственный Педагогический Университет

    Кафедра информатики

    курсовая работа

    Сравнительный анализ языков программирования JavaScript и VBScript

    Проверил: Кирьякова И.В.

    Выполнил: Поросков Д.В.

    Группа: 34

    Введение ….3

    Общий обзор языка …4

    Типы данных …5

    Переменные …8

    Операторы …10

    Операторы управления …13

    Процедуры …19

    Объекты …21

    Список литературы …24

    Введение

    Объектные модели языков сценариев тесно связаны с тэгами HTML. При загрузке

    страницы HTML в браузер интерпретатор языка создает объекты со свойствами,

    определенными значениями тэгов страницы. Говорят, что браузер отражает HTML-

    страницу в свойствах объектов, и иногда этот процесс называют отражением

    (reflection). Созданные объекты существуют в виде иерархической структуры,

    отражающей структуру самой HTML-страницы. На верхнем уровне расположен

    объект window, представляющий собой активное окно браузера. Далее вниз по

    иерархической лестнице следуют объекты frame, document, location и history,

    представляющие соответственно фрейм, непосредственно сам документ, адрес

    загружаемого документа и список ранее загружавшихся документов, и т.д.

    Значения свойств объектов отражают значения соответствующих параметров

    тэгов страницы или установленных системных параметров.

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

    браузер компонует страницы и, тем самым, создает иерархия объектов. При

    загрузке страницы просматриваются сверху вниз, тем самым последовательно

    происходит компоновка страницы и ее отображение в окне браузера. А это

    означает, что и объектная модель страницы также формируется

    последовательно, по мере ее обработки. Поэтому невозможно обратится из

    сценария, расположенного ранее какой-либо формы на странице, к элементам

    этой формы. Всегда следует помнить о том, что браузер последовательно

    сверху вниз интерпретирует содержимое HTML-страницы.

    Еще один аспект работы с объектами языков сценариев заключается в том, что

    нельзя изменить свойства объектов. Браузер обрабатывает страницу только

    один раз, компонуя и отображая ее. Поэтому попытка в сценарии изменить

    свойство отображенного элемента страницы, обречена на провал. Только

    Общий обзор языка

    Язык программирования JavaScript разработан фирмой Netscape для создания

    интерактивных HTML-документов. Это объектно-ориентированный язык разработки

    встраиваемых приложений, выполняющих как на стороне клиента, так и на

    стороне сервера. Синтаксис языка очень похож на синтаксис языка Java –

    поэтому его часто называют Java-подобным. Клиентские приложения выполняются

    браузером просмотра Web-документов на машине пользователя, серверные

    приложения выполняются на сервере.

    При разработке обоих типов приложений используется общий компонент языка,

    называемый ядром и включающий определения стандартных объектов и

    конструкций (переменные, функции, основные объекты и средство LiveConnect

    взаимодействия с Java-апплетами), и соответствующие компоненты дополнений

    объектов.

    Клиентские приложения непосредственно встраиваются в HTML-страницы и

    интерпретируются браузером по мере отображения частей документа в его окне.

    Серверные приложения для увеличения производительности предварительно

    компилируются в промежуточный байт-код.

    Основные области использования языка JavaScript при создании интерактивных

    HTML-страниц:

    Динамическое создание документа с помощью сценария

    Оперативная проверка достоверности заполняемых пользователем полей форм

    HTML до передачи их на сервер

    Создание динамических HTML-страниц совместно с каскадными таблицами

    стилей и объектной моделью документа

    Взаимодействие с пользователем при решении “локальных” задач, решаемых

    приложением JavaScript, встроенном в HTML-страницу

    Язык создания сценариев VBScript разработан фирмой Microsoft и является

    подмножеством достаточно распространенного в среде программистов языка

    Visual Basic разработки прикладных Windows-приложений. Как и его родитель,

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

    Преимуществом его применения для создания сценариев является возможность

    использования, с небольшими корректировками, ранее написанных процедур на

    языках Visual Basic и Visual Basic for Application.

    Функциональные возможности сценариев, написанных на VBScript, ничем не

    отличаются от возможностей сценариев JavaScript: динамическое создание

    документа или его частей, перехват и обработка событий и т.д.

    VBScript используется для написания сценариев клиента (в этом случае

    браузер должен иметь встроенный интерпретатор этого языка), а также для

    написания сценариев на сервере (в этом случае сервер должен поддерживать

    язык VBScript). Для создания сценариев клиента используется набор объектов,

    аналогичный набору объектов JavaScript. Объекты клиента и сервера

    отличаются друг от друга, но существует общая часть (ядро) объектов,

    используемых при разработке как сценариев клиента, так и сценариев сервера.

    Типы данных

    Как и любой другой язык программирования, JavaScript использует переменные

    для хранения данных определенного типа. Реализация JavaScript является

    примером языка свободного использования типов. В нем не обязательно

    задавать тип переменной. Ее тип зависит от типа хранимых в ней данных,

    причем при изменении типа данных меняется и тип переменной.

    JavaScript поддерживает четыре простых типа данных:

    Вещественный

    Строковый

    Булевый, или логический

    Для присваивания переменным значений основных типов применяются литералы –

    буквенные значения данных соответствующих типов.

    Целые литералы являются последовательностью цифр и представляют обычные

    целые числа со знаком или без знака:

    123 // целое положительное число

    123 // целое отрицательное число

    123 // целое положительное число

    Для задания вещественных литералов используется синтаксис чисел с

    десятичной точкой, отделяющей дробную часть числа от целой, или запись

    вещественных чисел в научной нотации с указанием после символа “e” или “E”

    порядка числа. Пример правильных вещественных чисел:

    1.25 0.125e01 12.5E-1 0.0125E+2

    Строковый литерал – последовательность алфавитно-цифровых символов,

    заключенная в одинарные (‘) или двойные кавычки (“), например: “Ира”,

    ‘ИРА’. При задании строковых переменных нельзя смешивать одинарные и

    двойные кавычки. Недопустимо задавать строку, например, в виде “Ира’.

    Двойные кавычки – это один самостоятельный символ, а не последовательность

    двух символов одинарных кавычек. Если в строке нужно использовать символ

    кавычек, то строковый литерал необходимо заключать в кавычки

    противоположного вида:

    “It’s a string” // Значение строки равно It’s a string

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

    обработки ситуаций да/нет в операторах сравнения.

    В VBScript определен только один тип данных – Variant. Это универсальный

    тип, в котором можно хранить информацию, предоставленную другими типами

    данных, применяемыми в программировании, начиная от простейшего целого и

    заканчивая объектами.

    В своем простейшем использовании тип Variant содержит либо числовые данные,

    либо символьные строки – типы данных, наиболее часто встречаемые при

    написании сценария. Реально содержащиеся в вариантом типе данные могут быть

    одного из типов, называемых подтипами типа Variant, представленных в

    Таблица 1. Подтипы данных, хранящихся в типе Variant

    |Подтип |Описание |Функция |

    | | |преобразовани|

    |Empty |Переменная не инициализирована | |

    |Null |Переменная не содержит никаких допустимых | |

    | |данных | |

    |Error |Содержит номер ошибки | |

    |Boolean |Содержит значения либо True, либо False |CBool |

    |Byte |Содержит целые числа в диапазоне от 0 до 255 |CByte |

    |Integer |Содержит целые числа в диапазоне от -32 768 до |CInt |

    |Currency |Значения в диапазоне |CCur |

    | |от -922 337 203 685 477.5808 до | |

    | |922 337 203 685 477.5807 | |

    |Long |Содержит целые числа в диапазоне |CLng |

    | |от -2 147 483 648 до 2 147 483 647 | |

    |Single |Содержит вещественные числа с плавающей точкой |CSng |

    | |одинарной точности в диапазоне | |

    | |от -3.402823E38 до -1.401298E-45 | |

    | |и от 1.401298E-45 до 3.402823E38 | |

    |Double |Содержит вещественные числа с плавающей точкой |CDbl |

    | |удвоенной точности в диапазоне | |

    | |от -1.79769313486232E308 до | |

    | |-4.94065645841247E-324 | |

    | |для отрицательных значений | |

    | |и от 4.94065645841247E-324 до | |

    | |1.79769313486232E308 | |

    | |для положительных значений | |

    |Date(Time)|Содержит число, которое представляет дату в |CDate |

    | |9999 года | |

    |String |Содержит строку переменной длины (до 2 |CStr |

    | |миллионов символов) | |

    Первые три подтипа, собственно говоря, не являются подтипами, а

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

    Значение Empty имеет переменная, которая была объявлена в операторе Dim

    (см. ниже), но ей еще не присваивали никакого значения. Это значение

    считается равным 0 в математических операциях и равным пустой строке (“”) в

    операциях со строковыми значениями.

    Значение Null означает, что переменная не содержит данных. Его не следует

    путать со значением Empty. Вариантная переменная может получить значение

    Null в результате выполнения некоторых операций над ней. Это значение можно

    присвоить переменной, тогда как значение Empty – нельзя.

    Значение Error – это специальное значение, которое используется для

    указания возникновения ошибки в процедуре.

    Каждый подтип данных задается с помощью литералов. Числовые литералы

    представляют собой целые числа, действительные числа с плавающей или

    фиксированной точкой. Примеры числовых литералов приведены ниже:

    23 ‘Целое число

    23.78 ‘Действительное число с фиксированной точкой

    237.8E-1 ‘Действительное число с плавающей точкой

    Строковые литералы задаются в виде последовательности символов, заключенных

    в двойные кавычки (“):

    “Это строковый литерал”.

    Литералы даты и времени заключаются между символами числовых знаков (#).

    VBScript поддерживает большое число форматов даты и времени. Следующие

    примеры показывают правильные литералы даты и времени, соответствующие дате

    #10/6/99 10:20pm#

    Внутренне литералы даты и времени представляются в виде действительных

    чисел удвоенной точности. Целая часть представляет количество дней,

    Булевы литералы True и False являются константами целого типа, принимающими

    соответственно значения 1 и 0. Любое числовое значение, не равное нулю,

    преобразуется функцией CBool в True, а нулевое значение (целое или

    действительное) – в False.

    Вариантный тип данных при использовании в выражениях в качестве операндов

    разнообразных операторов языка обрабатывается в зависимости от подтипа

    типа данных в операторе сложения (+) результат зависит от того, какие

    подтипы данных в них содержатся. Если хотя бы один из операндов содержит

    число, то результат будет сумма значений двух переменных (содержимое

    второго операнда преобразуется к числовому подтипу), если оба операнда

    Вариативный тип данных предоставляет программисту более эффективный способ

    обработки и хранения данных, не заботясь о типе хранимых данных. Если,

    например, при вычислениях первоначально в переменной вариантного типа

    хранилось значение типа Byte (число в диапазоне от 0 до 255), и в

    результате выполнения некоторых действий это значение стало отрицательным,

    то просто изменится представление этого числа в переменной (оно станет

    Integer) и не возникает никакой ошибки. Правда, за это удобство приходится

    платить используемой памятью: для вариантного типа данных вне зависимости

    от хранимого подтипа нужно 16 байт памяти.

    Иногда в некоторых вычислениях необходимо явно преобразовать содержащийся в

    переменной подтип в другой. Для этого в VBScript имеется ряд функций

    преобразования в соответствующие типы. В табл. 1 последний столбец содержит

    имена функций преобразования в соответствующий подтип. Эти функции в

    качестве параметра принимают литералы, переменные и выражения.

    Переменные

    Каждая переменная имеет имя, которое должно начинаться с буквы латинского

    алфавита, либо символа подчеркивания “_”, за которым следует любая

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

    Следующие имена являются допустимыми именами переменных

    Язык JavaScript чувствителен к регистру. Это означает, что строчные и

    прописные буквы алфавита считаются разными символами.

    Определить переменную можно двумя способами:

    Оператором var

    Оператором присваивания (=)

    Оператор var используется как для задания, так и для инициализации

    переменной и имеет синтаксис:

    var имя_переменной [= начальное_значение];

    Необязательный оператор присваивания задает данные, которые содержит

    переменная. Их тип определяет и тип переменной. Например, следующий

    оператор

    var weekDay = “Пятница”;

    задает переменную weekDay, присваивает ей строковое значение “Пятница”, и

    тем самым определяет ее тип как строковый.

    Если при определении переменной ей не присвоено никакого значения, то ее

    тип не определен. Ее тип будет определен только после того, как ей будет

    присвоено некоторое значение оператором присваивания =.

    Переменные используются для хранения данных приложения. Прежде чем

    переменную можно будет использовать, ее необходимо объявить. Это можно

    осуществить явным способом с помощью оператора Dim, или неявным – просто

    использовать имя переменной в операторе присваивания. Синтаксис оператора

    явного объявления переменной следующий:

    Dim имя_переменной

    Параметр имя_переменной – имя объявляемой переменной. Оно должно начинаться

    с буквы, не содержать пробелов, точку (.), восклицательный знак (!), а

    также символов (@), (&), ($), (#) и не превышать длину в 255 символов.

    Язык VBScript не чувствителен к регистру. Это означает, что в нем не

    различаются строчные и прописные буквы. Поэтому, например, и m, и M будут

    ссылаться на одну и ту же переменную, если используются в качестве

    идентификатора переменной.

    Иногда в программе необходимо задавать переменные, значения которых нельзя

    изменять. Такие переменные называются именованными константами. В VBScript

    для задания констант существует оператор Const, имеющий следующий

    синтаксис:

    Const conName = “Дмитрий” ‘Строковая константа

    Const conPi = 3.1416 ‘Числовая константа

    Const conBirthDay = #1-8-53# ‘Константа даты

    Операторы

    Оператор присваивания рассматривается как выражение присваивания, которое

    вычисляется равным выражению правой части, и в то же время он присваивает

    вычисленное значение выражения переменной, заданное в левой части

    оператора.

    Арифметические выражения создаются арифметическими операторами (табл. 2).

    Таблица 2. Арифметические операторы

    |Оператор |Название |

    |+ |Сложение |

    |- |Вычитание |

    |* |Умножение |

    |/ |Деление |

    |% |Остаток от деления целых чисел |

    |++ |Увеличение значения переменной на единицу |

    |-- |Уменьшение значения переменной на единицу |

    Кроме простого оператора присваивания (=) существуют сокращенные формы

    операторов присваивания, совмещенных с арифметическими операторами, в

    которых производятся арифметические действия над левыми и правыми

    операндами и результат присваивается переменной, заданной левым операндом.

    Все они перечислены в табл. 3.

    Таблица 3. Сокращенные операторы присваивания

    |Оператор |Значение |

    |X * = Y |X = X * Y |

    |X / = Y |X = X / Y |

    |X + = Y |X = X + Y |

    |X - = Y |X = X – Y |

    |X % = Y |X = X % Y |

    Для создания логических выражений используются операторы сравнения и

    логические операторы, применяемые к переменным любого типа.

    Операторы сравнения аналогичны таковым в других языках программирования. Их

    список представлен в табл. 4.

    Таблица 4. Операторы сравнения

    |Оператор |Название |

    |== |Равно |

    |!= |Не равно |

    |>= |Больше или равно |

    | |Строго больше |

    При использовании этих операторов в выражении оно вычисляется равным true,

    если соответствующее сравнение верно, в противном случае значение выражения

    равно false.

    Логические операторы представлены в табл. 5. В примерах предполагается, что

    переменная var1 = ‘Кит’, var2 = ‘Кот’, var3 = false.

    Таблица 5. Логические операторы

    |Оператор |Синтаксис |Описание |Пример |

    |&& (логическое |выраж1 && |Возвращает выраж1, если |var1 && var2 |

    |И) |выраж2 |оно преобразуется или |(равно ‘Кот’)|

    | | |равно false, иначе | |

    | | |выраж2 |var2 && var3 |

    | | | |(равно false)|

    ||| (логическое |выраж1 || |Возвращает выраж1, если |var1 || var2 |

    |ИЛИ) |выраж2 |оно преобразуется или | |

    | | |равно true, иначе выраж2|(равно ‘Кит’)|

    | | | |var3 || var1 |

    | | | |(равно ‘Кит’)|

    | | | |var3 || false|

    | | | |(равно false)|

    |! (логическое |!выраж |Если выраж равно true, |!var1 |

    |НЕ) | |возвращает false; если |(равно false)|

    | | |выраж равно false, | |

    | | |возвращает true |!var3 |

    | | | |(равно true) |

    Логические операторы и операторы сравнения используются в операторах цикла

    и условия для проверки завершения цикла или выполнения определенной группы

    операторов.

    Строковые операторы используются для создания строковых выражений. В

    JavaScript, собственно говоря, существует только один строковый оператор –

    оператор конкатенации (соединения) строк (+), если не считать сокращенной

    формы оператора присваивания со сложением (+=). Этот оператор присоединяет

    к строковому значению первого операнда строковое значение второго, получая

    результат, равный соединению строк:

    string = “Моя”+”строка”; // Значение переменной string равно “Моястрока”

    Условный оператор является единственным оператором, использующим три

    операнда. Его значением является один из двух операндов, определяемый из

    условия истинности третьего. Его синтаксис таков:

    (условие) ? знач1: знач2;

    Если операнд условие имеет значение true, то результатом вычисления

    оператор

    range = (mark), меньше (), меньше или равно (=). Объекты сравниваются с помощью специального оператора Is.

    В VBScript нет специального знака для операции присваивания. Один и тот же

    знака равенства используется как для операции присваивания значения

    переменной (см. выше), так и для операции сравнения на равенство. Смысл

    операции, представляемой этим символом, зависит от контекста, в котором она

    применена.

    Существует ряд операторов, выполняющих действия над логическими (булевыми)

    данными: отрицание (Not), конъюнкция (And), дизъюнкция (Or), исключающее

    ИЛИ (Xor), эквивалентность (Eqv) и импликация (Imp).

    Оператор (&) производит конкатенацию (соединение) двух строк. При его

    выполнении данные, содержащиеся в операндах, преобразуются при

    необходимости к строковому подтипу, и осуществляется сцепление двух строк.

    Операторы управления

    Весь набор управления языка можно разбить на три группы:

    Операторы выбора, или условные

    Операторы цикла

    Операторы манипулирования с объектами

    Операторы выбора

    К этой группе операторов относятся операторы, которые выполняют

    определенные блоки операторов в зависимости от истинности некоторого

    булевского выражения. Этот оператор условия if…else и переключатель switch.

    Оператор условия if применяется, если необходимо вычислить некоторый блок

    операторов в зависимости от истинности заданного условия, и имеет следующий

    синтаксис:

    if (условие) {

    операторы1

    операторы2

    Первая группа операторов операторы1 выполняется при условии истинности

    выражения условие. Необязательный блок else задает группу операторов

    операторы2, которая будет выполнена в случае ложности условия, заданного в

    Внутри группы выполняемых операторов могут использоваться любые операторы

    JavaScript, в том числе и операторы условия. Таким образом, можно создавать

    группу вложенных операторов условия и реализовывать сложные алгоритмы

    проверки.

    В операторе switch вычисляется одно выражение и сравнивается со значениями,

    заданными в блоках case. В случае совпадения выполняются операторы

    соответствующего блока case. Синтаксис этого оператора следующий:

    switch (выражение) {

    case значение1:

    [операторы1]

    case значение2:

    [операторы2]

    [операторы]

    Если значение выражения в блоке switch равно значение1, то выполняется

    группа операторов операторы1, если равно значение2, то выполняется группа

    операторов оператары2 и т.д. Если значение выражения не равняется ни одному

    из значений, заданных в блоках case, то вычисляется группа операторов блока

    default, если этот блок задан, иначе происходит выход из оператора switch.

    Необязательный оператор break, задаваемый в каждом из блоков case,

    выполняет безусловный выход из оператора switch. Если он не задан, то

    продолжается выполнение операторов в следующих блоках case до первого

    оператора break или до конца тела оператора switch.

    Операторы цикла

    Оператор цикла повторно выполняет последовательность операторов JavaScript,

    определенных в его теле, пока не выполнится некоторое заданное условие. В

    языке существует два оператора цикла: for и while. Они отличаются

    механизмом организации цикла.

    Оператор цикла for позволяет организовать выполнение блока операторов

    заданное число раз. Он определяет переменную, называемую переменной цикла,

    которая изменяет свое значение во время выполнения цикла. Условие

    завершения цикла зависит от значения этой переменной. Оператор имеет

    следующий синтаксис:

    for ([инициал_выражение];[условие];[изменяющее_выражение]) {

    [операторы]

    Параметром инициал_выражение задается и инициализируется переменная цикла.

    Это выражение вычисляется один раз в начале выполнения цикла. После этого

    проверяется истинность выражения условие. Если оно истинно, то выполняется

    блок операторов тела цикла, ограниченного фигурными скобками; вычисляется

    изменяющее_выражение, содержащее переменную цикла, и снова проверяется

    истинность выражения условие. Если оно истинно, то повторяется цикл

    вычислений, если нет, то оператор цикла завершает свое выполнение.

    Цикл while выполняется пока истинно выражение, задающее условие выполнения

    цикла. Его синтаксис следующий:

    while (условие) {

    [операторы]

    Сначала проверяется истинность условия, заданного в заголовке цикла, а

    затем выполняются (или не выполняются) операторы тела цикла. Проверка

    истинности условия осуществляется на каждом шаге цикла. Использование этого

    цикла предполагает, что условное выражение окончания цикла меняется в

    зависимости от вычисленных значений переменных и выражений в теле цикла.

    Иногда необходимо завершить цикл не по условию, задаваемому в заголовке

    цикла, а в результате вычисления некоторого условия в теле цикла. Для этой

    цели в JavaScript существуют операторы break и continue.

    Оператор break завершает выполнение цикла и передает управление оператору,

    непосредственно следующим за оператором цикла. Оператор continue прекращает

    выполнение текущей итерации и начинает выполнение следующей, т.е. в цикле

    while он передает управление на проверку выражения условие цикла, а в цикле

    for – на вычисление выражения изменяющее_выражение.

    Манипулирование объектами

    Четыре оператора JavaScript предназначены для работы с объектами. Это

    оператор new, создающий новый объект, операторы for…in и with и ключевое

    слово this.

    Оператор for…in позволяет организовать цикл по свойствам объекта

    JavaScript. Синтаксис его следующий:

    for (переменная_цикла in объект) {

    [операторы]

    Этот цикл производит перебор свойств объекта. В переменной цикла на каждой

    итерации сохраняется значение свойства объекта. Количество итераций равно

    количеству свойств, существующих у заданного в заголовке цикла объекта.

    Оператор with задает объект по умолчанию для блока операторов, определенных

    в его теле. Это означает, что все встречаемые в операторах этого блока

    свойства и методы, являются свойствами и методами указанного объекта.

    Применение данного оператора избавляет от необходимости указывать иерархию

    принадлежности объекта и сокращает исходный текст программы.

    Операторы сценария выполняются последовательно в том порядке, как они

    записаны. Изменить порядок выполнения операторов в VBScript можно

    операторами условия и цикла.

    Операторы условия

    Операторы принятия решения (условные операторы) выполняют определенные

    блоки операторов в зависимости от результатов проверки некоторого выражения

    или выражений. VBScript поддерживает следующие конструкции операторов

    принятия решения:

    If…then…else

    Конструкция if…then применяется, когда необходимо выполнить группу

    операторов или один оператор в зависимости от значения выражения,

    задаваемого в качестве параметра условия конструкции.

    Ее первая форма

    if условие then оператор

    позволяет вычислить указанный оператор, если истинно заданное условие.

    Вторая форма этой конструкции позволяет вычислить группу операторов,

    заданных в нескольких строках кода, и имеет следующий синтаксис:

    if условие then

    операторы

    Наиболее общий синтаксис конструкции if…then…else следующий:

    if условие1 then

    [группа-операторов-1]

    [группа-операторов-n]]

    Сначала проверяется условие1. Если оно ложно, то проверяется условие2. Если

    и оно ложно, то проверяется следующее условие из группы elseIf до тех пор,

    пока не будет найдено истинное условие, операторы которого и выполняются.

    После чего управление передается оператору, непосредственно следующему за

    оператором end if.

    Если не найдено ни одно истинное условие, то выполняется группа операторов

    из блока else, если он присутствует в конструкции. В противном случае

    управление передается оператору, следующему за оператором end if.

    Блоков elseIf в конструкции if…then…else может быть сколько угодно, тогда

    как блок else всегда один, если он задан.

    Если в предыдущей конструкции принятия решения проверяется равенство одного

    выражения разным условиям, она становится не достаточно эффективной как с

    точки зрения ее выполнения, так и сточки зрения легкости восприятия текста.

    В этом случае следует использовать конструкцию select case:

    select case тестируемое_выражение

    [группа-операторов-n]]

    Вычисляется единственное выражение тестируемое_выражение и последовательно

    сравнивается со значениями из списка значений блоков case. Если значение

    выражения совпадает со значением, заданным в списке какого-либо блока case,

    то выполняется группа операторов данного блока, и после этого управление

    передается оператору, непосредственно следующему за оператором end select.

    Если не найдено ни одного соответствия значения тестируемого выражения со

    значениями из списков значений, то выполняется группа операторов блока case

    else (в случае его наличия).

    Список значений блока case может состоять из одного или нескольких

    значений. В случае нескольких значений они разделяются запятыми.

    Операторы цикла

    Для повторного выполнения несколько раз группы операторов VBScript, как и

    любой другой язык программирования, предоставляет разнообразные типы

    операторов цикла:

    For each…next

    Конструкция do…loop применяется для выполнения группы операторов, пока

    некоторое выражение ложно или истинно. Она имеет несколько разновидностей,

    отличающихся моментом проверки условия завершения цикла (до начала

    выполнения группы операторов или после) и тем, истинно или ложно это

    Цикл do while выполняется до тех пор, пока истинно условие окончания цикла:

    do while условие_окончания

    группа-операторов

    Перед выполнением операторов цикла проверяется, истинно ли выражение

    условие_окончания. Если оно истинно, то выполняется группа-операторов (в

    ней изменяются значения переменных, входящих в выражение

    условие_окончания). После этого снова проверяется условие окончания цикла

    и, в случае его истинности, выполняется группа операторов тела цикла.

    Процедура выполняется до тех пор, пока выражение условие_окончания не

    станет ложным.

    Цикл do while не будет выполнен ни разу, если при первой проверке

    условие_окончания ложно.

    Другая разновидность цикла do while сначала выполняет группу операторов, а

    потом проверяет условие окончания цикла:

    группа-операторов

    loop while условие_окончания

    Этот цикл обязательно выполнит один раз группу операторов, определенных в

    теле цикла.

    Цикл do until аналогичен первой разновидности цикла do while, за

    исключением того, что он выполняется, пока значение выражения

    условие_окончания ложно:

    do until условие_окончания

    группа-операторов

    Этот цикл также может не выполниться ни одного раза, если при первой же

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

    Во второй разновидности цикла do until условие окончания завершения цикла

    проверяется после выполнения группы операторов, и, таким образом, он

    обязательно выполнится хотя бы один раз:

    группа-операторов

    loop until условие_окончания

    В циклах do…loop заранее не известно количество итераций повторения группы

    операторов, но иногда требуется выполнить точно заданное число повторений

    цикла. Такую возможность предоставляет цикл for…next.

    В этом цикле задается переменная, называемая счетчиком цикла, которая

    увеличивается (или уменьшается) на заданную величину после выполнения

    группы операторов. Цикл завершает свои итерации, когда значение счетчика

    превысит (или станет меньше) заданной величины. Синтаксис такой конструкции

    цикла следующий:

    for счетчик = нач_значение to кон_значение

    операторы

    В начале выполнения этого цикла переменной счетчик присваивается значение,

    заданное параметром нач_значение. Выполняются операторы цикла, и значение

    переменной цикла увеличивается или уменьшается (в зависимости от знака) на

    величину приращение. Осуществляется проверка, не превысило ли (или не стало

    меньше) новое значение счетчика значение параметра кон_значение. Если нет,

    то итерации повторяются, если да, то цикл завершает свое выполнение.

    Параметр приращение цикла for…next является необязательным. Если он не

    задан, то по умолчанию переменная цикла увеличивается на 1.

    Конструкция for each…next позволяет организовать цикл по элементам массива

    или по объектам некоторого набора (семейства) объектов, не зная заранее

    число элементов в массиве или число объектов в наборе. Синтаксис этой

    конструкции следующий:

    for each элемент in группа

    операторы

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

    элемент на каждом шаге цикла будет содержать ссылку на элемент массива или

    объект набора. Цикл завершает свое выполнение, как только завершится

    последовательный перебор всех элементов массива или объектов набора.

    Процедуры

    Процедура, или функция, – это именованная последовательность операторов,

    которая инициализируется и выполняется простой ссылкой на имя функции.

    Процедура задается оператором function, имеющим следующий синтаксис:

    function имя_функции ([параметры] {

    [операторы]

    где имя_функции – любое правильное имя языка JavaScript, параметры – список

    передаваемых в процедуру параметров, элементы которого отделяются запятыми.

    Оператор function только определяет процедуру, но не выполняет ее. Для

    вызова процедуры достаточно указать ее имя с заданными в скобках

    параметрами.

    Если в процедуре параметры отсутствуют, наличие скобок без параметров в

    операторе вызова процедуры обязательно.

    Процедура может возвращать некоторое вычисляемое в ней значение. В этом

    случае обычно она называется функцией, и в операторах, определяющих

    последовательность выполняемых ею действий, обязательно должен

    присутствовать оператор return, задающий возвращаемое функцией значение.

    Вызов функции осуществляется аналогично вызову процедуры, но ее можно

    использовать в выражениях JavaScript.

    Обычно все определения процедур и функции задаются в разделе

    документа. Это обеспечивает интерпретацию и сохранение в памяти всех

    процедур при загрузке документа в браузер.

    VBScript предусматривает создание двух типов процедур:

    Процедура sub

    Процедура function (или функция)

    Процедура sub выполняет последовательность действий, но не возвращает

    никакого, значения, ассоциированного с ее именем. Она имеет следующий

    синтаксис:

    sub имя_процедуры ([список-параметров])

    операторы

    Через необязательный параметр можно передать в процедуру внешние данные

    или, наоборот, получить некоторые вычисленные ею значения.

    Вызов процедуры sub осуществляется оператором call, после которого

    указывается имя процедуры и в круглых скобках параметры. Процедуру можно

    вызвать и простым указанием ее имени, но в этом случае передаваемые ей

    параметры задаются без скобок. Следующие два способа вызова процедуры

    эквивалентны:

    call MyProc(firstarg, secondarg)

    MyProc firstarg, secondarg

    Функция также выполняет определенную последовательность операторов и ей

    можно передать внешние данные через параметры процедуры, но, в отличие от

    процедуры sub, она возвращает значение, присваиваемое ее имени, и может

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

    function имя_процедуры ([список-параметров])

    операторы

    имя_процедуры = значение

    В операторах процедуры обязательно должен присутствовать оператор

    присвоения имени процедуры некоторого значения.

    VBScript предоставляет два способа передачи параметров в процедуру:

    По значению

    фактический адрес переменной, используемой в качестве параметра. Это

    позволяет изменить содержимое соответствующего адреса памяти, а тем самым,

    и значение переменной.

    Передача параметров по значению предполагает передачу в процедуру копии

    переменной, а не адреса самой переменной. Поэтому любые изменения параметра

    внутри процедуры воздействуют на копию, а не на саму переменную, и,

    следовательно, значение переменной, переданной в качестве параметра,

    изменяться не будет. Для указания интерпретатору, что параметр передается в

    процедуру по значению, используется ключевое слово ByVal, задаваемое перед

    параметром в описании процедуры.

    На самом верхнем уровне иерархии находится объект window, представляющий

    окно браузера и являющийся “родителем” всех остальных объектов.

    Расположенные ниже в иерархии объекты могут иметь свои подчиненные объекты.

    На рис. 1 показана структура объектов клиента (браузера).

    Рис. 1. Иерархия объектов JavaScript на стороне клиента

    Особняком стоит объект navigator с двумя дочерними (подчиненными)

    объектами. Он относится к самому браузеру, и его свойства позволяют

    определить характеристики программы просмотра.

    Каждая страница в добавление к объекту navigator обязательно имеет еще

    четыре объекта:

    Window – объект верхнего уровня, свойства которого применяются ко всему

    окну, в котором отображается документ.

    Document – свойства которого определяются содержимым самого документа:

    связи, цвет фона, формы и т.д.

    Location – свойства которого связаны с URL-адресом отображаемого

    документа.

    History – представляет адреса ранее загружавшихся HTML-страниц.

    Кроме указанных объектов страница может иметь дополнительные объекты,

    зависящие от ее содержимого, которые являются дочерними объектами объекта

    document. Если на страницы расположена форма, то все ее элементы являются

    дочерними объектами этой формы. Для задания точного имени объекта

    используется точечная нотация с полным указанием всей цепочки наследования

    объекта. Это возможно, так как объект верхнего уровня имеет свойство,

    значением которого является объект нижнего уровня. Ссылка на объект

    осуществляется по имени, заданному параметром NAME тэга HTML.

    Для получения фамилии студента, введенного в первом поле ввода, в программе

    чтобы определить курс, на котором обучается студент, необходимо

    Во главе иерархии, как и в случае с Netscape Navigator, стоит объект

    window, представляющий окно браузера и порождающий все остальные объекты

    указывать “родительский” объект window.

    Модель охватывает практически все элементы HTML-страницы. На рис. 2

    показана иерархическая структура объектной модели, которая отражает

    подчиненность элементов страницы.

    Рис. 2. Объектная модель MS Internet Explorer

    Для каждого типа элементов в модели предусмотрены соответствующие наборы.

    Например, для объектов image, определяемых тэгами , существует набор

    имени объекта, задаваемого значением параметра NAME, или с помощью набора

    объектов, в данном случае images. В наборе объекты расположены в

    последовательности, в которой они задаются на HTML-странице.

    Список литературы

    1. Матросов А.В., Сергеев А.О, Чаунин М.П. HTML 4.0. – СПб.: БХВ-

    Петербург, 2000.

    2. Кенин А.М., Печенкина Н.С. Новый уровень создания HTML-документов. –

    Екатеринбург: Деловая книга, 1996.

    3. Дэвис С. Языки JavaScript и VBScript. – К.: Диалектика, 1996.

    4. Микляев А. Основы HTML. – М.: Солон, 1998.

    5. Зубкова С.В. Интерактивные Web-документы. – М.: ДМК Пресс, 2000.

    6. Ратбон Э. JavaScript для чайников. – К.: Диалектика, 1995.

    7. Ставровский А.Б. Учебник по VBScript. – K.: BHV, 2000.