Учебное пособие Рекомендовано учебно-методическим советом угаэс уфа-2006

Вид материалаУчебное пособие

Содержание


2.3. Программирование в среде Visual Basic
2.3.2. Основы программирования в среде Visual Basic
2.3.2.2. Допустимые имена
2.3.2.3. Описание переменных
Dim ИмяПеременной [As [New] Тип]
Dim Number As Integer
Set xlApp1 = New Excel.Application '
Dim ZeroArr(0 To 5) As Integer
2.3.2.4.1. Динамические массивы
ReDim [Preserve] ИмяМассива(Индексы) [As Тип]
ReDim R(1 to 90)
2.3.2.4.2. Чистка массивов
Dim StrVarAr(10) As String 'массив строк переменной длины
2.3.2.4.3. Массивы объектов
2.3.2.6. Перечисленный тип
2.3.2.7. Тип данных, определенный пользователем
2.3.3. Операции Visual Basic
2.3.3.2. Операции отношения
2.3.3.3. Логические операции
2.3.3.4. Таблица истинности
...
Полное содержание
Подобный материал:
1   2   3   4   5   6   7   8   9   10

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. Массивы объектов

Для создания массива объектов на этапе конструирования необходимо:
  1. Создать в форме один из объектов из элементов управления;
  2. Скопировать объект в буфер обмена (нажмите Ctrl+C);
  3. Вставить несколько объектов из буфера обмена (несколько раз нажмите 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. Вызов функций и процедур


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

  1. ИмяПроцедуры СписокФактическихПараметров
  2. Call ИмяПроцедуры (СписокФактическихПараметров)

Инструкцию Call можно также использовать для вызова функции.

Вызов функции

Х = ИмяФункции (СписокФактическихПараметров)

СписокФактическихПараметров должен соответствовать по порядку, количеству и типам параметров спискаФормальныхПараметров, заданному в процедуре (функции) при ее определении.

Примеры:

С= Hypotenuse(A,B)

FormsClose

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

ИмяМодуля.ИмяПроцедуры СписокФактическихПараметров

Используя имена формальных параметров (с опцией ByVal), Visual Basic позволяет вводить фактические параметры в любом порядке. При этом после имени параметра ставятся двоеточие и знак равенства, после которого помещается значение параметра, например:

ИмяПроцедуры a:=l, b:=3

2.3.7. Область видимости переменной


Существуют три типа области видимости переменной.
  1. Локальные переменные описываются внутри процедуры при помощи инструкций Dim или Static и распознаются только в процедуре, в которой они описаны.
  2. Личные переменные описываются внутри модуля при помощи инструкций Dim или Private и распознаются только в модуле, в котором они описаны.
  3. Открытые переменные описываются внутри модуля при помощи инструкции 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.


  1. В каком диапазоне может принимать значения переменная, имеющая тип данных Byte?
  2. Какие значения может принимать переменная, имеющая тип данных Boolean?
  3. Какой тип данных обозначает тип Boolean
  4. Для каких переменных используется тип данных Integer?
  5. Для каких переменных используется тип данных Single?
  6. Для каких переменных используется тип данных String?
  7. Для каких переменных используется тип данных Variant?
  8. С какого символа должны начинаться имена переменных?
  9. Учитывается ли верхний и нижний регистр букв в именах переменных?
  10. Может ли имя переменной содержать пробел?
  11. Для чего используется инструкция Оption Explicit?
  12. Какой инструкцией описываются локальные переменные
  13. Какой инструкцией описываются личные переменные?
  14. Какой инструкцией описываются открытые переменные?
  15. Где описываются формальные переменные?
  16. Какой оператор используется для целочисленного деления?
  17. Какой оператор используется для вычисления остатка от деления?
  18. Какой вид имеет оператор "НЕ равно"?
  19. Какой вид имеет оператор "логического умножения" ?
  20. Какой вид имеет оператор "логического сложения"?
  21. Какой оператор используется для соединения строк?
  22. Какой оператор имеет наиболее высокий приоритет?
  23. В каких случаях истинно выражение "A And B"?
  24. В каких случаях истинно выражение "A Or B"?
  25. Какой вид имеет оператор "Выбора"?
  26. Какой вид имеет оператор "Условного перехода"?
  27. Какой вид имеют операторы "Цикла"?
  28. С какого символа начинаются комментарии?
  29. Какой символ используется для продолжения оператора с новой строки?
  30. Какой символ используется для размещения нескольких операторов в одной строке?
  31. Какая опция используется для передачи в процедуру параметра "по ссылке"?
  32. Какая опция используется для передачи в процедуру параметра "по значению"?