Билет 2

. Объявление переменных и констант

Если переменная применяется в проекте, она должна быть объявлена. Существуют следующие уровни объявления переменных и констант:

уровень процедуры (функции). Имя, объявленное в процедуре, действует только внутри этой процедуры и не действует вне этой процедуры;

уровень формы. Имя, объявленное в главной секции формы, действует во всех процедурах этой формы, но не действует в других формах и модулях;

уровень проекта. Имя, объявленное в главной секции модуля с предваряющим словом Public (Общий), действует во всех формах и модулях проекта.

Надо иметь в виду, если при объявлении переменной тип явно не указан, то будет назначен тип Variant. Такой способ объявления называется объявлением по умолчанию.

При объявлении константы необходимо задать ее имя, тип, область действия и значение.

Синтаксис объявления константы:

[Public/Private] Const ИмяКонстанты [As Тип] = Значение

В подобных определениях синтаксиса прямоугольные скобки [ ] означают, что конструкция, находящаяся внутри этих скобок, не обязательна. Символ (/) означает, что должно быть выбрано одно из слов, между которыми он поставлен. Сами же символы ([), (]), (/) в текст объявления не включаются.

Приведенное определение синтаксиса означает, что объявление константы начинается с обязательного слова Const (Константа). Перед Const может стоять одно из слов: Private (Локальный) или Public (Общий), задающих область действия константы. Затем следует имя константы. После имени может стоять слово As и наименование типа. Затем следует знак равенства и значение константы.

В определении подчеркнуто наименование той области действия, которая может быть задана по умолчанию.

В следующем примере в главной секции модуля описывается глобальная константа Age целого типа, и ей присваивается значение 54.

Public Const Age As Integer = 54

Допускается также описание нескольких констант в одной строке. В этом случае, чтобы задать тип данных, надо указать название типа для каждой константы.

В следующем примере описываются локальные константы Ag и Wg как Single.

Const Ag As Single = 3.14, Wg As Single = 2.78

Синтаксис объявления переменной:

Static/Public/Private/Dim ИмяПеременной [As Тип]

Зарезервированное слово Dim (Размерность) при объявлении переменных применяется чаще всего.

Статические переменные, описанные на уровне процедуры со словом Static вместо слова Dim, сохраняют свои значения даже после выхода из процедуры при повторном входе в эту процедуру.

Вот пример объявления переменной типа строки символов:

Dim strName As String

Если не указать тип переменной, ей будет присвоен тип Variant. При этом следует учитывать, что переменные типа Variant занимают больше места в памяти и обращение к ним происходит медленнее.

В одной строке можно объявить несколько переменных, но при этом следует для каждой указывать имя типа:

Dim a As Integer, b As Integer, c As Long

Dim e As Integer, f, g

В первой строке объявлены две переменные типа Integer и одна переменная типа Long. Во второй строке – одна переменная типа Integer, а две другие – типа Variant по умолчанию.

При объявлении переменная не получает значения, ей только отводится память, а ее значение не определено.

Можно вообще не объявлять переменные. Однако такая практика является источником ошибок, и ее надо избегать. Чтобы VB расценивал любую необъявленную переменную формы или модуля как ошибочную, в главной секции формы или модуля первой должна следововать инструкция Option Explicit. Эта инструкция налагает требование явного описания всех переменных этой формы или модуля. Если форма содержит инструкцию Option Explicit, при попытке использования неописанного или неверно введенного имени переменной при запуске проекта возникает сообщение о ошибке.

Можно так настроить среду VB, что инструкция Option Explicit будет автоматически помещаться системой VB в главной секции создаваемой формы или модуля. Для этого надо выполнить команды меню Tools (Инструменты), затем Options (Свойства), затем на вкладке Editor (Редактор) установить флажок в окошке Require Variable Declaration (требовать объявления переменных) и, наконец, щелкнуть на кнопке ОК. Но это следует сделать до создания формы или модуля.

Область действия (scope) переменной — это фрагмент программы, в кото­ром возможно обращение к данной переменной. Для переменной PL/SQL это фрагмент с момента ее объявления до конца блока. Когда

переменная выходит из своей области действия, PL/SQL освобождает память, используемую для хранения переменной, и ссылки на нее стано­вятся невозможны. На рис. 3.2 показано, что областью действия перемен­ной v_Characteг является только внутренний блок; после ключевого слова END внутреннего блока она становится недоступной. Область действия пе­ременной v_Nunber распространяется до ключевого слова END внешнего блока. Внутренний блок является областью действия обеих переменных.

Рис. 3.2. Область действия переменных

 

Область видимости (visibility) переменной — это фрагмент программы, в котором возможно обращение к этой переменной без использования ее квалифицированного имени. Область видимости всегда лежит в области действия; если переменная находится вне области своего действия, она невидима. Рассмотрим рис. 3.3. В точке 1 переменные v_AvailableFlag и v_SSN находятся в границах своих областей действия и видимы. В точке 2 обе эти переменные находятся в пределах своих областей действия, но видима только переменная. При объявлении переменной

v_SSN типа CHAR(ll) объявление NUMBER(9) становится скрытым. В этой точке все четыре переменные находятся в границах своих областей действия, но видимы только три: v_AvailableFlag, v_StartDate и v_SSN CHAR(ll). В точке 3 переменные v_StartOate и v_SSN CHAR(ll) находятся вне пределов своих областей действия и поэтому больше не видимы. Здесь действуют и видимы те же переменные, что и в точке 1: v_AvailableFlag и v_SSN NUMBER(9).

Оператор Option Explicit используется на модульном уровне для обязательного явного объявления всех переменных в модуле. Оператор имеет простой синтаксис. Он состоит только из ключевых слов Option Explicit. Оператор Option Explicit должен располагаться в модуле до объявления процедур. При использовании этого оператора, необходимо явно объявлять все переменные с помощью операторов Dim, Private, Public или Static. Если этого не сделать, то возникнет ошибка временной компиляции. Если оператор Option Explicit не используется, все не объявленные переменные, имеют тип Variant.