Язык Basic

Здесь так же, как и в языке C, допустимо объявление внешних объектов, которые сохраняют свои значения в течение всего времени выполнения приложения. Для того, чтобы такое время жизни могли иметь внутренние объекты, также используется ключевое слово static. Однако в отличие от языка Cв языке Basic оно определяет самостоятельную инструкцию объявления объектов, используемую вместо инструкции dim.

Пример.

static number as integer, point(1 to2) as single

Замечание. В отличие от языка C все объекты при их определении инициализируются (не содержат "мусор") следующим образом. Данные числовых типов получают значение "0", строки фиксированной длины заполняются нулями, строки переменной длины получают значение "" (пустая строка). Каждый элемент данных типа, определенного пользователем, инициализируется как отдельная переменная указанного типа.

Ключевое слово staticтакже может быть использовано при определении процедур, однако смысл его употребления в данном случае другой. Инструкция sub или function с ключевым словом staticобъявляет все свои внутренние объекты как статические, т.е. сохраняющие свои значения в течение всего времени работы приложения.

Пример.

static sub proc(...)

Область видимости объекта определяется ключевыми словами private и public. При объявлении объектов программы они определяют самостоятельные инструкции аналогично инструкции static. Эти инструкции используются при определении внешних объектов. Инструкция privateлокализует такие данные в файле, инструкция public делает объект доступным во всех файлах приложения.

Замечание. Отметим отличие инструкции public от атрибута класса памяти extern языка C. Атрибут extern делает внешний объект доступным только в тех блоках или функциях других файлов, где имеет место его объявление. Инструкция publicне требует никакого дополнительного объявления в других файлах для возможности обращения к такому объекту, но делает его доступным по всей программе, что не всегда требуется. Механизм использования extern является более гибким и предпочтительным с точки зрения надежности программы.

Использование инструкции private внутри процедуры равносильно применению инструкции dimи поэтому не имеет смысла. Использование инструкции public внутри процедуры вызовет ошибку трансляции.

Пример.

private number as integer

public point(1 to 2) as single

Действие этих ключевых слов в инструкциях subи function аналогично изложенному выше, т.е. ключевое слово private делает процедуру доступной только для процедур данного файла, а слово public – для процедур всех файлов приложения. По умолчанию, т.е. при отсутствии в инструкции sub или function этих слов, процедура рассматривается как public.

Пример.

public sub Matrix(p(9,9)as double, q(9)as double, s(9)as double, las integer, _

kas integer)

private function Max(ByValaas double, ByValbas double) as double