Программирование в среде VB 5.0
В приложениях VB 5.0 исполняемые строки должны размещаться внутри процедур либо функций. Операторы в VB редко используют номера строк, а любые из них обычно начинаются с новой строки. Строки ограничены длиной в 1023 символа. можно расширять строки, используя символ “_” после пробела в конце строки. Несколько операторов можно объединять в одной строке, разделяя их “ : ”.
Комментарии задаются верхней кавычкой (‘), либо оператором REM. Комментарий может быть выведен отдельной строкой, либо в конце строки. Во втором случае лучше использовать кавычку (‘), чем REM, т.к. REM здесь требует разделителя (:). Например,
DIM FARENG ‘ переменная для вычисления t0 по Фаренгейту
или
DIM FARENG : REM переменная для вычисления t0 по Фаренгейту
Оператор End - программа останавливается. После оператора End закрываются все окна, открытые программой, а сама она стирается из памяти. Внутри приложения VB может быть сколько угодно операторов End, но обычно лучше использовать только один оператор End в процедуре обработки событий QueryUnload для основной формы. В этом случае все операторы End заменяются на Unload Me, который вызывает себе QueryUnload для формы.
Одним из основных операторов является присваивание значения переменным и установка значений свойств.
Например,
1) Result = 0.5 ? 20
имя значение
переменной
Можно использовать оператор LET
2) объект.свойство = значение
txtDisplay.Text = “ “
Свойства по умолчанию
У любого объекта VB есть свойство по умолчанию. Например, для текстового поля это свойство Text. При ссылке на данное свойство можно не указывать его имя.
Например, txtDisplay=“Привет!”
Некоторые свойства могут принимать значения TRUE или FALSE. В VB5 имеются встроенные константы для обозначения данных свойств, например, cmdExit=False будет скрывать командную кнопку, пока не появится выражение cmdExit=True.
Внутри себя VB использует значение 0 для False и -1 для True (или любое ненулевое значение).
Можно использовать следующее выражение для изменения свойства на противоположное
cmdExit.Visible = Not (cmdExit.Visible).
Переменные. Имена переменных менее 255 символов начинаются с буквы, за которой следуют другие буквы, цифры или символ “_”. Регистр значения не имеет. В качестве имен переменных нельзя использовать зарезервированные слова, например, Print. Принято использовать смешанный регистр при задании имен переменных, состоящих из нескольких слов, например, CurrentValue.
Типы переменных. Используется 14 стандартных типов переменных. Можно определить и собственный тип. Основные типы:
String - строковые переменные. Для обозначения этого типа можно добавить символ “$” к концу имени.
Например, Message $ = txtDisplay.Text
Integer - целочисленная переменная в диапазоне -32768 ?+32767. Для обозначения в конце имени добавляется “%” арифметический оператор выполняется быстро.
Например, IntVar% =5
LongInteger - длинное целое от -2147483648 до +2147483647. Обозначается “&”.
LongInt&= 123456789.
SinglePrecision хранит дробные числа с точностью до 7 цифр. Для на чисел может достигать 38 знаков с обозначением “!”. Вычисления ч данными переменными будет приблизительным.
DoublePrecision “#”. Числа с точностью до 16 цифр и длиной до 300 символов. Вычисления тоже приблизительны, а скорость небольшая. Используется для научных расчетов.
Currency - используется при преобразовании десятичных чисел в двоичную форму и наоборот. Обозначение - “@”. Может иметь до 14 цифр до запятой и до 4 цифр - после. Используется для финансовых расчетов.
Date - значения даты и времени от 00 час.1 января.100 года до 00час.31 декабря.9999 г. Значение обозначается “#”.
Time = # May 5, 1999 #
Byte - для хранения целых чисел от 0 до 255. Экономит оперативную память и размеры массивов. Используется также при работе с двоичными файлами.
Variant - данные любого типа. Если VB не знает тип принимаемых данных, используется этот тип. Использование его замедляет работу программ, т.к. требует времени и ресурсы для операций преобразования типов.
В отличие от других версий Basic в одной программе нельзя использовать одни и те же имена переменных, отличающихся только типом. Например, A% и А!
При первом использовании переменной VB временно присваивает переменной тип Variant и пустое значение. Это значение исчезает в тот момент, когда переменной присваивается реальное. Любой тип данных имеет свое “пустое” значение. Для String это строка нулевой длины “ “. Для численных переменных это 0.
Можно не использовать идентификаторы для обозначения типа переменной, а использовать оператор Dim. Оператор Dim служит для объявления типов переменных.
Dim Years As Integer
Dim Amount As Currency
. . . .
Объявления можно комбинировать в одной строке.
Dim Years As Integer, Amount As Currency
Dim Result без типа присваивает переменной тип Variant.
Если в программе используются необъявленные переменные, легко допустить ошибку при написании их имени. В этом случае используется принудительное объявление переменных с помощью оператора Option Explicit. Этот оператор не используется в конкретных процедурах обработки событий, а размещается в разделе General формы, чтобы быть доступным всем процедурам обработки событий. После того, как VB встречает оператор Option Explicit, он не позволяет более использовать необъявленные переменные. Этот оператор можно использовать для изменения значений по умолчанию.
Область видимости переменных
В программах VB5 все переменные изолированы внутри процедур. То есть переменная Result в одной процедуре не влияет на значение переменной с тем же именем в другой процедуре. То есть переменные являются локальными по отношению к процедурам, если не указано иначе.
Иногда необходимо, чтобы какая-то переменная была доступна всем процедурам формы. Такие переменные называют переменными уровня формы или модуля. Переменные уровня формы также объявляются в разделе General с помощью операторов Private или Dim.
В больших проектах, в которых процедуры и формы хранятся в отдельных модулях, а не подключаются к форме, можно объявить глобальную переменную, доступную в любой части проекта.
Это делается в разделе Declarations любого модуля кода:
Public Amount As Single
или Global Amount As Single
Когда VB вызывает процедуру обработки события, старые значения локальных переменных уничтожаются. Они принимают значения по умолчанию. Такие переменные называются динамическими. Но в некоторых случаях необходимы статические переменные, которые не инициализируются повторно при вызове процедуры. Часто такие переменные используются для счетчиков, их используют, чтобы сделать элементы управления видимыми или невидимыми. Чтобы объявить статическую переменную внутри процедуры необходим оператор Dim заменить на Static.
Static Amount As Single, Is_Visible As Boolean.
Если необходимо, чтобы все переменные в процедуре были статическими, необходимо добавить
Static Private Sub cmdLom_Click()
Строки
Операция конкатенации для сложения нескольких строк + или &
Например, A$ = “Иванов”
B$ = “Иван”
C$ = “Иванович”
D$ = A$ & B$ & C$
или D$ = A$ + B$ + C$
Отличие. С помощью “&” можно объединять строковые и другие типы. Например, C = A% & B$, изменится их тип на Variant.
Для перехода к новой строке при печати символов (перевод каретки) используется встроенная const VbCrLf. Например, чтобы разорвать строку в информационной панели или в многостроковом текстовом поле можно
Message $ = “1-я строка”
Message $ = Message $+VbCrLf + “2-я строка”
MsgBox Message $
Замечание. Если в программе используются числа и они не присваиваются переменной Variant, то VB полагает:
1) Если число не имеет десятичной точки и лежит в диапазоне от -327686 +32767, то это Integer.
2) Если не имеет десятичной точки и лежит в диапазоне для Long Integer, то это Long Int.
3) Если имеет десятичную точку и лежит в диапазоне для чисел с обычной точностью (7 цифр), то это Single precision.
4) Если имеет десятичную точку, но лежит вне диапазона, то это Double precision.
Такие приблизительные расчеты часто приводят к проблемам. Например, VB полагает, что тип результата с двумя целыми числами есть целое. Например результат Print 123456 ?789 выходит за рамки целого и возникает ошибка переполнения. Тогда необходимо использовать идентификатор хотя бы для одной переменной Print 123456& ?789.
Можно также использовать встроенные функции для преобразования типов, например, LInt - округляет число до целого, Clong - до длинного целого, Cvar - преобразует к Var.
Если производятся операции с переменными Variant, то не возникает проблем с преобразованием типов.
Помимо обычных, десятичных чисел, VB использует двоичные и шестнадцатеричные. Последние обозначаются с префиксом &H. Например, число 49 = &H31.
Шестнадцатиричные цифры используются для кодирования различных цветов: любой цветовой код состоит из 6 шестнадцатиричных цифр от &H000000& = 0 до &HFFFFFF& (длинное целое) (16777215).
Вообще конкретный цвет определяется количеством красного R, зеленого G и синего цветов B во всевозможных сочетаниях. В коде цвета VB две последние цифры означают количество красного, две средние - количество зеленого, а две первые - количество синего, например
&H0000FF& - максимально красный
&H00FF00& - максимально зеленый
&HFF0000& - максимально синий
&H000000& - черный
&HFFFFFF& - белый
&H00FFFF& - желтый (красный + зеленый)
&H808080& - серый (равные количества цветов)
Константы
Для неизменных значений в программе используются константы. Константы объявляются аналогично переменным, по тем же правилам: имя содержит не более 200 символов, первый символ буква. Если в программе используется только одна форма, то константу можно объявить в разделе DeclarationHous для объекта General. Или же можно и непосредственно в процедуре, но это хуже. Константу объявляют через зарезервированные слова Const. Например,
Const Pi = 3?14159
Const Course = “Informatics”
VB5 имеет только набор встроенных констант, например, VbCrLf или VbOrOnly. Их можно вставлять в текст программы из окна Object Browser (F2 или меню View). Чтобы вставить Const в программе:
Курсор должен быть в окне кода.
В окне Object Browser щелкнуть на кнопке Copy to Clipboard.
Перейти в программе на место вставки и нажать Ctrl+V.
Встроенные функции
Особое значение имеют строковые функции, т.к. в полях ввода информация хранится в текстовом формате или в формате ariant. Использование же неявных преобразований типов из Variant часто приводит к проблемам и является более медленным.
Строковые функции:
= Space (число пробелов) - выдает строку, состоящую из одних пробелов, причем число символов в строке определяется параметром в скобках.
= String (число, строковое выражение $) - формирует строку, содержащую одинаковые символы.
Например, X$=String (10, “z”) - 10z
= Len (строковое выражение) - длина текущей строки с проблемами и напечатанными символами.
= Mid (строка, начало [, длина])
Mid (“Visual Basic”, 1,6) = “Visual”
Mid (“Visual Basic”, 8,6) = “Basic”
Mid (“Visual Basic”, 8) = “Basic”
Пример. Подсчет числа точек в строке
Points % = 0
Length % = Len (Text $)
For I% = 1 to Length %
If Mid (Text $, I%, 1) = “.” then
Points $ = Points $ + 1
End If
Next I%
= Left (cтрока, № до позиции)
= Right (строка, с № позиции)
Функцию Mid можно использовать для изменения содержания внутри текущей строки. Например
X $ = “Best Basic”
Mid (X $,1,5) = “Quick”
какое количество символов
с какого символа будет взято из новой строки
вставляется новая
строка поверх части старой
= Insert ([начальная позиция], строка для поиска, подстрока)
является ли данная строка частью другой строки, выдает номер позиции, с которой начинается подстрока.
Text $ = “QuickBasic”
X $ = Instr (1, Text $, “Basic”)=6.
Если подстрока не найдена Instr возвращает нулевое значение (False).
Пример.
If Instr (Text $, “?”) then
Print “символ найден”
Else
Print “Не найден”
End If
= LСase, = UСase - преобразует все символы строки в нижний (верхний) регистр
Вместо Lcase $ Ucase$
= Str lomp - для сравнения строк
Пусть X = StrComp (A$, B$) =
Если A$ или B$ пуста, то х=NULL
Если использовать StrComp (A$,B$,1) - регистр не учитывается, а если StrComp (A$,B$,0) - регистр учитывается.
= Trim (строка $) - уничтожает пробелы начале и конце строки
LTrim (строка $) - уничтожает пробелы в левой части строки
RTrim(строка $) - уничтожает пробелы в правой части
Все строковые функции, за исключением Mid, не изменяют строку, а создают ее копию и потом с ней работают.
Управляющие структуры в программе
Определенные циклы
For ___ Next
For I% = 1 to 10 (% - целочисленный тип для ускорения работы цикла)
Print I%
Next I%
Цикл завершается, не в тот момент, когда значение счетчика равняется конечному, а когда оно превышает его.
Пример. Печать всеми доступными шрифтами экрана.
Private Sub Form_Click()
Dim I As Integer
For I=0 to Screen.FontCount - 1
FontName = Screen.Fonts (I)
Print “Это шрифт”; Screen.Fonts (I)
Next I
End Sub
Неопределенные циклы
Не выполняются фиксированное число раз. Цикл может выполняться или нет в зависимости от результата, вычисляемого внутри цикла
Do
Выражение
Loop Until выполняется условие
Пример. Проверка пароля
Private Sub Form_Load ()
Do
X$ = InputBox$ (“Пароль ?”)
Loop Until X$ = “VB”
End Sub
Для остановки бесконечного процесса используют клавиши “Break” или Run|End или закрыть приложение. В программе можно использовать оператор Exit Do (или Exit For), которые переводят программу к оператору следующему после цикла.
Сложные неопределенные циклы
В неопределенных циклах проверка происходит в конце цикла и счетчика увеличивается еще на 1. Иногда это вызывает лишнее обновление счетчика. Можно передвинуть проверку условия на начало цикла:
Do Until условие
Тело цикла Выражение
Loop
Do While
Do
Loop Until аналогичен
Do
Loop While условие
Пример.
Do Do
Loop Until N>5 ? Loop While N <=5
Do While
Do
Выражение
Loop While условие
или
Do While условие
Выражение
Loop
В таких циклах можно объединять несколько условий, например
Do While X<=0 and txtDisplay.Text=“ “
?
?
Loop
Цикл While /Wend
While условие
. . . . .
Wend
Например, While x>0
S = S+x
Wend
Может быть несколько вложенных циклов. Любой Wend относится к ближайшему While. Do __ Loop дает структуру и гибкость цикла.
Условные операторы
If условие Then оператор
Например, If N>=0 and N<=9 Then Print “Ok”
Если в выражении If __ Then обрабатывается несколько операторов, тогда используется так называемый блок If __ Then.
While Wend
Вместо Do While x=0
Loop
While x=0
Wend
If условное выражение Then (Enter) несколько операторов Else необяза- несколько операторов тельно End If | If выражение Then оператор Else If выражение Then оператор . . . Else оператор End If |
Оператор Select Case
Позволяет обрабатывать несколько вариантов выбора.
Select Case переменная или выражение
Case оператор проверки условия
действие 1
.
.
.
Case . . . . . .
действие n-1
End Select
Пример:
Select Case Ball
Case Is < 13 позволяет проверить значение переменной
Grade = 2
Case Is < 18
Grade = 3
Case Is < 22
Grade = 4
Case Else
Grade = 5
End Select
Пример 1. If Then Else
Private Sub Form_QueryUnload(Cansel As Integer, UnloadMode As Integer)
X % = MgBox(«Вы уверены?», VbYesNo)
If X % = VbNo Then
Cancel = True
Else
Cancel = False
End IF
End Sub
Пример 2.
If optColor1.Value Then
Color$ = «Красный»
Else If optColor2.Value Then
Color$ = «Зеленый»
Else If optColor3.Value Then
Color$ = «Синий»
Else
Color$ = «Белый»
End If
Пример:
Select Case Den
Case 1
Print «Пн»
Case 2
Print «Вт»
.
.
.
Case 7
Print «Вс»
End Select
В фразе Case можно задавать значения переменной в виде диапазона
Select Case Den
Case 1 to 5
Print «Рабочий день»
Case Else
Print «Выходной»
End Select
либо перечислением возможных значений
Select Case Den
Case 6, 7
Print «Выходной»
Case Else
Print «Рабочий день»
End Select
Массивы
... метод доступа с передачей полномочия. Охарактеризовать метод множественного доступа с разделением частоты. Какие существуют варианты использования множественного доступа с разделением во времени? Лекция 5.ЛВС и компоненты ЛВС Компьютерная сеть состоит из трех основных аппаратных компонент и двух программных, которые должны работать согласованно. Для корректной работы устройств в сети их нужно ...
... университет П. Е. Матвеев ЭТИКА. Основы хозяйственной этики Владимир 2003 Министерство образования Российской Федерации Владимирский государственный университет П.Е. Матвеев ЭТИКА. Основы хозяйственной этики Курс лекций Ч а с т ь в т о р а я Владимир 2003 ББК 87.715.4 М 33 Рецензенты:Доктор философских наук, доктор юридических наук, профессор Владимирского юридического института ...
... . М., НОРМА,2003. 10. Теория государства и права. Учебник./ Под ред. В.М. Корельского, В.Д.Перевалова. М., НОРМА, 2001. 11. Теория государства и права. Курс лекций./ Под ред. М.Н.Марченко. М., Зерцало, 1998. 12.Правоведение. Учебник./ Под ред О.Е.Кутафина. М., Юристъ,2001. 13.Варывдин В.А. Право.Курс лекций. М.,1999. ДОПОЛНИТЕЛЬНАЯ ЛИТЕРАТУРА 14. Козлова Е.Н., ...
... платы. 4.Расширение общественных фондов потребления снижало заинтересованность личности в результатах своего труда. 1 В Полном собрании сочинений В.И.Ленина нет никаких высказываний, о которых говорит И.В.Сталин. В.Н. Гузаров и Н.И. Гузарова Курс лекций «История России: 1861-1995 гг. Томск - 1999Глава 1. Введение к курсу «Истории России» Территория современной России, огромной страны, ...
0 комментариев