Visual Basic. Программирование на Visual Basic

..........................................................................................................................

[ Главная ] [ Статьи ] [ Для новичков ] [ Примеры ] [ Программы ] [ Microsoft Agent 2.0 ] [ Пособие ] [ Уроки ] [ Разное ]
..........................................................................................................................


Выпуск 12
По страницам сайта Visaul PROGS
или Изучение VISUAL BASIC

Добавлен Пример Установить формат вводимых данных.
Прошу прошения в прошлом номере была не правильная ссылка на пример

Теперь подписчиков 35, меня это радует. 
Также раздел статьи пополнился несолькими единицами.
И самое главное появился новый раздел - Готовые кусочки программы на разные случаи жизни!
Раздел книги открыт, советую посмотреть.
Выложил Замечательное пособие.
Microsoft Agent — это набор программных сервисов.
Раздел Программы наконец все в норме можете качать.

Уроки VB
Следующий урок в следующем выпуске

Урок № 9. Из чего состоит код?

Итак, мы научились проектировать интерфейс программы. Но для полноценной программы этого не достаточно. Нужно написать код программы, который будет манипулировать элементами управления и производить какие-то вычисления. Это самый сложный этап.

Во всех языках высокого уровня программный код состоит из:

  • Переменных
  • Выражений
  • Операторов
  • Управляющих структур
  • Функций
  • Классов и объектов

Опишем каждый тип подробнее:

Переменные.

В Visual Basic переменые хранят информацию (значения). При их использовании Visual Basic резервирует область в памяти компьютера для хранения данной информации. Каждая переменная имеет своё имя. Оно может достигать 255 символов в длину, начинается всегда с буквы латинского алфавита, за которой могут следовать другие буквы, цифры и знак подчёркивания. Регистр символов значения не имеет. Приведём несколько примеров имён переменных:

numOfLetters - подходит
2Bottle - неверно, т.к. начинается не с буквы
ThisIsVeryLongName - подходит, длина 18 символов
sng.Cos - не подходит, т.к. используется точка

Именование переменных и функций очень важная штука. Я рекомендую придерживаться венгерского соглашения:

Тип
Схема именования
Пример
Константа
Имя константы должно состоять только из заглавных букв.
HWND_BROADCAST
Переменная
Имя переменной должно начинаться с маленькой буквы, далее следующий слова с большой.
numOfFonts
Функция
Имя функции должно начинаться с заглавной буквы, далее следующие слова тоже с заглавной.
SetForegroundWindow

Постарайтесь чтобы именование переменных согласно такой схеме у вас вошло в привычку. Я советую, но не настаиваю. Не нравится - пожалуйста, нызывайте как вам угодно, вот только так вы никогда не станете профессиональным программистом.

Каждая переменная имеет определённый тип. Всего в VB 14 типов переменных. Кроме того, программист может определить и свой тип. Перечислим основные типы переменных VB:

Byte - предназначен для хранения целых чисел от 0 до 255. Если переменной такого типа присвоить значение, выходящее за эти пределы, то Visual Basic сгенерирует ошибку.

Integer - предназначен для хранения целых чисел в диапазоне
-32768 до +32767, т.е. размер памяти, выделяемой под такую переменную состовляет 2 байта. (256*256=65536). Символ для обозначения - "%". Зачем он нужен, мы рассмотрим далее.

Long - предназначен для хранения целых чисел в диапазоне
-2147483648 до +2147483647, т.е. размер памяти, выделяемой под такую переменную состовляет 4 байта. (65536*65536=4294967296). Символ для обозначения - "&".

String - предназначен для хранения строковой (символьной) информации, т.е. попросту говоря - текста. Может хранить до 2 Гб. текста. Символ для обозначения - "$".

Single - предназначен для хранения дробных чисел, с точностью до 7 цифр. Диапазон отрицательных значений от -3.402823Е38 до -1.401298Е-45. Диапазон положительных значений от 1.401298Е-45 до 3.402823Е38. Длина числа может достигать 38 знаков. Занимает 4 байта памяти. Вычисления с данными переменными будут приблизительными и менее быстрыми, чем с переменными целого типа. Символ для обозначения - "!".

Double - предназначен для хранения дробных чисел, с точностью до 16 цифр. Диапазон отрицательных значений
от 1.79769313486232Е308 до -4.94065645841247Е-324.
Диапазон положительных значений
от 4.94065645841247Е-324 до 1.79769313486232Е308.
Длина числа может достигать 300 знаков. Занимает 8 байта памяти. Вычисления с данными переменными будут приблизительными и менее быстрыми, чем с переменными целого типа. Используется для научных рассчётов. Символ для обозначения - "#".

Currency - Данный тип создан для того, чтобы избежать ошибок при преобразовании чисел из десятичной формы в двоичную и наоборот (Невозможно представить 1/10 как сумму 1/2, 1/4 и т.д). Данный тип может иметь до 4 цифр после запятой, и до 14 перед ней. Внутри данного диапазона вычисления будут точными. Вычисления выполняются так же медленно, как и в случае переменных Single и Double. Данный тип очень подходит для финансовых расчётов. Символ для обозначения - "@".

