- •Операции сравнения в vb
- •Перечень встроенных в vb6 функций по категориям
- •Часто используемые в вычислениях функции vb и возвращаемые ими значения перечислены в нижеследующей таблице
- •InputBox(Приглашение[, Заголовок][, НачЗначение])
- •Некоторые константы аргумента Кнопки
- •Процедура с нулевым списком параметров должна очистить форму и установить размер выводимых на форму символов в 30 пунктов и тип символов курсив.
Типы данных, константы и переменные в VB6.
Встроенные функции Visual Basic
Типы данных, константы и переменные являются основными элементами языка программирования VB.
В VB6 разделяет обрабатываемые данные на числа (числовой тип) , текстовые, даты и другие типы.
Типы данных
Наименование |
Тип |
Длина |
Описание |
Byte |
Байт |
1 байт |
Положительные целые числа в диапазоне 0…255 |
Integer |
Целое |
2 байта |
Целочисленные значения в диапазоне - 32 768 … 32 676 |
Long |
Длинное целое
|
4 байта |
Целочисленные значения в диапазоне -2 147 483 648 … 2 147 483 647 |
Single |
С плаваю-щей точкой одинарной точности |
4 байта |
Численные значения с плавающей точкой одинарной точности, то есть с мантиссой, округленной до 10-значных цифр в диапазоне -1.401298Е-45 ... 3.402823Е+38 |
Double |
С плаваю-щей точкой двойной точности |
8 байт |
Численные значения с плавающей точкой двойной точности в диапазоне -1.7Е+308 … 1.7Е+308 |
Boolean |
Логический |
2 байта |
Только два значения True (Истина) или False (Ложь). (По умолчанию переменной Boolean типа присваивается значение False) |
String
String *N
|
Строковый переменной длины
Строка постоянной длины N |
2*N |
Строки, содержащие до 2 000 000 000 алфавитно-цифровых символов |
Date |
Даты и время |
8 байт |
Значения даты и времени. Дата может находиться в диапазоне от 1 января 100 года до 31 декабря 9999 года
|
Object |
|
|
Особый тип данных, содержащий указатель(ссылку на адрес в памяти) на объект любого типа. |
Currency |
Денежный. |
8 байт |
Предназначен для хранения и выполнения операций с числами, имеющими 4 знака после десятичной точки, и обеспечивает правильное округление результатов денежной операции. |
Variant |
Данные любого типа. |
|
Присваивается по умолчанию неописанным переменным за исключением строк фиксированной длины и пользовательских типов данных |
Особые значения типа Variant
-
Empty. Это значение имеет переменная типа Variant до того как ей присваивается какое-либо значение. Это специальное значение отличное от нуля, строки нулевой длины или значения Null.
-
Null. Наиболее часто используемое в приложениях для баз данных значение для обозначения отсутствия данных. Присваивается переменной типа Variant.
-
Error. Это значение может принимать переменная типа Variant для указания ошибочной ситуации в процедуре.
Конструируемые типы данных
Массив - Набор однородных (с одинаковым типом данных) элементов данных, обращение к которым происходит по имени массива и набору целочисленных индексов.
Usertype - Проектируемый пользователем набор именованных элементов данных, обращение к которым производят по имени переменной и имени элемента через точку.
Переменные
Переменная – это поименованная область памяти, предназначенная для хранения данных. Имена переменных используют в операциях на алгоритмическом языке
Например, в следующем операторе переменной а присваивается сумма переменных b и c
a = b + c.
В ячейку с именем a записывается число, которое зависит от того, какие данные хранятся в ячейках с именами b и c в момент выполнения данного оператора.
При именовании переменных, процедур, функций, констант в языке VB следует соблюдать правила:
-
Имена должны начинаться с буквы и не могут иметь более 255 символов.
-
Кроме букв и цифр разрешается использовать только знак _.
-
Имена не могут совпадать с ключевыми ( зарезервированными ) словами VB.
Объявление переменных
Профессиональный стиль программирования на VB предполагает необходимость явного объявления типов переменных
Dim Имя_переменной [As Тип_данных]
Объявление переменной в операторе Dim означает резервирование для нее при выполнении программы места в памяти, объем которого зависит от объявленного типа переменной , и указания IDE ее типа. Контроль за явным описанием типов данных выполняется в VB автоматически путем задания Option Explicit в секции глобальных объявлений.
Однако VB не требует обязательного явного объявления переменных. При неявном объявлении переменные просто используются в программе и подразумевается , что они все типа Variant. При этом перед выполнением любых действий с такими переменными программа вынуждена проверять типы присваиваемых им данных в исполняемом программном коде.
Область определения переменных.
В VB есть три вида областей определения, характеризующих доступность переменной:
-
локальная: переменная доступна только в текущей процедуре, определяется внутри процедуры или функции (Dim);
-
переменные контейнера: переменная доступна только в текущей форме, модуле или классе, (Dim);
-
глобальная: переменная доступна во всем проекте, определяется в разделе (General)(Declaration) модуля, вместо оператора Dim используется зарезервированное слово Public.
Время жизни переменных. Локально объявленные переменные при выходе из процедуры удаляются из памяти, а при новом вызове процедуры инициализируются заново. Их содержимое при этом не сохраняется, что не всегда желательно. Если переменную объявить как статическую, то ее содержимое при выходе из процедуры сохранится.
Static Имя_переменной [As Тип_данных]
Private Sub Command1_Click()
Static A As Integer
Dim B As Integer
A=A+1
B=B+1
Print A
Print B
End Sub
Статическая переменная А при каждом щелчке на кнопке Command1 увеличивается на 1, нестатическая переменная В при каждом щелчке инициализируется заново, поэтому ее значение при выходе всегда равно 1.
Чтобы объявить статическими все локальные переменные процедуры необходимо записать слово
Static Sub | Function | Property ([Аргументы])
в заголовке соответствующей процедуры.
Константы
Основное отличие констант от переменных состоит в том, что их значение нельзя изменять в процессе выполнения программы. Они всегда сохраняют значения, присвоенные при разработке. Области определения для констант такие же, как и для переменных.
Синтаксис [Public Private] Const Имя_константы = Значение
Const Pi = 3.1415926535897932
S = Pi * Radius ^ 2
Константы можно объявлять и с указанием типа данных:
[Public Private] Const Имя_константы As Тип_данных = Значение
Const Pi As Double = 3.1415926535897932
В Visual Basic переменные объявляются с помощью оператора Dim, после которого следует As и Имя_Типа переменной. Например:
Dim a As Long Dim b As Byte Dim c As Long Dim numOfLetters As Long Dim myString As String Dim isLoaded As Boolean
Если не указывать As Имя_Типа, то переменная будет объявлена как Variant.
После объявления переменной ей присваивается значение по умолчанию. Для стоки это - "" (пустая строка). Для чисел - 0. Для Boolean - False. Переменная может быть использована сразу после объявления.
Переменные можно объявлять и в одной строчке, разделяя объявления запятыми:
Dim a As Long, Dim b As Integer
Здесь очень важно заметить следующую особенность. Логично было бы объявить 3 переменные типа Long следующим образом:
Dim a, b, c As Long
Такая привычка могла перейти, например, из языка C. Там все переменные действительно имели бы тот тип, который указан после последней переменной. Но не в Visual Basic! В результате такого объявления VB объявит 3 переменные, первая и вторая будут иметь тип Variant, и только третья - Long! Запомните это! А вообще, лучше объявлять каждую переменную в отдельной строчке. И, если необходимо, то логически отделить эти объявления можно просто вставив пустую строку между теми объявлениями, которые вы хотите отделить логически. Например, так:
Dim a As Long Dim b As Long
Dim myString1 As String Dim myString2 As String
Такие логические пробелы между строчками необходимы для избавления кода от его монотонности.
Присвоить значение переменной можно при помощи знака равно "=". Например:
a = 1234567 b = 234 c = 133 myString = "Visual Basic рулит" isLoaded = True
В данном примере переменным присваивались константы. Но часто бывает необходимо присвоить одной переменной значение другой. Это делается следующим образом:
a = b ' можно, т.к. переменная b "умещается" ' в тип Long (234<4294967296)
a = b + c ' теперь в a хранится сумма b + c. b = c ' тоже возможно (133 < 255) b = a ' нельзя, т.к. переменная a не укладывается ' в диапазон [0-255]. Произойдёт ошибка. myString = a ' Visual Basic сам преобразует число 1234567 ' в строку "1234567", а потом присвоит это значение ' переменной myString. Также возможно обратное действие. isLoaded = True ' всё ОК myString = myString & " однозначно!" ' здесь происходит слияние двух строк, в результате чего ' переменная myString содержит строку: ' "Visual Basic рулит однозначно!".
isLoaded = a ' возможно, т.к. Visual Basic сам преобразует тип Long ' в тип Boolean. isLoaded будет содержать True. ' Почему не False? ' Потому, что в VB False - это нуль, а любое, ' не нулевое значение - True
Выше, при описании типов переменных я указывал символ для обозначения. Этот символ можно (а иногда и нужно) использовать для объявления переменной, но без использования зарезервированных слов As Тип. Т.е. к примеру:
Dim myLongParam& Dim myString$
Здесь объявлены 2 переменные, первая имеет тип Long, вторая - String. Также можно употребрять эти спец. символы для явного указания типа константам, например:
Call MyProc (myParam1, myParam2, 5&)
Здесь, при вызове процедуры MyProc, последний параметр имеет тип Long. Если бы мы не указали значок &, то он (параметр) имел бы тип Byte. Это необходимо при использовании API функций.
Выше я уже отмечал, что Visual Basic часто, незаметно для разработчика, занимается преобразованием типов переменных на лету. К примеру, мы рассматривали такой пример:
myString = a
Переменная a имеет тип Long, а myString - String. Visual Basic сам преобразует переменную a в тип String, а затем присвоит значение переменной MyString. Это необходимо знать. Также, Visual Basic предоставляет в ваше распоряжение несколько функций преобразования типов: CLng, CBool, CDate, CStr и т.д. Каждая функция преобразует выражение к соответствующему типу. Рассмотрим распространённую ошибку программиста на VB. Пусть у нас есть код типа:
Dim a As Byte Dim b As Byte Dim c As Long a = 200 b = 200 c = a + b
Казалось бы, что если запустить такой код на выполнение, то в переменной c будет находиться значение 400 (200 + 200). Но не тут-то было :(. Visual Basic на строке c = a + b сгенерирует ошибку Overflow (Переполнение). Дело в том, что в выражении справа от знака равно складываются 2 переменные типа Byte, и Visual Basic решает, что после вычисления этого выражения, должен остаться тот же тип - Byte. Но если вспомнить то, что тип Byte может хранить значения в диапазоне 0-255, можно понять почему VB генерирует Overflow (Переполнение). 400 далеко выходит за диапазон Byte... Здесь может возникнуть вопрос: "А как же быть? Объявлять переменные a и b типом Long?". Можно поступить и так. А можно воспользоваться функций преобразования типа CLng. Тогда работоспособный код будет выглядеть следующим образом:
Dim a As Byte Dim b As Byte Dim c As Long a = 200 b = 200 c = CLng(a) + CLng(b) 'Всё в порядке, 400 - входит в тип Long
еще немного о константах:
В Visual Basic можно объявлять не только переменные, но и константы. Константа как и переменная, тоже хранит некоторое значение, но в отличие от переменной хранимое значение не может изменяться. Чтобы объявить константу необходимо использовать зарезервированное слово Const, за которым следует имя и значение (и возможно тип) константы:
Const PI = 3.1415
Здесь объявлена константа c именем pi и значением 3.1415. После объявления она может быть использована по назначению.
Можно отметить следующую особенность VB: для констант с плавающей точкой тип по умолчанию - Double, для целых чисел - Integer. (Это легко можно проверить встроенной функций VB - VarType). Для того, чтобы явно задать тип константы, необходимо после имени задать тип, к примеру
Const PI As Long = 3 ' PI = 3, PI имеет тип Long
В Visual Basic существует очень много встроенных констант, которые с легкостью могут быть использованы в ваших программах. Например, константа vbNewLine - содержит 2 символа, с ASCII кодами 13 и 10, т.е. переход на новую строку. Список констант можно посмотреть в Object Browser'е. Для его вызова необходимо нажать F2, находясь в среде Visual Basic.
И о "Видимости" переменных:
Объявлять переменные можно в самых разных местах:
-
Внутри процедуры (или функции). В этом случае переменная будет "видна" только в коде этой процедуры (или функции). Если вы попытаетесь обратиться к такой переменной внутри кода другой процедуры, то Visual Basic сгенерирует ошибку.
-
В самом верху кода формы, т.е. сразу после оператора Option Explicit. Это место называется разделом General Declarations (раздел Глобальных Объявлений). Такие переменные будет "видны" в любом месте кода формы. Т.е. в любой процедуре (или функции) формы. Переменные в данном месте могут быть объявлены с помощью зарезервированных слов Private и Public. Рассмотрим 3 определения: Dim myLocalVar1 As Byte Private myLocalVar2 As Integer Public myGlobalVar1 As Long Первые 2 определения абсолютно эквивалентны. Переменные объявленные таким образом будут видны в любом месте кода формы. Но только той формы, где они объявлены. В других формах обратиться к таким переменным будет нельзя. Третья переменная будет видна всему приложению в любом месте. Правда, чтобы добраться к такой переменной из кода другой формы, необходимо перед именем переменной указать ещё и имя формы, где эта переменная объявлена, например: Form1.myGlobalVar1 = 234
-
В разделе General Declarations модуля. Здесь действуют те же правила, что и в разделе General Declarations формы. Private (или Dim) будут "видны" только в коде модуля. А Public - везде. Отличие наблюдается только в способе доступа к переменной. Здесь не обязательно указывать имя модуля перед такой переменной. Можно просто указать её имя и всё. Хотя я не рекомендую этого делать, т.к. теряется наглядность. И, к тому же, если у вас 2 модуля, в которых объявлены переменные с одинаковыми именами, то добраться к ним можно только указав имя соответствующего модуля перед именем переменной.
Вревя « жизни» переменных:
Период существования переменной означает, как долго переменная является доступной.
Переменные, объявленные в процедуре (или функции) будут "живы" только пока выполняется эта процедура (или функция). При выходе из процедуры - переменная удаляется. При очередном вызове этой процедуры - переменная заново инициализируется. Кстати, к словам Private, Public и Dim, в процедурах и функциях можно использовать зарезервированное слово Static. Такая переменная при повторном вызове этой процедуры не будет заново инициализироваться. Она будет сохранять то значение, которое было в ней после предыдущего вызова. (такие переменные очень удобно использовать в обработке события Timer'а). Например:
Static myStat As String ' Private Static переменная
Переменные уровня формы будут "живы" только пока "жива" форма. Как только объектная переменная формы будет установлена в Nothing (или после выполнения оператора Unload), все переменные уровня этой формы удаляются.
Переменные уровня модуля "живы", пока "живёт" ваше приложение. Т.е. "живы" всегда.
Некоторые замечания:
Перед использованием переменной, её обязательно нужно объявить. Это избавит вас от лишних ошибок.
Переменным нужно давать осмысленные имена. Т.е. старайтесь не использовать имена типа a1,a2,a3,ab,ccc и т.п. Поверьте, рано или поздно вы запутаетесь в своей же программе! Лучше всего переменным давать английский эквивалент того, что хранит данная переменная. Например, для хранения некоторой суммы денег, переменная может быть названа как cashMoney. Если у вас английским не очень, то можете использовать транслит, т.е. переменную назвать, например как summaDeneg. Ну и т.п. Кириллицу в имени переменной использовать нельзя.
Выражения, операторы, встроенные функции
Выражения
Выражение – это некоторые данные или группа данных, объединенных знаками операций. Выражение строится с применением констант, переменных или литеральных значений, арифметических и логических операций и функций. Каждое выражение вычисляется до отдельного значения (числа, строки и т.п.).
Операторы
Оператором можно назвать закодированную форму инструкции алгоритма, выражающую определенные действия. Операторы (statements) в любом языке программирования являются основными исполняемыми элементами алгоритма приложения.
Код логики алгоритма состоит из процедур и процедур-функций. Процедуры и функции-процедуры состоят из операторов, а операторы состоят из ключевых слов (наименований операторов) и выражений.
Оператор присваивания. Имеет две синтаксические формы:
Let varname = expression (ранние устаревшие версии VB)
varname = expression
Переменная varname представляет любую VB-переменную, а expression – любое VB –выражение. Знак операции присваивания (=).
Операции и выражения
Операции используются для объединения, сравнения или других действий над значениями в выражениях или переменными. Операции имеют имена и обозначающие их символы – знаки операций. Значения, которые объединяются знаками операций в единое выражение, называют операндами. Наиболее часто используемыми являются арифметические и логические операции.
Арифметические операции в VB
Операция |
Описание операции |
|
А^B |
Возведение А в степень В |
|
- А |
Перемена знака А |
|
А * В |
Умножение А на В |
|
А / В |
Деление А на В |
|
А \ В |
Целочисленное деление А на В |
|
А Mod B |
Деление по модулю А на В |
|
А + В |
Сложение А с В |
|
А - В |
Вычитание В из А |
Арифметические операции выполняются в обычном порядке, свойственном языкам программирования:
-
возведение в степень ^;
-
умножение и деление *, /, \, Mod;
-
сложение и вычитание +, -.
Для изменения порядка вычислений используются скобки.
Операции сравнения в vb
Операция |
Описание операции |
А = B |
Равенство. Результат: True если А равно В, иначе False |
А <> B |
Неравенство. Результат: True если А неравно В, иначе False |
А < B |
Меньше, чем. Результат: True если А меньше В, иначе False |
А > B |
Больше, чем. Результат: True если А больше В, иначе False |
А <= B |
Меньше или равно. Результат: True если А меньше или равно В, иначе False |
А >= B |
Больше или равно. Результат: True если А больше или равно В, иначе False |
Встроенные функции Visual Basic
Visual Basic включает более 140 встроенных функций и их число постоянно растет. В 6-ой версии было добавлено 14 новых функций. Использование библиотеки готовых функций, встроенных в IDE, обеспечивает возможности решения на VB сложных задач программирования пользователями, не специализирующимися в вычислительной математике, но активно использующими вычислительные методы в своей предметной области.
Список функций по категориям
-
Математические функции
-
Функции обработки массивов
-
Функции обработки строк
-
Тригонометрические функции
-
Функции преобразования типа данных
-
Функции загрузки данных
-
Функции работы с файлами
-
Функции обработки системных параметров
-
Функции обработки цвета
-
Функции работы с датами
-
Функции преобразования чисел в разные системы счисления
-
Функции работы с объектами
-
Финансовые функции
-
Функции форматирования
-
Функции работы с указателями
Недокументированные функции
Visual Basic может содержать недокументированные функции. Чтобы увидеть эти функции, откройте Object Browser(F2), щелкните правой кнопкой в правом открывшемся окне и выберите Show Hidden Members.
В этом списке вы найдете все функции, методы ,свойства, поддерживаемые Visual Basic.
Разработчики не рекомендуют пользоваться недокументированными функциями из-за возможного отсутствия их поддержки в VB.NET,что приведет к сбою в ваших программах при запуске ваших проектов в новой среде.
Примечание1: Если имя вашей функции совпадает с именем встроенной функции Visual Basic, то ваша функция заменяет ее. В этом случае, для обращения к встроенной функции необходимо явно задавать имя класса, например VBA .IsNumeric.
Примечание2: Именованные аргументы. Функции могут иметь именованные аргументы. Именованный аргумент это аргумент, имеющий имя, определенное в библиотеке объектов. Вместо того чтобы задавать значения аргументов в порядке, определяемом синтаксисом, использование именованных аргументов позволяет присваивать им значения в произвольном порядке. Предположим, например, что метод использует три аргумента: DoSomeThing имяАрг1, имяАрг2, имяАрг3 Допустимым является присваивание значений этих аргументов в следующей инструкции: DoSomeThing имяАрг3 := 4, имяАрг2 := 5, имяАрг1 := 20 и не обязательно располагать именованные аргументы в определенном порядке