Учебное пособие Рекомендовано учебно-методическим советом угаэс уфа-2006
Вид материала | Учебное пособие |
- Учебное пособие Рекомендовано учебно-методическим советом угаэс уфа-2005 удк 330., 1365.17kb.
- Учебное пособие Часть 1 Рекомендовано учебно-методическим советом угаэс уфа 2006, 1359.55kb.
- Бизнес-планирование предприятия учебное пособие Рекомендовано учебно-методическим советом, 1729.98kb.
- Учебное пособие Рекомендовано учебно-методическим советом угаэс уфа-2009, 2459.47kb.
- Учебное пособие Рекомендовано учебно-методическим советом угаэс уфа-2008, 3188.71kb.
- Учебное пособие Часть 2 Производственная безопасность Рекомендовано учебно-методическим, 1618.75kb.
- Учебное пособие уфа-2007 удк 330. 01 (075. 8) Ббк 65. 02., 836.31kb.
- Учебное пособие Рекомендовано научно-методическим советом, 1565.87kb.
- Учебно методическое пособие Минск 2006 удк 616. 42-006. 441-053. 2(075., 1819.29kb.
- Учебное пособие рекомендовано умо по образованию в области сервиса угаэс, 1695.83kb.
2.3. Программирование в среде Visual Basic
В 1992 г. корпорацией Microsoft была разработана версия Visual Basic 1.0 – объектно-ориентированного языка программирования для Windows 3.1, поддерживающего событийно-управляемое программирование. Затем были версии Visual Basic 3.0, 4.0, 5.0 и Visual Basic 6.0. Visual Basic содержит несколько сотен команд, функций и ключевых слов, многие из которых реализуют графический интерфейс пользователя GUI (Graphical User Interface) операционной системы Windows.
Программы - приложения, разрабатываемые в среде Visual Basic, имеют, как правило, стандартный пользовательский интерфейс: форму, на которой располагаются элементы управления, панели инструментов и меню. Далее пишется код обработки событий - операторы на языке Visual Basic. Таким образом, разработка приложения включает следующие этапы:
- создание графического интерфейса пользователя (GUI);
- написание текста программы.
2.3.2. Основы программирования в среде Visual Basic
2.3.2.1. Типы данных
Тип данных определяет множество допустимых значений, которое может принимать указанная переменная. В Visual Basic имеются следующие основные типы данных.
Таблица 2.1
Тип данных | Размер (байт) | Диапазон значений |
Byte (байт) | 1 | От 0 до 255 |
Boolean (логический) | 2 | True или False |
Integer (целое) | 2 | От -32768 до 32767 |
Long (длинное целое) | 4 | От -2147483648 до 2147483647 |
Single (вещественное обычной точности) | 4 | От –3,4 Е+38 до -1,4 Е-45 и от 1,4 Е-45 до 3,4 Е+38 |
Double (вещественное двойной точности) | 8 | От –1,7 Е+308 до –4,9 Е-324 и от 4,9 Е-324 до 1,7 Е+308 |
Currency (денежный) | 8 | От -922 337 203 685 477,5808 до 922 337 203 685 477,5807 |
Date (даты и время) | 8 | С 1 января 100г. до 31 декабря 9999г. |
Object (объект) | 4 | Ссылка на объект |
String (строка переменной длины) | - | От 0 до ~2 миллиардов знаков |
String (строка постоянной длины) | - | От 1 до ~65 400 знаков |
Variant | - | Тип зависит от значения |
Тип данных, определяемый с помощью ключевого слова Туре | | определяется типом данных |
2.3.2.2. Допустимые имена
В Visual Basic пользователь определяет имена переменных, функций, процедур, типов, постоянных и других объектов. Верхний и нижний регистр букв в имени равнозначны. В Visual Basic имеются следующие ограничения на имена:
- длина имени не должна превышать 255 символов;
- имя может буквы, цифры и знак подчеркивания "_";
- имя должно начинаться с буквы;
- имена должны быть уникальны внутри области, в которой они определены;
- не следует использовать имена, совпадающие с ключевыми словами Visual Basic и именами встроенных функций и процедур.
2.3.2.3. Описание переменных
В программе Visual Basic тип переменной объявлять не обязательно, в этом случае переменная получает тип variant. Для обязательного описания всех переменных в начале модуля ставится инструкция Оption Explicit. Синтаксис описания переменной:
Dim ИмяПеременной [As [New] Тип]
Переменная может быть описана также при помощи инструкций Private, Public и Static, определяющих область действия переменной. После инструкций Dim и т.п. можно через запятую описать несколько переменных с указанием типа для каждой из них. Переменная с неуказанным типом получает тип variant. Примеры:
Dim Number As Integer
Dim AVar, Choice As Boolean, BirthDate As Date
AVar="Привет"
Number=123
AVar = 276.9 + Number
Choice=True
BirthDate=#4/5/2001 1:25:33 AM#
New – ключевое слово для неявного создания объекта без использования ссылки на объект с помощью инструкции Set, например
Dim xlApp1 As Excel.Application' раннее связывание
Set xlApp1 = New Excel.Application 'либо
Dim xlApp2 As Object ' позднее связывание
Set xlApp2 = CreateObject("Excel.Application")
Dim X As New Worksheet ' либо
Dim Х As Worksheet
Set Х = New Worksheet
Ключевое слово New не может использоваться для фундаментальных типов (например, Byte), общего типа Control, элементов управления и их типов (например, MyLstBox1, ListBox).
2.3.2.4. Массивы
Массивы должны быть объявлены до их использования в программе. Синтаксис:
Dim ИмяМассива (Индексы) [As Тип],
где индексы – Размерности массива. Допускается описание до 60 размерностей.
Синтаксис индексов: [Нижний То] Верхний [,[Нижний То] Верхний] ...
Если нижний индекс не задан явно, то нижняя граница массива определяется инструкцией Option Base, иначе нижняя граница массива равняется нулю. Базовый индекс можно изменить, написав в области описания модуля инструкцию, например
Option base 1 'Базовый Индекс равен 1
Dim MyArr(20), TwoDArr(3, 4) ' Объявление массивов
Dim ZeroArr(0 To 5) As Integer ' Явное задание базового индекса
Dim MyMatr(1 To 5, 1 To 9) As Double
ZeroArr(0)=15
ZeroArr(2)=25
MyMatr(1,1)=8.9
Для определения одномерных массивов можно использовать переменную типа variant, задавая значения элементам массива инструкцией Array:
Dim A As Variant
А = Аrrау(1, 15, 30) ' значения элементов массива равны: 1, 15, 30
2.3.2.4.1. Динамические массивы
Если в процессе выполнения программы требуется изменять размер массива, то массив объявляют как динамический, например:
Dim R() As Single
В программе следует задать размер массива с помощью инструкции ReDim. Синтаксис:
ReDim [Preserve] ИмяМассива(Индексы) [As Тип]
Preserve – ключевое слово, используемое для сохранения данных в существующем массиве при изменении значения последней размерности.
Для массива, не сохраняющего данные, можно изменять верхнюю и нижнюю границы, но нельзя менять размерность массива, например:
ReDim R(1 to 90)
ReDim R(-10 to 10)
Для массива, сохраняющего данные, можно изменять только верхний и последний индекс размерности массива, например:
Dim Matr() As Integer
ReDim Matr(19, 29)
ReDim Preserve Matr(19,33)
2.3.2.4.2. Чистка массивов
Для повторной инициализации массивов фиксированной длины и освобождения памяти, отведенной для динамического массива служит процедура Erase СписокМассивов, например:
Dim NumAr(10) As Integer ' числовой массив
Dim StrVarAr(10) As String 'массив строк переменной длины
Dim StrFixAr(10) As String * 10 'массив строк постоянной длины
Dim VarAr(10) As Variant ' 'массив вариант
Dim DynAr() As Integer ' динамический массив
ReDim DynAr(10) 'определение длины массива
Erase NumAr ' все элементы массива равны 0.
Erase StrVarAr ' все элементы массива нулевой длины ("")
Erase StrFixAr ' все элементы массива равны 0
Erase VarAr ' все элементы массива равны Empty
Erase DynAr 'освобождение памяти, использовавшейся для массива
2.3.2.4.3. Массивы объектов
Для создания массива объектов на этапе конструирования необходимо:
- Создать в форме один из объектов из элементов управления;
- Скопировать объект в буфер обмена (нажмите Ctrl+C);
- Вставить несколько объектов из буфера обмена (несколько раз нажмите Ctrl+V).
При обращении к объектам массива указывается их индекс:
ИмяОбъекта(Индекс), например, LblArr(5).
2.3.2.5. Константы
Константы не могут изменять свои значения. Синтаксис:
[Public | Private] Const ИмяКонстанты [As Тип] = Выражение
Примеры:
Const MyStr = "Hello", MyVar = 459
Public Const MyStr1 = "HELP"
Private Const MyInt As Integer = 5
2.3.2.6. Перечисленный тип
Перечисленный тип используется для работы с константами и позволяет ассоциировать их значения с именами. Синтаксис:
[Public | Private] Enum ИмяПеременной
СonstName1 [= Const1]
ConstName2 [= Const2]
.........
End Enum,
где СonstName1 – имя константы. Сonst1 – значение константы.
По умолчанию значение первой константы равно 0, второй 1 и т.д. Пример:
Enum SecLev
SecLev1 = 0
SecLev2 = 1
End Enum
Dim MyLev As SecLev
If MyLev <> SecLev2 Then MsgBox ("No assecc!")
2.3.2.7. Тип данных, определенный пользователем
Тип, определенный пользователем, представляется как запись или структура. Синтаксис:
[Private | Public] Type ИмяТипа
ИмяПоля1 [([Индексы])] As Тип
ИмяПоля2 [([Индексы]) ] As Тип
........
End Type
Пример:
Type ERecord ' Тип, определенный пользователем
ID As Integer
Name As String * 20
Address As String * 30
End Type
Dim MyRec As ERecord ' Объявление переменной
MyRec.ID = 13 ' Присвоение значения
2.3.3. Операции Visual Basic
В программах на Visual Basic имеются три типа операций: математические, отношения, логические.
2.3.3.1. Математические операции
Таблица 2.2
"+" – Сложение | "*" – Умножение | "\" – Целочисленное деление | "-" – Унарный минус |
"-" – Вычитание | "/" – Деление | "Mod" – Остаток от деления | "" – Возведение в степень |
Для отрицательных чисел возможно возведение только в целую степень.
При целочисленном делении и нахождении остатка от деления вещественные данные сначала округляются до целых значений, примеры:
Dim MyR
MyR = 10 Mod 5 ' получаем 0
MyR = 10 Mod 3 ' получаем 1
MyR = 12 Mod 4.3 ' получаем 0
MyR = 12.6 Mod 5 ' получаем 3
MyValue = 11 \ 4 'получаем 2
MyValue = 9.3 \ 3 'получаем 3
MyValue = 101.7 \ 3 'получаем 34
2.3.3.2. Операции отношения
Таблица 2.3
"<" – Меньше | "<=" – Меньше или равно | "=" – Равно | "Is" – Сравнение объектов |
">" – Больше | ">=" – Больше или равно | "<>" – Не равно | "Like" – Сравнение строк |
2.3.3.3. Логические операции
- "And" – Логическое умножение.
- "Хог" – Исключающее или.
- "Or" – Логическое сложение.
- "Not" – Логическое отрицание.
2.3.3.4. Таблица истинности
Таблица 2.4
Значения\Операция | A And B | A Or B | A Хог B | Not A | |
A=True | B=True | True | True | False | False |
A=True | B=False | False | True | True | False |
A=False | B=True | False | True | True | True |
A=False | B=False | False | False | False | True |
2.3.3.5. Соединение строк
Используется знак конкатенации &, либо + (для переменных, кроме числового типа Variant).
Строка1 & Строка2 или Строка1 + Строка2.
Использование знака &, предпочтительнее, чем +, поскольку выражение, содержащее знак & автоматически преобразуется в строковый тип, примеры:
Dim X, Y, Z
X = 6
Y = "7"
Z= X + Y ' получаем 13
Z= X & Y ' получаем "67"
2.3.3.6. Приоритеты операций
Visual Basic выполняет операции в соответствии с их приоритетами (от наибольшего к наименьшему). Более высокий приоритет имеет операция с меньшим порядковым номером (см. таблицу 2.5).
Таблица 2.5
№ | Операция | № | Операция | № | Операция |
1 | Вызов функции и скобки | 5 | Деление нацело | 9 | Not |
2 | Возведение в степень | 6 | Остаток от деления | 10 | And |
3 | Унарный минус | 7 | Сложение и Вычитание | 11 | Or |
4 | Умножение и Деление | 8 | Операции отношения | 12 | Xor |
Примеры:
Dim MyVal
MyVal = (-5) 2 'получаем +25
MyVal = -5 2 'получаем -25
MyVal=True
MyVal =not MyVal Or MyVal 'получаем True
MyVal = Not (MyVal Or MyVal) 'получаем False
2.3.4. Встроенные функции Visual Basic
В Visual Basic имеется большой набор встроенных функций и процедур, следующих категорий:
Математические функции, Функции проверки типов, Функции преобразования форматов, Функции обработки строк, Функции времени и даты, Финансовые функции. Синтаксис:
Функция(Аргумент или Выражение)
2.3.4.1. Математические функции
Таблица 2.6
Функция | Возвращаемое значение | Функция | Возвращаемое значение |
Abs | Модуль (абсолютная величина) числа | Sgn | Знак числа |
Atn | Арктангенс | Sin | Синус |
Cos | Косинус | Sqr | Квадратный корень числа |
Ехр | Экспонента | Tan | Тангенс |
Log | Натуральный логарифм | Fix | Целая часть числа |
Rnd | Случайное число в интервале (0,1) | Int | Целая часть числа. |
Если число меньше нуля, то Rnd возвращает каждый раз одно и то же число. Если число больше нуля или опущено, то Rnd возвращает следующее случайное число в последовательности. Если число равняется нулю, то Rnd возвращает случайное число, возвращенное при предыдущем вызове этой функции. Для изменения чисел в последовательности перед вызовом функции Rnd используйте инструкцию Randomize. Примеры.
Dim MyVal
Randomize 'инициализация генератора случайных чисел
MyVal = Int((6 * Rnd) + 1) 'генерируется случайное число от 1 до 6
MyVal = Sqr(4) ' получаем 2.
MyVal = Sqr(-4) 'генерируется ошибка времени выполнения
Различие между функциями int и Fix состоит в том, что для отрицательного значения параметра число функция int возвращает ближайшее отрицательное целое число, меньшее либо равное указанному, a Fix – ближайшее отрицательное целое число, большее либо равное указанному.
2.3.4.2. Функции проверки типов и значений
Таблица 2.7
Функция | Тип аргумента | Функция | Значение аргумента |
IsArray | массив | IsEmpty | переменная не инициирована |
IsDate | дата | isNull | пустое значение |
IsObject | объект | isNumeric | числовое значение |
Примеры.
Dim MyDate, YourDate, NoDate, MyCheck
MyDate = "29.04.1969"
YourDate = #4/29/1969#
NoDate = "Hello"
MyCheck = IsDate(MyDate) ' получаем True
MyCheck = IsDate(YourDate) ' получаем True
MyCheck = IsDate(NoDate) ' получаем False
Dim MyInt As Integer, YObj
Dim MyObj As Object
Set YObj = MyObj ' назначаем объекту ссылку на другой объект
MyCheck = IsObject(YObj) ' получаем True.
MyCheck = IsObject(MyInt) ' получаем False.
2.3.4.3. Функции преобразования форматов
2.3.4.3.1. Функция Format
Функция Format возвращает значение типа Variant (string), содержащее выражение, отформатированное согласно инструкциям, заданным в описании формата. Синтаксис:
Format(Выражение[,Формат[,ПервыйДеньНедели[,ПерваяНеделяГода]]]),
где
Выражение – любое допустимое выражение;
Формат – инструкция форматирования.
ПервыйДеньНедели и ПерваяНеделяГода — используются при задании формата даты.
2.3.4.3.2. Инструкции форматирования чисел
Таблица 2.8
Инструкция | Возвращает |
General Number | число в общем формате без разделителя тысяч |
Currency | число в денежном формате согласно установкам Windows |
Fixed | число с фиксацией двух цифр в дробной части числа и одной в целой. |
Standard | число в стандартном формате – фиксированный с разделителем тысяч. |
Percent | число в фиксированном формате со знаком "процент" |
Scientific | число с плавающей десятичной точкой (экспоненциальный) |
True/False | False, если число равно 0, и True – в противном случае |
2.3.4.3.3. Символы форматирования чисел
0 (нуль) – отображает цифру или нуль.
# (решетка) – отображает цифру или ничего.
. (точка) – отображает десятичный разделитель числа.
% (процент) – отображает символ процента после числа.
, (запятая) – отображает разделитель тысячных частей в целой части числа.
: (двоеточие) – отображает разделитель часов, минут и секунд в формате времени.
/ (слеш) – отображает разделитель дня, месяца и года в формате даты.
Е+, Е- или е+, е- - отображает разделитель мантиссы и порядка в экспоненциальном формате. Примеры:
MyStr = Format(1.2,"00.00") ' выводит 01,20
MyStr = Format(1.2,"#.##") ' выводит 1,2
MyStr = Format(5459.4, "##,##0.00") ' выводит 5 459,40
MyStr = Format(5, "0.00%") ' выводит 500,00%
MyStr = Format(1.22,"##.##е+##") ' выводит 1,22е+
MyStr = Format(1045.22,"Standard") ' выводит 1 045,22
MyStr = Format(1045.22,"Scientific") ' выводит 1,05Е+03
2.3.4.3.4. Инструкции форматирования даты и времени
Таблица 2.9
Инструкция | Возвращает |
General Date | дату или время. Если нет дробной части, то выводит только дату, например, 13.04.2006 20:18:37. |
Long Date | дату в соответствии с длинным форматом Windows для даты. |
Окончание табл. 2.9
Medium Date | дату в соответствии со средним форматом Windows для даты, например, 13-апр-06. |
Short Date | дату в соответствии с коротким форматом Windows для даты. |
Long Time | часы, минуты и секунды, например, 20:15:43. |
Medium Time | часы и минуты в 12-часовом формате, например, 8:15. |
Short Time | часы и минуты в 24-часовом формате, например, 20:15. |
2.3.4.4. Функции преобразования типов
2.3.4.1. Преобразование строки в число и обратно
Val(строка) Возвращает число, содержащееся в строке.
Str(число) Возвращает строковое представление числа, тип Variant (string). В качестве допустимого десятичного разделителя функция str воспринимает только точку, иначе используйте функцию cstr.
2.3.4.1. Преобразование выражения в стандартный тип данных
Таблица 2.10
Функция | Возвращает тип | Функция | Возвращает тип |
СВооl | Boolean | Cint | Integer |
Cbyte | Byte | CLng | Long |
Ccur | Currency | CSng | Single |
Cdate | Date | CVar | Variant |
CDbl | Double | CStr | String |
Примеры.
Dim MyDbl, MyStr, MyByte
MyDbl = 137.8
MyStr = CStr(MyDbl) ' получаем "137.8"
MyByte = CByte(MyDbl) ' получаем 138
2.3.4.5. Функции обработки строк
Таблица 2.11
Функция | Возвращает |
Asc | ASCII код начальной буквы строки. Синтаксис: Asc(строка) |
Chr | символ ASCII кода. Синтаксис: Chr(байт). Например: Chr(99) – буква "с", Asc("с") – получаем число – 99 |
Окончание табл. 2.11
LСase | строку в нижнем регистре. Синтаксис: LCase(строка) |
UСase | строку в верхнем регистре. Синтаксис: UCase(строка) |
Left | подстроку исходной строки. Синтаксис: Left(строка,ЧислоПервыхСимволов) |
Right | подстроку исходной строки. Синтаксис: Right(строка,ЧислоПоследнихСимволов) |
Mid | подстроку строки. Синтаксис: Mid(Строка,НомерПервогоСимвола[,ЧислоСимволов]) |
Lеn | число символов строки. Синтаксис: Len(Строка) |
Trim | строку без пробелов в ее начале и конце. Синтаксис: Trim(Строка) |
Space | строку, состоящую из пробелов. Синтаксис: Space(числоПробелов) |
StrReverse | строку в обратном порядке. Синтаксис: StrReverse(string) |
Примеры.
Dim str, UCaseStr, RevStr, LStr
str = "Hello World"
UCaseStr = UCase(str) ' получаем "HELLO WORLD"
RevStr =StrReverse(str) ' получаем "dlroW olleH"
LStr = Left(str,Len(str)\2) ' получаем "Hello"
2.3.4.5.1. Константы Visual Basic для управляющих ASCII кодов
Таблица 2.12
Константа | Chr(Код) | Клавиша |
VbBack | Chr(8) | Backspace |
VbTab | Chr(9) | Tab |
VbCr | Сhr(13) | Enter |
2.3.4.6. Функции времени и даты
Таблица 2.13
Функция | Возвращает |
Date | текущую системную дату, тип Variant (Date) |
Time | текущее системное время, тип Variant (Date) |
Now | текущую системную дату и время, тип Variant (Date) |
Hour, Minute, Second | целые числа – часы, минуты и секунды, тип Variant (integer). Синтаксис: Hour(Время), Minute(Время), Second(Время) Например: час=Hour(Now), Минута = Minute(Now), Секунда = Second(Now) |
Окончание табл. 2.13
Day, Month, Year | целые числа – день, месяц, год, тип Variant (integer) Синтаксис: Day(Дата), Month(Дата), Year(Дата) Например: День=Day(Now), Месяц=Month(Now), Год=Year(Now) |
Weekday | целое число – день недели Синтаксис: Weekday(Дата, [ПервыйДеньНедели]) ПервыйДеньНедели по умолчанию – vbSunday (воскресенье) Допустимы: vbMonday, VbTuesday, VbWednesday, vbThursday, VbFriday, VbSaturday |
Timer | число секунд, прошедших после полуночи, тип Single |
DateDiff | количество временных интервалов между двумя датами, тип Long. Синтаксис: DateDiff(Интервал, Дата1, Дата2 [, ПервыйДеньНедели [, ПерваяНеделяГода]]) Интервал - тип временного интервала. Допустимые значения: уууу – Год, q – Квартал, m – Месяц, ww – Неделя, h – Часы, m – Минуты, s – Секунды; , у – День года d – День месяца, w – День недели, Например: Лет = DateDiff("yyyy", #4/7/57#, Now) |
TimeValue | Преобразует строку в формат времени |
2.3.5. Инструкции Visual Basic
Инструкция Visual Basic представляет собой полную команду языка Visual Basic. Она может содержать ключевые слова, операторы, переменные, константы и выражения.
2.3.5.1. Оператор присвоения
Оператор присвоения присваивает значение выражения переменной, константе или свойству объекта. Оператор присвоения всегда включает знак равенства (=).
Синтаксис: [Let] Переменная = Выражение
Инструкция Let необязательна и чаще всего опускается.
Для присвоения переменной типа ссылки на объект применяется инструкция Set. Синтаксис:
Set Объект = [New] ИмяОбъекта | Nothing
где ключевое слово New используется при создании нового объекта, а ключевое слово Nothing – при удалении объекта, чтобы освободить память, выделенную для объекта.
2.3.5.2. Операторы управления
Операторы управления ходом выполнения программы функционально делятся на две группы:
перехода и выбора: GоTо, If - Then – Else, Select Case;
повтора For - Next, For Each - Next, Do – Loop, While - Wend.
В операторах управления выполняются только те инструкции, которым передается управление.
2.3.5.3. Оператор условного перехода
Оператор условного перехода задает выполнение определенных групп инструкций в зависимости от значения выражения. Синтаксис:
If Условие Then Инструкция1 [Else Инструкция2]
Если Условие принимает значение True, то выполняется Инструкция1, иначе Инструкция2. В случае блочной структуры оператора оператора условного перехода необходимо использовать ключевое слово End If, например:
If Условие Then
Инструкции1
[Else
Инструкции2
Еnd If
Для проверки нескольких условий используется оператор в виде if - Then -ElseIf.
Синтаксис:
If Условие1 Then
Инструкции1
ElseIf Условие2 Then
Инструкции2
Else
Инструкции3
End If
Если условие1 имеет значение True, то выполняются инструкции1 и далее после End if. Если Условие1 имеет значение False, то проверяется Условие2 и т. д. пока не встретится условие, имеющее значение True, или пока не встретится ключевое слово Else.
Примеры.
If A > 10 Then A = A + 1 : B = B + A
If А < 10 Then
Print "однозначное"
ElseIf А < 100 Then
Print "двухзначное"
Else
Print "трехзначное и более"
End If
2.3.5.4. Оператор выбора
Оператор выбора выполняет одну из нескольких групп инструкций в зависимости от значения выражения. Синтаксис:
Select Case Выражение
Case СписокВыражений1
Инструкции1
Case СписокВыражений2
Инструкции2
и т.п.
[Case Else
Инструкции3
End Select,
где СписокВыражений – это список с разделителями, состоящий из одного или нескольких выражений следующего вида:
2, 4, 5
6 to 10
Is > 18
Выполняются те инструкции для которых СписокВыражений включает значение Выражение, иначе выполняется Инструкции после Else. Пример:
Select Case N
Case 21
Print "21"
Case 23
Print "23"
End Select
2.3.5.5. Оператор цикла с параметром: For - Next
Оператор цикла For - Next повторяет выполнение инструкций при изменении параметра цикла от значения параметр1 до значения параметр2 с заданным шагом параметра. По умолчанию шаг параметра равен 1. Синтаксис:
For параметр = параметр1 То параметр2 [ШагПараметра]
Инструкции
Next [параметр]
Прервать цикл можно оператором Exit For. Допустимы вложенные циклы.
Пример нахождения 10!:
F10=1
For i = 2 To 10
F10=F10*i
Next
2.3.5.6. Оператор цикла для элементов группы: For Each - Next
Оператор цикла For Each - Next повторяет выполнение инструкций для каждого элемента массива или семейства. Синтаксис:
For Each Элемент In Группа
Инструкции
Next [Элемент]
Прервать цикл можно оператором Exit For.
Перед выполнением оператора нужно объявить тип элемента управления. Пример.
Dim Command As Object For Each Command In Command1 Command.Enabled = False Next Command | Dim Cntrl as Control for Each Cntrl in Controls Cntrl.Enabled=False Next |
Здесь Controls – семейство элементов управления.
Command1 – массив элементов CommandButton, созданный в конструкторе проекта.
2.3.5.7. Оператор цикла с предусловием: While - Wend
Оператор цикла while - wend повторяет выполнение инструкций, пока заданное условие имеет значение True. Синтаксис:
While Условие
Инструкции
Wend
2.3.5.8. Оператор цикла с комбинацией условий Dо - Loop
Оператор DO - Loop повторяет выполнение инструкций, при while условии равном True или Until условии равном False. Синтаксис:
Do [While | Until Условие] Инструкции Loop | Do Инструкции Loop [While | Until Условие] |
Прервать цикл можно оператором Exit Dо.
Пример:
Dim InPass, MyPass, n
MyPass = "y"
n = 0
Do
n = n + 1
If n > 3 Then Exit Do
InPass = InputBox("Введите пароль")
Loop Until InPass = MyPass
If n > 3 Then End
2.3.5.9. Оператор безусловного перехода GoTo
Оператор безусловного перехода задает переход на указанную Метку внутри процедуры. Имя Метки должно начинаться с буквы. Синтаксис:
GoTo Метка
Метка с двоеточием пишется перед началом инструкции, на которую будет передано управление оператором GoTo. Синтаксис:
Метка: Инструкция
2.3.5.10. Синтаксические правила для инструкций
2.3.5.10.1. Комментарии
Комментарии, т. е. пояснения к фрагменту текста программы, не являются программным кодом и игнорируются компилятором. Комментарий начинается с апострофа ', либо словом Rem, при этом все символы до конца строки, будут восприниматься компилятором как комментарий.
2.3.5.10.2. Перенос строки инструкции
Для продолжения инструкции Visual Basic в конце строки ставится пробел и знак подчеркивания "_". Исключения:
- нельзя переносить строковые константы;
- допустимо не более семи продолжений одной и той же строки;
- инструкция не может состоять более чем из 1024 символов.
2.3.5.10.3. Расположение нескольких инструкций в одной строке
Знак двоеточие ":" позволяет разместить несколько инструкций в одной строке.
2.3.5.10.4. Оператор With
Оператор with позволяет не указывать имени объекта в области оператора при работе с его свойствами и методами при этом точка перед свойством или методом остается. Синтаксис:
With ИмяОбъекта
инструкции (используют .СвойствоОбъекта, .МетодОбъекта)
End With
Пример:
With MyObject
.Height = 100 'тоже что и MyObject.Height = 100
With .Font
.Bold = True 'тоже что и MyObject.Font.Bold = True
End With
End With
2.3.6. Функции и процедуры
2.3.6.1. Описание функций и процедур
Процедуры и функции содержат инструкции, обеспечивающие выполнение некоторой задачи. Они имеют имя, могут иметь входные параметры, раздел описания, раздел инструкций и возвращать значения своих параметров. Имена процедур и функций удовлетворяют правилам именования переменных. Перед именем процедуры используют служебное слово Sub, а перед именем функции – Function. Синтаксис процедуры:
[Private | Public] [Static]
Sub ИмяПроцедуры[(СписокФормальныхПараметров)]
Инструкции
End Sub
Синтаксис функции:
[Public | Private] [Static]
Function ИмяФункции([СписокФормальныхПараметров]) [As Тип]
[Инструкции]
[ИмяФункции = Выражение] ' возврат значения функции
End Function
Для прерывания процедуры используется инструкция Exit sub, функции– Exit Function.
Таблица 2.14
Опция | Назначает область действия |
Public | процедура доступна для всех процедур во всех модулях приложения |
Private | процедура доступна для процедур только того модуля, в котором она описана |
Static | локальные переменные процедуры сохраняются при вызове процедуры |
Список параметров, значения которых передаются в процедуру (функцию) или возвращаются из процедуры (функции), разделяется запятыми. Синтаксис:
[Optional] [ByVal | ByRef] [ParamArray] ИмяПараметра [As тип] [=Значение]
Таблица 2.15
Опция | Указывает |
Optional | что параметр из СпискаФормальныхПараметров – необязательный. Все параметры, следующие за необязательным, также должны быть необязательными и описаны с помощью опции Optional. Все параметры, описанные как Optional, должны иметь тип Variant. В процедуре с необязательными параметрами можно использовать функцию isMissing, возвращающую True, если соответствующий параметр не был передан в процедуру, и False в противном случае. |
Окончание табл. 2.15
ByVal | что параметр из СпискаФормальныхПараметров передается по значению. |
ByRef | что параметр передается по ссылке. Опция ByRef используется по умолчанию. |
ParamArray | что конечный (последний) параметр - необязательный массив значений типа Variant. Не может использоваться с опциями ByVal, ByRef или Optional. |
Тип | тип параметра. Не допускаются строки фиксированной длины. Если отсутствует ключевое слово Optional, могут быть также указаны определяемый пользователем тип или объектный тип Object. |
Значение | константу или выражение, дающее константу, используемое по умолчанию. Задается вместе с опцией optional. Для типа Object задается значение Nothing. |
Примеры:
Function Hypotenuse(A As Integer, B As Integer) As Integer
Hypotenuse = Sqr(A 2 + B 2)
End Function
Sub FormsClose()
Dim i as integer
For i = Forms.Count – 1 to 0 Step - 1
Unload Forms(i)
Next
End Sub
2.3.6.2. Вызов функций и процедур
Вызов процедуры можно произвести несколькими способами.
- ИмяПроцедуры СписокФактическихПараметров
- Call ИмяПроцедуры (СписокФактическихПараметров)
Инструкцию Call можно также использовать для вызова функции.
Вызов функции
Х = ИмяФункции (СписокФактическихПараметров)
СписокФактическихПараметров должен соответствовать по порядку, количеству и типам параметров спискаФормальныхПараметров, заданному в процедуре (функции) при ее определении.
Примеры:
С= Hypotenuse(A,B)
FormsClose
Если используются процедуры с одинаковыми именами из разных модулей, то надо указывать имя модуля, в котором находится процедура:
ИмяМодуля.ИмяПроцедуры СписокФактическихПараметров
Используя имена формальных параметров (с опцией ByVal), Visual Basic позволяет вводить фактические параметры в любом порядке. При этом после имени параметра ставятся двоеточие и знак равенства, после которого помещается значение параметра, например:
ИмяПроцедуры a:=l, b:=3
2.3.7. Область видимости переменной
Существуют три типа области видимости переменной.
- Локальные переменные описываются внутри процедуры при помощи инструкций Dim или Static и распознаются только в процедуре, в которой они описаны.
- Личные переменные описываются внутри модуля при помощи инструкций Dim или Private и распознаются только в модуле, в котором они описаны.
- Открытые переменные описываются внутри модуля при помощи инструкции Public и доступны для всех процедур проекта.
Отметим, что если имя локальной переменной дублирует имя личной или открытой переменной, то последние необходимо использовать с указанием имени модуля, либо они будут "перекрыты" локальной переменной. То же относится и к формальным параметрам.
2.3.7.1. Время жизни переменной
Локальные переменные сохраняют свое значение, во время выполнения процедуры и при повторном запуске процедуры "обнуляются". Локальные переменные, описанные при помощи инструкции static, сохраняют свое значение пока работает программа.
2.3.8. Задание цвета изображения
В Visual Basic для задания цвета изображения используется шестнадцатеричные константы, обозначаемые с префиксом &Н, например, Form1.BackColor = &HFF.
Удобно задавать цвет, используя функцию RGB.
Функция RGB позволяет получить любой цвет, смешивая красную, зеленую и синюю компоненты различной интенсивности. Синтаксис: RGB(Red, Green, Blue), где Red, Green, Blue - целые числа от 0 до 255.
Например: RGB(0,0,0) – черный цвет, RGB(255,255,255) – белый цвет.
Form1.BackColor =RGB(255,0,0) – красный цвет.
Контрольные вопросы
Все вопросы относятся к языку программирования Visual Basic.
В каком диапазоне может принимать значения переменная, имеющая тип данных Byte?
- Какие значения может принимать переменная, имеющая тип данных Boolean?
- Какой тип данных обозначает тип Boolean
- Для каких переменных используется тип данных Integer?
- Для каких переменных используется тип данных Single?
- Для каких переменных используется тип данных String?
- Для каких переменных используется тип данных Variant?
- С какого символа должны начинаться имена переменных?
- Учитывается ли верхний и нижний регистр букв в именах переменных?
- Может ли имя переменной содержать пробел?
- Для чего используется инструкция Оption Explicit?
- Какой инструкцией описываются локальные переменные
- Какой инструкцией описываются личные переменные?
- Какой инструкцией описываются открытые переменные?
- Где описываются формальные переменные?
- Какой оператор используется для целочисленного деления?
- Какой оператор используется для вычисления остатка от деления?
- Какой вид имеет оператор "НЕ равно"?
- Какой вид имеет оператор "логического умножения" ?
- Какой вид имеет оператор "логического сложения"?
- Какой оператор используется для соединения строк?
- Какой оператор имеет наиболее высокий приоритет?
- В каких случаях истинно выражение "A And B"?
- В каких случаях истинно выражение "A Or B"?
- Какой вид имеет оператор "Выбора"?
- Какой вид имеет оператор "Условного перехода"?
- Какой вид имеют операторы "Цикла"?
- С какого символа начинаются комментарии?
- Какой символ используется для продолжения оператора с новой строки?
- Какой символ используется для размещения нескольких операторов в одной строке?
- Какая опция используется для передачи в процедуру параметра "по ссылке"?
- Какая опция используется для передачи в процедуру параметра "по значению"?