Date - Этот тип данных позволяет хранить значения времени и даты в промежутке от полуночи 1 января 100 года до полуночи 31 декабря 9999 года. Если переменной присвается только значение даты, то время равняется 00:00.

Boolean - очень важный и распространённый тип данных. Позволяет хранить так называемые булевы значения, т.е. только два значения - True и False. (По русски Правда и Ложь). Используется тогда, когда вам нужно хранить только значение Да или Нет.

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

В 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. Ну и т.п. Кириллицу в имени переменной использовать нельзя.

Переходим к следующему уроку.

Арифметические операторы
Следующий оператор в следующем выпуске

оператор сравнения строк - Like

Оператор сравнения строк Like используется для сравнения строк.

Синтаксис этого оператора уже рассмотрен выше.

Замечание:

Этот оператор можно использовать для проверки строки String на маску Pattern. Это очень мощный оператор, почти аналог регулярных выражений в Perl.

Итак, работает этот ператор следующим образом. Если строка подходит под маску, то результат True. Если нет - False. Если одно из выражений Null - результат тоже Null.

Поведение оператора Like зависит от установленного по умолчанию типа сравнения строк. (оператор Option Compare).

Если установлен тип Binary (т.е. двоичное сравнение), то строки сравниваются согласно их Ascii кодам (в разных кодировках она разная). Обычно используется такая последовательность:

A < B < E < Z < a < b < e < z < А < К < Я < а < к < я

Если установлен тип Text (текстовое сравнение). При таком сравнении последовательность отличается от предыдущей, здесь большие и маленькие буквы - равны:

(A=a) < (А=а) < (B=b) < (E=e) < (К=к) < (Z=z) < (Я=я)

Самое главная функция оператора Like - это проверка на принадлежность строки какой-нибудь маске. В маске можно использовать следующие спец. символы:

? Любой отдельный символ
* Ноли или более символов
# Любая цифра (0–9).
[charlist] Любой отдельный символ, попадающий в список charlist
[!charlist] Любой отдельный символ, непопадающий в список charlist

Здесь небольшое замечание. Для того чтобы проверить принадлежность строки на маске, содержащую спец. симолы (т.е. проверить, к примеру, есть ли в строке симолы [,?,#,],*), то нужно заключить из в квадратные скобки []. Просто так ставить отдельную скобку [ или ], нельзя.

При указании списка символов, можно использовать тире (–). Например, чтобы задать последовательность от A до Z, нужно использовать маску [A-Z]. Всё, что находится в скобках не должно содержать никаких разделителей (пробелов, запятых и т.д.), иначе они тоже будут включены в последовательность.

Есть и другие важные правила при проверки по маске:

  • (!) знак в начале списка символов говорит о том, что нужно искать символы, не входящие в этот список. Если вам необходимо найти сам знак !, то нужно поставить скобки [!].
  • (–) используется для задания диапазона символов.
  • Когда задаётся диапазон символов, то он должен быть возрастающим по ASCII кодам. Т.е. [A-Z] правильная маска, а [Z-A] нет.
  • Последовательность [] интерпретируется как пустая строка "".

Примеры:

Dim MyCheck
MyCheck = "aBBBa" Like "a*a" ' Возвратит True.
MyCheck = "F" Like "[A-Z]" ' Возвратит True.
MyCheck = "F" Like "[!A-Z]" ' Возвратит False.
MyCheck = "a2a" Like "a#a" ' Возвратит True.
MyCheck = "aM5b" Like "a[L-P]#[!c-e]" ' Возвратит True.
MyCheck = "BAT123khg" Like "B?T*" ' Возвратит True.
MyCheck = "CAT123khg" Like "B?T*" ' Возвратит False.

myString = "312T-87GD-8922"

If myString Like "###[A-Z]-##[A-Z][A-Z]-####" Then ...

Функции Visual Basic
Я попытаюсь рассмотреть все

Функция CDate

CDate(Expression)

Функция CDate(Conversion to Date) преобразует выражение в тип Date

Параметры
Expression
Обязательный аргумент представляет собой любое выражение, представляющую календарную дату. Последовательность элементов даты(день, месяц, год) в аргументе Expression, распознаваемом как дата, определяются установками текущего компьютера
Пример Dim A, retval A="Июль 27,1966" ' выбираем дату ' Преобразуем результат в значение типа Date retval=CDate(A) Debug.Print retval Категория
Функции преобразования типа данных

Если вы хотите задать вопрос пишите-------------> Мне нужна помощь



..........................................................................................................................

[ Главная ] [ Диски ] [ Книги ] [ Архив рассылки ] [ Архив новостей ] [ Готовые кусочки программ ] [ Карта сайта ]
..........................................................................................................................

По страницам сайта Visaul Progs
или Изучение Visual Basic
Рассылка 'По страницам сайта Visaul Progs' >>> Подпишись на рассылку - будешь получать новые статьи , примеры и много полезной информации из первых рук!!! >>>Если у вас есть статья которой нет на сайте
пришлите ее мне-------->
Послать статью
>>>Если вы хотите задать вопрос
пишите-------->
Мне нужна помощь


Рейтинг сайтов YandeG Rambler's Top100
Реклама:

...:::Design by Mystf0rse 2005-2010 year:::...