СКРИПТОВЫЕ ЯЗЫКИ ПРОГРАММИРОВАНИЯ Лекция 3 преподаватель кафедры ТМСИ Губин Максим Владимирович Введение в VBScript.

Презентация:



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

Тип, имя и значение переменной.. Переменные. В объектно-ориентированных языках программирования, и в частности в языке Visual Basic, переменные играют.
Объектно-ориентированный язык программирования. Переменная - эта поименованная ячейка памяти, хранящая какое-либо одно значение (одно число, один фрагмент.
Тип, имя и значение переменной. В объектно-ориентированных языках программирования переменные играют такую же важную роль, как и в процедурных языках.
«Ветвление» в VB If условие Then Действия End If If условие Then Действия 1 Else Действия 2 End If.
Алфавит и синтаксис языка программирования Visual Basic.
Операторы языка. Арифметические операторы Арифметические операторы Арифметические операторы Арифметические операторы Операторы сравнения Операторы сравнения.
Итак, мы научились проектировать интерфейс программы. Но для полноценной программы этого не достаточно. Нужно написать код программы, который будет манипулировать.
Работу выполнили ученицы 9 «Б» класса Гордеева Татьяна и Шебаршова Рита.
Переменные и операторы УРОК 2. Переменные ПЕРЕМЕННАЯ – ?... контейнер для хранения данных. Переменная имеет имя – это….? последовательность букв, цифр.
Презентация к уроку по информатике и икт (9 класс) на тему: Презентация на тему "Основы Visual Basic"
Click to edit Master title style IDK1011 Основы программирования Синтаксис языка программирования Visual Basic.
Описание переменных в языке Visual Basic Презентацию подготовила учитель информатики МБОУ СОШ 3 г. Светлого Нетесова Н. А.
Дата и время. Диапазон дат, которые доступны в Excel. Мы имеем возможность работать с датами от 1 января 100 года до 31 декабря 9999 года. Если указать.
1 ESC – ВЫХОД НА СЛЕДУЮЩИЙ миэт цко НА ПРЕДЫДУЩИЙ Алфавит языка Турбо-Паскаль: БУКВЫ И ЦИФРЫ 1. Прописные и строчные буквы латинского алфавита: A B C D.
Процедуры и Функции Подпрограмма, задаваемая с помощью ключевого слова Sub (subprogram), называется процедурой, а с помощью ключевого слова Function -
Date: File:System_VBSc_8.1 SIMATIC HMI Siemens AG All rights reserved. SITRAIN Training for Automation and Drives Гибкость.
Описание переменных Dim [WithEvents] имя переменной[([индексы])] [As [New] тип] [, [WithEvents] имя переменной[([индексы])] [As [New] тип]]... Private.
Строки в Pascal
Алфавит и словарь языка Паскаль Учитель информатики Абдулзагирова А.И.
Транксрипт:

СКРИПТОВЫЕ ЯЗЫКИ ПРОГРАММИРОВАНИЯ Лекция 3 преподаватель кафедры ТМСИ Губин Максим Владимирович Введение в VBScript

Синтаксис VBScript VBScript нечувствителен к регистру; для комментарий используется одинарная кавычка (') или команда REM; символьные значения должны заключаться в двойные кавычки; максимальная длина любого имени (переменные, константы, процедуры) символов; начало нового оператора - перевод на новую строку; ограничений на максимальную длину строки нет, несколько операторов в одной строке разделяются двоеточиями: WScript.Echo "Проверка 1" : WScript.Echo "Проверка 2" для удобства чтения можно объединить несколько физических строк в одну логическую при помощи пробела: WScript.Echo "Сообщение пользователю" _ & vUserName используются переменные только одного типа данных - Variant ; в VBScript большие ограничения при работе с библиотеками типов; константы без объявления их в теле скрипта использовать нельзя; некоторые из этих ограничений можно обойти при помощи возможностей XML в файлах *.wsf. 2

Арифметические операторы сложение (+); вычитание (-); умножение (*); деление (/); возведение в степень (^) например: 2^3 = 8; целочисленное деление (\) делит первое число на второе, отбрасывая (не округляя) дробную часть, например, 5\2 = 2; деление по модулю (Mod) делит первое число на второе, возвращая только остаток от деления, например, 5 Mod 2 = 1. 3

Оператор присваивания Let nVar = 10 или nVar = 10 4

Операторы сравнения равенство (=) например, If (nVar = 10); больше, чем (>) и меньше, чем ( 10); больше или равно (>=) и меньше или равно (= 10); не равно () например, If (nVar10); сравнение объектов (Is) – определяет, ссылаются объектные переменные на один и тот же объект или на разные например, If (obj1 is obj2). Операторы сравнения всегда возвращают True (если утверждение истинно) или False (если утверждение ложно). 5

логические операторы And – логическое И, должны быть истинными оба условия; Or – логическое ИЛИ, должно быть истинным хотя бы одно из условий; Not – логическое отрицание, возвращает True, если условие ложно; Xor – логическое исключение, в выражении E1 Xor E2 возвращает True, если только E1 = True или только E2 = True, иначе False; Eqv – эквивалентность двух выражений, возвращает True, если они имеют одинаковое значение; Imp – импликация, E1 Imp E2 возвращает False, если E1 = True и E2 = False, иначе True. 6

Порядок применения операторов арифметические операторы, операторы конкатенации, операторы сравнения, логические. Если в выражении есть несколько операторов одного типа, то они применяются в обычном порядке слева направо. При необходимости можно изменять порядок применения операторов при помощи круглых скобок. При слиянии строковых значений используются: (+) или (&), последнее предпочтительнее например, MsgBox "Сообщение пользователю " & vUserName. 7

Переменные Переменные – это контейнеры для хранения изменяемых данных. Dim nMyAge rem объявление переменной nMyAge = nMyAge + 10 MsgBox nMyAge области видимости переменных: Dim – используется в большинстве случаев. Если переменная объявлена как Dim в области объявлений модуля, то она будет доступна во всем модуле, если в процедуре – только на время работы этой процедуры. Private – при объявлении переменных в стандартных модулях VBScript значит то же, что и Dim. Отличия проявляются только при создании своих классов. Public – такая переменная будет доступна всем процедурам во всех модулях данного проекта, если вы объявили ее в области объявлений модуля. Если вы объявили ее внутри процедуры, она будет вести себя как Dim. 8

Правила выбора имен имя должно начинаться с буквы; не должно содержать пробелов и символов пунктуации (исключение символ подчеркивания); максимальная длина 255 символов; должно быть уникальным в текущей области видимости; зарезервированные слова использовать нельзя. 9

венгерское соглашение имя переменной должно начинаться с префикса, записанного строчными буквами. Префикс указывает, что именно будет храниться в этой переменной: str (или s) String, символьное значение; fn (или f) функция; sub процедура; c (или все буквы имени заглавные) константа; b Boolean, логическое значение (True или False); d дата; obj (или o) ссылка на объект; n числовое значение; имена функций, методов и каждое слово в составном слове должно начинаться с заглавной буквы 10

подтипы данных для типа Variant Byte целое число от 0 до 255; Integer целое число от до ; Long большое целое число от до ; Currency большое десятичное число с 19 позициями, включая 4 позиции после запятой; Decimal еще большее десятичное число с 29 позициями (после занятой можно использовать от 0 до 28 позиций); Single и Double значения с плавающей запятой (Double в 2 раза больше)); строковые (String переменной длины (примерно до 2 млрд. символов) и фиксированной длины (примерно до символов)) дата и время (Date от до ); логический (Boolean может хранить только значения True и False); объектный (Object хранит ссылку на любой объект в памяти); 11

Примеры Dim nVar1, s1 nVar1 = 30 nVar1 = nVar1 + 1 sVar1 = "Hello" значение дата/время заключается в символы "решетка" (#): dVar1 = #05/06/2004# если нужно передать шестнадцатеричное значение, то перед ним ставятся символы (&H): nVar1 = &HFF00 Для передачи восьмеричного значения (что случается намного реже) нужно использовать набор символов (&O). 12

Константы Константы – контейнер для хранения данных, но, в отличие от переменных, они не изменяются в ходе выполнения скрипта. Константы нужны : скрипт становится лучше читаемым, убираются потенциальные ошибки; чтобы изменить какое-либо значение в скрипте (например, уровень налога) – это можно сделать один раз. В VBScript определяются при помощи ключевого слова Const: Const COMP_NAME = Microsoft При попытке в теле скрипта изменить значение константы будет выдано сообщение об ошибке. Некоторые константы встроены в сам язык VBScript (их значения являются зарезервированными словами). примеры: цвет (vbRed), дата/время (vbMonday), формат даты/времени, строковые (непечатаемые символы для управления строковыми значениями) и т.д. Одна из наиболее часто используемых констант - vbCrLf (переход на новую строку, например, в окне сообщения). 13

Массивы Массивы используются для хранения в памяти множества значений. Вместо того, чтобы объявлять множество похожих друг на друга переменных, часто гораздо удобнее воспользоваться массивом. Dim MyArray(2): MyArray(0) = 100 Dim MyArray(4, 9) В VBScript в одном массиве может быть до 60 измерений. В массивах VBScript можно хранить объекты разных типов данных. Dim MyArray() - объявляем массив без верхней границы ReDim MyArray(4) - изменяем размер массива Dim MyArray MyArray = Array(100, 200, 300, 400, 500) Указывать размер массива необязательно - он будет автоматически настроен в соответствии с кол-вом передаваемых элементов. Erase MyArray очистить массив можно командой Для определения кол-ва элементов используется функция Ubound. 14

Операторы условного перехода If MyVar = 5 Then WScript.Echo MyVar = 5 __________________________________ If MyVar = 5 Then WScript.Echo MyVar = 5 ElseIf MyVar = 10 Then WScript.Echo MyVar = 10 Else WScript.Echo Чему равно, непонятно End If ___________________________________ If MyVar = 5 Then WScript.Echo MyVar = 5 If MyVar = 10 Then WScript.Echo MyVar = 10 End If 15

Select Case Select Case MyVar Case 5 WScript.Echo MyVar = 5 Case 10 WScript.Echo MyVar = 10 Case Else WScript.Echo Sorry End Select 16

Циклы Циклы используются в ситуациях, когда нам нужно выполнить какое-либо действие несколько раз. For Next, For Each Next, Do While Loop, Do Until Loop, While Wend. 17

Примеры For iCounter = 1 to 10 WScript.Echo Loop Number & iCounter Next Чтобы указать, насколько должно прирастать значение счетчика, используется ключевое слово Step: For iCounter = 1 to 10 Step 2 WScript.Echo Loop Number & iCounter Next Можно и уменьшать исходное значение счетчика: For iCounter = 10 to 1 Step -2 WScript.Echo Loop Number & iCounter Next 18

VStop = InputBox(Enter the value to stop the loop at) VInput = CInt(VStop) For iCounter = 1 to 10 WScript.Echo Loop Number & iCounter If iCounter =VInput Then Exit For Next Для того, чтобы выполнить какое-либо действие с каждым элементом массива, используется команда For Each... Next For Each File in objFiles WScript.Echo File.Name Next 19

Когда мы не знаем точно, сколько раз должна быть выполнена та или другая команда, то используется конструкции Do While...Loop и Do Until...Loop: Do While MyVar < 10 MyVar = MyVar + 1 WScript.Echo MyVar = & MyVar Loop Второй вариант - Do Until, обратная возможность: Do Until MyVar >= 10 MyVar = MyVar + 1 WScript.Echo MyVar = & MyVar Loop Можно переписать цикл так, чтобы условие проверялось после завершения цикла: Do MyVar = MyVar + 1 WScript.Echo MyVar = & MyVar Loop While MyVar < 10 В этом случае цикл будет выполнен по крайней мере один раз. Немедленный выход из цикла производится по команде Exit Do. 20

Процедуры и функции Предусмотрено два типа процедур: под процедуры (subroutines) - ключевое слово Sub, функции (functions) - обозначаются ключевым словом Function. В обоих случаях процедуры - это блок программного кода. Описание под процедуры выглядит так: Sub Farewell() WScript.Echo Goodbye End Sub Вызов процедуры в коде выглядит так Call Farewell Ключевое слово Call можно пропустить. Функции объявляются похоже, но они должны возвращать какое-либо значение. 21

Передача параметров WScript.Echo Gross Value is: & GrossValue(100, 0.175) Function GrossValue(NetValue, TaxRate) GrossValue = NetValue + (NetValue * TaxRate) End Function Параметры могут передаваться по ссылке или по значению. По ссылке - значение исходной переменной меняется, По значению - создается копия, а значение исходной переменной не меняется. По умолчанию в VBScript параметр передается по ссылке (ByRef). Если нужно передать по значению, можно использовать ключевое слово ByVal: Function GrossValue(ByVal NetValue, ByVal TaxRate) GrossValue = NetValue + (NetValue * TaxRate) End Function 22

Встроенные функции В языке программирования VBScript предусмотрено несколько десятков встроенных функций. Используются они очень активно, и во многих ситуациях без них не обойтись. Профессиональные программисты применяют их совершенно автоматически, а обычным пользователям хочется посоветовать потратить несколько часов на знакомство с ними, потому что без знаниях этих функций эффективно работать в VBScript не получится. Дополнительным аргументом в пользу их изучения является то, что практически идентичный набор функций есть в обычном Visual Basic и VBA, а многие из этих функций с теми же названиями и синтаксисом встречаются и в других языках программирования C++, Delphi, Java, JavaScript и т. п. 23

Функции преобразования и проверки типов данных Часто приходится преобразовывать значения из одного типа данных в другой: преобразование из строкового значения в числовое при приеме значения от пользователя через InputBox(); преобразование значения даты/времени в строковое, когда нам нужно отобразить дату или время единообразно вне зависимости от региональных настроек на компьютерах пользователей; преобразование значения из строкового в дату/время для применения специальных функций даты/времени. Перечень функций преобразования (Convert): CBool(), CByte(), CCur(), CDate(), CDbl(), CInt(), CLng(), CSng(), CStr(). Например, nVar1 = CInt(InputBox("Введите значение")): MsgBox TypeName(nVar1) Проверяют значения на соответствие : IsNumeric(), IsDate(), IsArray(), IsEmpty(), IsError(), IsMissing(), IsNull() и IsObject(). Все эти функции возвращают True или False в зависимости от результатов проверки переданного им значения. Hex() и Oct() преобразовывают десятичные данные в строковое представление шестнадцатеричных и восьмеричных значений. 24

Строковые функции Asc() – функция позволяет вернуть числовой код для переданного символа. Например, Asc("D") вернет 68. Chr() – функция возвращает символ по переданному его числовому коду. AscB() возвращает только первый байт числового кода для символа. AscW() возвращает код для символа в кодировке Unicode. Например: Msgbox ""Газпром"" приведет к синтаксической ошибке. А вот так все будет в порядке: MsgBox Chr(34) & "Газпром" & Chr(34) Есть варианты этой функции ChrB() и ChrW(). 25

InStr() и InStrRev() позволяют обнаружить в теле строковой переменной последовательность символов и вернуть ее позицию. Если последовательность не обнаружена, то возвращается 0. Функция InStr() ищет с начала строки, а InStrRev() с конца. Left(), Right(), Mid() позволяют взять указанное вами количество символов из существующей строковой переменной слева, справа или из середины соответственно. Len() возвращает число символов в строке (длину строки). Часто используется с циклами, операциями замены и т. п. LCase() и UCase() переводят строку в нижний и верхний регистры соответственно. Часто используются для подготовки значения к сравнению, когда регистр не важен (фамилии, названия фирм, городов и т. п.). LSet() и RSet() заполняют одну переменную символами другой без изменения ее длины (соответственно слева и справа). Лишние символы обрезаются, на место недостающих подставляются пробелы. LTrim(), RTrim(), Trim() убирают пробелы соответственно слева, справа или и слева, и справа. Replace() заменяет в строке одну последовательность символов на другую. Space() и String() возвращают строку из указанного вами количества пробелов или символов соответственно. Обычно используются для форматирования вывода совместно с функцией Len(). Еще одна похожая функция Spc(), которая используется для форматирования вывода на консоль. Она размножает пробелы с учетом ширины командной строки. StrComp() сравнивает две строки. StrConv() преобразует строку (в Unicode и обратно, в верхний и нижний регистры, первую букву слов заглавной и т. п.). StrReverse() "переворачивает" строку, разместив ее символы в обратном порядке. Tab() еще одна функция, которая используется для форматирования вывода на консоль. Размножает символы табуляции в том количестве, в котором вы укажете. Если никакое количество не указано, просто вставляет символ табуляции. Для вставки символа табуляции в строковое значение можно также использовать константу vbTab. 26

Функции для работы с числовыми значениями Abs() функция возвращает абсолютное значение переданного ей числа (то же число, но без знака). Например, Abs(3) и Abs(-3) вернут одно и то же значение 3. Int() – возвращает ближайшее меньшее целое. Fix() – отбрасывает дробную часть. Round() – округляет до указанного количества знаков после запятой. При этом Round() работает не совсем правильно, в чем легко убедиться: MsgBox Round(2.505, 2) Поэтому на практике для округления лучше использовать Format() : MsgBox Format(2.505, "#,##0.00") Rnd() и команда Randomize используются для получения случайных значений (удобно при генерации имен файлов). случайное_число = Int(минимум + (Rnd() * максимум)) MsgBox (Int(1 + (Rnd() * 100))) Однако перед вызовом функции Rnd() необходимо выполнить команду Randomize для инициализации генератора случайных чисел. Sgn() позволяет вернуть информацию о знаке числа. Возвращает 1, если число положительное, -1, если отрицательное, и 0, если проверяемое число равно 0. 27

Функции для работы с датой и временем Date(), Time(), Now() возвращают соответственно текущую системную дату, текущее системное время и дату и время одновременно. Установить дату можно так: Date = #5/12/2004# DateAdd() добавляет к дате указанное количество лет, кварталов, месяцев и так далее до секунд. DateDiff() возвращает разницу между датами (в единицах от лет до секунд). DatePart() возвращает указанную вами часть даты (например, только год, только месяц или только день недели). DateSerial() создает значение даты на основе передаваемых символьных значений. То же самое делает функция DateValue(), но при другом формате принимаемых значений. Аналогичным образом работают TimeSerial() и TimeValue(). Day() (а также Year(), Month(), Weekday(), Hour(), Minute(), Second()) специализированные заменители функции DatePart(), которые возвращают нужную вам часть даты. MonthName() возвращает имя месяца словами по его номеру. Возвращаемое значение зависит от региональных настроек. Если они русские, то вернется русское название месяца. Timer() возвращает количество секунд, прошедших с полуночи. Если нужно получить дополнительные возможности работы с датой/временем, то в вашем распоряжении объектная модель Outlook. Например, при помощи ее можно получить информацию о праздниках и рабочих/нерабочих днях большинства стран мира. 28

Функции форматирования данных Для форматирования данных используется набор функций, которые начинаются с префикса Format... (FormatNumber(), FormatCurrency(), FormatDateTime() и т. п.) Синтаксис функции Format() выглядит так: Format(выражение, "формат") Если необходимо, чтобы дата отображалась на компьютерах пользователей единообразно вне зависимости от региональных настроек. В качестве решения можно использовать функцию DatePart(), при помощи ее перевести дату "по частям" в текстовый формат и склеить нужным образом. 29

Функции для взаимодействия с пользователем MsgBox(Текст [, кнопки] [, заголовок_окна] [, файл_справки, метка_в_файле_справки]) Возможностей у MsgBox() достаточно много: можно отображать разное количество кнопок (OK, Cancel, Abort, Retry, Ignore, Yes, No); можно показывать символы Critical (красный круг с крестом), Exclamation (восклицательный знак в желтом треугольнике), Question (вопросительный знак), Information (буква "I"); можно выбирать кнопку по умолчанию; можно делать окно модальным или обычным. Dim nVar nVar = MsgBox ("Будем делать?", vbInformation + vbOKCancel, _ "Демонстрационное окно сообщения") Если значение nVar равно 1, то пользователь нажал OK, если 2, то Отмена (Cancel). 30

Dim InputName InputName = InputBox("Введите Ваше имя") MsgBox ("Вы ввели: " & InputName) Для InputBox() можно указать: текст приглашения, заголовок окна, значение по умолчанию, местонахождение окна и файл справки. Не забывайте, что все вводимое пользователем InputBox() автоматически переводит в тип данных String, может потребоваться преобразование. Можно привлечь внимание пользователя звуковым сигналом. Для этой цели используется оператор Beep: Dim i: For i = 1 To 3: Beep: Next i Если нужно обеспечить более сложное взаимодействие с пользователем, можно подумать о применении формы, возможностей самого документа Office или помощника (Office Assistant). Очень мощные возможности обеспечивает и применение объектной модели Internet Explorer. 31

Функции для работы с массивами Filter() позволяет на основе одного массива получить другой, отфильтровав в исходном массиве нужные нам элементы. LBound(), UBound() возвращают соответственно информацию о нижней границе массива (номер первого имеющегося в массиве значения) и о верхней границе (номер последнего имеющегося значения). Join() соединяет множество строк, составляющих массив, в одну строковую переменную. В качестве разделителя по умолчанию используется пробел, но можно указать и свой разделитель. Обратная функция, создающая массив из одной строки, Split(). Эти функции очень удобны, например, при обработке значений, полученных из базы данных, электронной таблицы, макетного файла и т. п. 32

Пример Скрипт записи в файл на диске "C:" со случайным образом сгенерированным именем. Имя состоит из 8 цифр и расширения "log". Генерируется новое имя для файла. Скрипт: Dim oFso Dim oMyFile Dim nCounter Dim sLine Dim sFileName sLine = InputBox ("Введите строку") nCounter = InputBox("Введите значение счетчика") Randomize() sFileName= Int(Rnd() * ) & "" Set oFso = CreateObject("Scripting.FileSystemObject") Set oMyFile = oFso.CreateTextFile("C:\" & sFileName & ".log") For nCounter = 1 To 10 oMyFile.WriteLine(sLine) Next 33