Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на BASIC / Visual Basic / Visual Basic 6.0 / БВГ / БурковВГ_Материалы_Расширений_электронных_лекций / БурковВГ_Лекция_Типы данных, константы и переменные и функции в VB6.doc
Скачиваний:
65
Добавлен:
02.05.2014
Размер:
217.09 Кб
Скачать

Типы данных, константы и переменные в 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

  1. Empty. Это значение имеет переменная типа Variant до того как ей присваивается ка­кое-либо значение. Это специальное значение отличное от нуля, строки нулевой длины или значения Null.

  2. Null. Наиболее часто используемое в приложениях для баз данных значение для обо­значения отсутствия данных. Присваивается переменной типа Variant.

  3. 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);

  • глобальная: переменная доступна во всем проекте, определяется в разделе (Gen­eral)(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.

И о "Видимости" переменных:

Объявлять переменные можно в самых разных местах:

  1. Внутри процедуры (или функции). В этом случае переменная будет "видна" только в коде этой процедуры (или функции). Если вы попытаетесь обратиться к такой переменной внутри кода другой процедуры, то Visual Basic сгенерирует ошибку.

  2. В самом верху кода формы, т.е. сразу после оператора Option Explicit. Это место называется разделом General Declarations (раздел Глобальных Объявлений). Такие переменные будет "видны" в любом месте кода формы. Т.е. в любой процедуре (или функции) формы. Переменные в данном месте могут быть объявлены с помощью зарезервированных слов Private и Public. Рассмотрим 3 определения: Dim myLocalVar1 As Byte Private myLocalVar2 As Integer Public myGlobalVar1 As Long Первые 2 определения абсолютно эквивалентны. Переменные объявленные таким образом будут видны в любом месте кода формы. Но только той формы, где они объявлены. В других формах обратиться к таким переменным будет нельзя. Третья переменная будет видна всему приложению в любом месте. Правда, чтобы добраться к такой переменной из кода другой формы, необходимо перед именем переменной указать ещё и имя формы, где эта переменная объявлена, например: Form1.myGlobalVar1 = 234

  3. В разделе 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 сложных задач программирования пользователями, не специализирующимися в вычислительной математике, но активно использующими вычислительные методы в своей предметной области.

Список функций по категориям

  1. Математические функции

  2. Функции обработки массивов

  3. Функции обработки строк

  4. Тригонометрические функции

  5. Функции преобразования типа данных

  6. Функции загрузки данных

  7. Функции работы с файлами

  8. Функции обработки системных параметров

  9. Функции обработки цвета

  10. Функции работы с датами

  11. Функции преобразования чисел в разные системы счисления

  12. Функции работы с объектами

  13. Финансовые функции

  14. Функции форматирования

  15. Функции работы с указателями

Недокументированные функции

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 и не обязательно располагать именованные аргументы в определен­ном порядке