Главная страница
Настоящая web-страница опровергает распространённое мнение,
что HTML - не язык программирования.
Благодаря сценарию на VBScript настоящая страница
	может использоваться
для автоматического (без участия преподавателя-человека) обучения
	и показывает принципиальную возможность написания на HTML
программы-репетитора, которая бы
генерировала для ученика задания,
проверяла их выполнение,
при слишком большом числе безуспешных попыток ответить давала подсказки,
выставляла ученику оценки,
хвалила, ободряла или порицала его.

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

1) Как и в VBA, в VBScript
применяются процедуры Sub и процедуры-функции.

2) Однако, если в VBA вне процедур
могут быть только "описания" (например, объявление глобальных переменных),
а каждое "действие" должно быть описано в процедуре,
	то в VBScript описание "действия" может
не входить ни в какую процедуру.
	Например, в сценарии настоящей web-страницы
вне процедур описаны 4 "действия":
• вычисление значения выражения
и присвоение вычисленного значения глобальной переменной G.
• вычисление значения выражения
и присвоение вычисленного значения глобальной переменной G2.
• вывод на экран значения G, знака +, значения G2 и знака =.
• присвоение ноля глобальной переменной GG.
	Внепроцедурный программный код в VBScript
аналогичен макросу Document_Open в VBA,
так как выполняется
при открытии или обновлении (при нажатии кнопки Обновить)
web-страницы.

3) Как и в VBA, в VBScript
есть встроенная переменная Timer
(показывающая число секунд после полуночи).

4) Как и в VBA, в VBScript
есть операция mod вычисления остатка от деления.

5) Document.Writeln - аналог Selection.Typetext,
но ведёт себя очень капризно.

6) В отличие от VBA, в VBScript
в заголовке макроса (процедуры без аргументов)
можно выпустить пустые скобки.

7) В VBScript сохраняются некоторые встроенные константы VBA,
например vbCrLf.

8) Возможно,
On Error Resume Next - единственный в VBScript оператор обработки ошибок.
По крайней мере, мои многочисленные попытки использовать On Error GoTo mark
оказались безуспешными.
	Однако и On Error Resume Next в VBScript ведёт себя капризно:
попробуйте в макросе Sum_onClick
Answer m
заменить на
код процедуры Answer (заменив R на m)
- сценарий перестанет правильно реагировать
на введение некорректного ответа.

9) В отличие от VBA, в VBScript
нельзя использовать оператор Exit Sub.

10) В отличие от VBA, в VBScript
нет встроенной функции Iif.

11) В отличие от VBA, в VBScript
нет встроенной функции IsNumeric.

12) Как и в VBA, в VBScript
процедуры могут иметь аргументы.

13) В отличие от VBA, в VBScript
имя процедуры, переменной или константы
не может содержать ни одной русской буквы.
	Возникает проблема различения имён процедур и переменных:
в VBA можно
имена процедур начинать с русской буквы,
а имена переменных - с латинской.
	Я предлагаю следующую систему:
• Имена глобальных переменных и констант начинать с G.
• Имена аргументов процедур с V или R
(с V - напоминающей о ByVal,
- если процедура не может изменить значение аргумента,
и с R - напоминающей о ByRef,
- если процедура может изменить значение аргумента).
• Имя введённой внутри процедуры переменной,
тесно связанной с аргументом этой процедуры,
начинать с Z.
• Имя введённой внутри процедуры переменной,
тесно связанной с глобальной переменной,
начинать с Zg.
• Имя введённой внутри очень большой процедуры переменной,
используемой в малой части этой процедуры (при этом
в другой части этой процедуры может использоваться
фактически другая переменная с тем же именем),
начинать с t.
• Имена остальных переменных (вводимых внутри процедур) 
начинать с D или m
(с D - принимающих только числовые значения,
с m - всех остальных).
Имя Missing зарезервировать для константы
равной неинициализированной переменной.
• Имена процедур
начинать с любой другой буквы,
т.е. с любой латинской буквы кроме G, V, R, Z, T, D, M.
Если содержательное имя процедуры начинается с одной из этих 7 букв,
то следует использовать префикс s.
	Подробнее о моих соображениях о системе наименования
смотрите в моей книге VBA с ноля.


Чтобы появился новый пример,
нажмите кнопку Обновить на панели "Обычные кнопки".
Хостинг от uCoz