Переменные

Переменные 

Итак, переменная представляет собой временное хранилище для данных в вашей программе. Кто учился информатике в школе, наверное, помнит, что "переменные - это такие ящички в которых содержится информация...". В тексте программы Вы можете использовать сколько угодно перменных. Особая польза от них - это то, что Вы присваеваете нужным данным короткий и легкозапоминающийся идентификатор. Ярлычок, так сказать. Согласитесь, если Вы присвоете переменной UserName значение "Иванов Пётр Автагенович", то в дальнейшем использовать восемь символов легче, чем двадцать три!!! Переменные могут содержать практически любую информацию. 

Чтобы грамотно использовать переменную, нужно её сначала объявить, зарезервировать под неё память. Для этого используются следующие ключевые слова: Dim, Private, Public, Static, Global. Надеюсь ничего не забыл. 

Переменные можно объявлять на уровне модуля и на уровне процедуры. Под уровнем модуля подразумевается часть формы General и стандартный модуль, а под уровнем процедуры подразумевается Sub, Function и т.д. 

Пояснение использования Static. Описывает переменные только на уровне процедуры. Переменная, описанная на уровне процедуры, "живёт" только в пределах этой процедуры на протяжении работы приложения. 

Пояснение использования Dim. Описывает переменные как на уровне модуля так и на уровне процедуры. Переменная, описанная на уровне процедуры, живёт только в пределах этой процедуры и прекращает работу по оканчанию процедуры. Её мы чаще всего и применяем как счётчик, т.к. он и нужен то нам всего в данной процедуре. Переменная, описанная на уровне модуля, доступна для всех процедур данного модуля. Т.е. если Вам нужна переменная, котороую видят все функции и процедуры, тo и объявите её со словом Dim на уровне модуля. 

Пояснение использования Public. Описывает переменные на уровне модуля. Таким образом переменная стаёт глобальной, но на уровне формы и доступна всем остальным модулям. Вот вопрос из конференции: 

Описываю переменную Public в разделе формы General, присваиваю ей значение, при переходе в другую форму значение становится Null, что же это за глобальность? работаю в VB 5.0. Посоветуйте. 

Конечно, при переходе в другую форму переменная будет пустой, неизвестной для второй формы! Чтобы избежать этого нужно объявить переменную в стандартном модуле со словом Public или Global. Тогда переменная будет доступна и известна КАЖДОЙ форме. 

Пояснение использования Private. Описывает переменные как на уровне модуля так и на уровне процедуры. Переменная, описанная на уровне процедуры, живёт только в пределах этой процедуры. Переменная, описанная на уровне модуля, доступна лишь модулю, в котором она объявлена. 

Объявление всех переменных считается хорошей привычкой. В помощь забывчивым и незабывчивым есть инструкция Option Explicit. Привыкайте использовать её всегда! Помещать эту инструкцию нужно на уровне модуля и потом она проверяет каждую переменную объявлена ли она или нет? Если нет - выскакивает ошибка. 

Допустимые значения имён переменных: 

Abc;    Interstate76;    MyDate;    Eto_prawilnoe_imya_peremennoj;    Imya_peremennoj 

Недопустимые значения имён переменных: 

Name - слово, зарезервированное VB 

8kilo - в начале стоит число 

How To - состоит из двух слов. 

A_eto_ne_prawilnoe_imya_peremennoj_tak_kak_ono_soderjit_bolee_soroka_simwolow 

- имя переменной содежит более сорока символов. 

Ram&Rom - содержит в середине символ & 

Значения переменным присваюваются следующим образом: 

Counter = 13 

или 

MyName = "C.M." 

или 

DateOfBird = #06-06-99# 

или 

X = Y + Z 

или 

X = X - 1 

Вот здесь некоторые математики войдут в заблуждение: "Как переменная икс может равнятся своему значению, уменьшеному на единицу???". Объясняю: в этом случае переменной икс присваевается значение её самой, уменьшеной на единицу. Т.е. оператор "=" в этом случае не "равно", а оператор присвоения! 

Теперь о типах переменных. При объявлении лучше всего объявить переменную, тем самым указать сколько памяти нам потребуется: 

Dim uName As String 

В этом случае мы объявляем строковую переменную. Необяъвленная переменная автоматически стаёт типом Variant. 

Размер отводимой памяти под переменную зависит от вида этой переменной. Основные виды переменных: 

Тип данных

Размер

Диапазон значений

Пример использования

Interger (Целое)

2 байта

от -32 768 до 32 767

Dim Bird% 

Bird% = 37

Long Integer (Длинное целое)

4 байта

от -2 147 483 648 до 2 147 483 647

Dim Loan& 

Loan& = 350,000

Single - precision Floating point (Одинарной точности с плавающей десятичной точкой)

4 байтa

от -3.402823E38 до 3.402823E38

Dim Price! 

Price! = 899.99

Double - precision Floating point (Двойной точности с плавающей десятичной точкой)

8 байт

от -1.79769313486232D308 до 1.79769313486232D308

Dim Pi# 

Pi# = 3.1415926535

Currency (Денежные единицы)

8 байт

от -922337203685477.5808 до 922337203685477.5807

Dim Debt@ 

Debt@ = 7600300.50

String (Строка)

1 байт на символ

от 0 до 65 535 символов

Dim Dog$ 

Dog$ = "pointer"

Boolean (Логический)

2 байт

True (Истина) или False (Ложь)

Dim Flag As Boolean 

Flag = True

Date (Дата)

8 байт

от January (Январь)1, 100, до December (Декабрь) 31, 9999

Dim Birthday As Date 

Birthday =#3-1-63#

Variant (Вариант)

16 байт (для чисел); 22 байт на символ (для строк)

для всез типов данных

Dim Total 

Total = 289.13

Также пользователь может создавать свои собственные типы данных! Нужно это, например, если у Вас есть группа элементов, связанных по смыслу. Создаётся он с помощью ключевого слова Type. Для начала пример. Вы пишите программу для какого-нибудь магазина, где артикль, дата поступления и, например, срок годности поступаемого товара должны вводиться в компьютер и, соответсвенно, присваиваться переменным. Для этого нам нужны как минимум три переменные. Назовём их 

Artikl - артикль 

DatPos - дата поступления 

SrokGod - строк годности. 

Для этого можно просто создать тип переменной, содержащий все три значения! Делается это так (в модуле): 

'образовываем тип переменной Towar и устанавливаем эти компоненты: 

Type Towar 

    Artikl As String'aртикль (название) товара 

    DatPos As Date     'дата поступления 

    SrokGod As Integer 'срок годности пусть будет в месяцах ;-) 

End Type 

'теперь, например, например для всех сортов колбасы 

'объявляем переменную: 

Dim Kolbasa As Towar 

'и присваеваем значения (для этого после слова Kolbasa ставим точку!): 

Kolbasa.Artikl = "Докторская" 

Kolbasa.DatPos = #04-08-99# 

Kolbasa.SrokGod = 12