Как и в других языках программирования, в VBA для хранения временных значений, передачи параметров и проведения вычислений используются переменные. Кратко остановимся на основных особенностях описания и использования переменных в VBA.
Обычно перед тем, как использовать переменную, производится ее объявление, т. е. вы заранее сообщаете Visual Basic, какие именно имена переменных вы будете использовать в своей программе, при этом объявляется также тип данных, для хранения которых предназначена эта переменная. В VBA, как и в обычном языке Basic, для этого используется оператор Dim. Вот синтаксис этого оператора:
Dim [Аs]
В VBA действуют следующие правила именования переменных. Имя не может быть длиннее 255 символов, оно должно начинаться с буквы, за которой могут следовать буквы, цифры или символ подчеркивания. Оно не должно содержать пробелов, знаков препинания или специальных символов, за исключением самого последнего знака. В конце к имени переменной может быть добавлен еще один из следующих шести специальных символов — описателей типа данных:
Переменные. Способы объявления. Правила именования. C++ для начинающих. Урок #5.
Эти символы не являются частью имени переменной: если в программе используются одновременно имена stringl$ и stringl, то они ссылаются на одну и ту же строковую переменную. Нельзя использовать одно и то же имя переменной с разными символами определения типа данных или одновременно явное описание типа данных и не соответствующий этому типу данных специальный символ. Мы еще остановимся на этом подробнее при обсуждении типов данных.
Кроме того, не допускается использование в качестве имен переменных ключевых слов VBA и имен стандартных объектов. Именно поэтому рекомендуется начинать имена переменных со строчной, а не с прописной буквы. Поскольку у ключевых слов VBA и имен стандартных объектов первая буква при вводе автоматически преобразуется в прописную, вы будете избавлены от риска нечаянно использовать запрещенное имя переменной.
Допускается использование в именах переменных букв не только латинского алфавита, но и кириллицы, что может оказаться удобным для русских пользователей: при желании можно давать переменным имена на русском языке.
Во многих языках программирования, например в Pascal, переменные должны быть объявлены обязательно, и эти объявления используются компилятором, чтобы зарезервировать память для переменных. В то же время в VBA объявление переменных не яаляется обязательным. Как и в его предшественнике, обычном языке Basic, допускается использование неописанных переменных. Выделение памяти переменным может выполняться динамически, а тип данных, хранящихся в переменной, может определяться по последнему символу имени переменной.
В свое время велись длительные баталии между сторонниками сокращения записи процедур за счет отказа от объявлений переменных и сторонниками обязательного описания всех переменных. Аргументы обеих сторон были достаточно серьезны — действительно, зачастую обязательное описание всех переменных требует изрядной доли занудства при методичном выписывании объявлений типа
Python для начинающих. Как работают переменные в Python. #2
Dim i As Integer, j As Integer Dim x As Double
С другой стороны, трудно что-нибудь возразить и против того, что одним из самых опасных источников труднообнаружимых ошибок в языках программирования, допускающих применение неописанных переменных, служат опечатки в написании имен переменных. Такие опечатки истолковываются транслятором как появление еще одной, новой переменной, отличной от ранее использовавшейся, и не воспринимаются как ошибки. Порой для обнаружения такой опечатки требуется время, во много раз превосходящее то, которое потребовааось бы на явное описание всех используемых в программе переменных.
В VBA принято поистине соломоново решение — предоставить разрешение этой дилеммы самому программисту. В этом языке имеется оператор
Option Explicit
Если вы начнете свой модуль с этого оператора (он должен быть расположен в самом начале модуля, до того, как начнется первая процедура этого модуля), то VBA будет требовать обязательного объявления переменных в этом модуле и генерировать сообщения об ошибке всякий раз, как встретит необъявленную переменную. Кроме того, если вы строгий пуританин и хотели бы, чтобы это требование стало обязательным для всех ваших модулей без исключения, вы можете установить параметр Require Variable Declaration (Явное описание переменных) на вкладке Editor (Редактор) диалогового окна Options (Параметры) редактора VBA. (Подробнее об установке параметров редактора VBA будет рассказано в разд. «Среда программирования Access 2002» ниже в данной главе.)
Установка этого параметра приведет к тому, что редактор Visual Basic будет автоматически добавлять оператор Option Explicit в начало каждого вновь создаваемого модуля. Учтите, однако, что этот флажок не влияет на все ранее созданные модули — если вы хотите добавить этот оператор к уже существующим модулям, вам придется проделать это вручную.
Приведем теперь краткую сводку используемых типов данных VBA (табл. 13.1).
Таблица 13.1. Типы данных VBA
Если же последний символ не является ни одним из вышеперечисленных и явное указание типа тоже не используется, в этом случае переменной будет назначен по умолчанию тип данных Variant, который позволяет хранить в ней данные любого типа.
Учтите также, что нельзя использовать в одной и той же процедуре имена переменных, отличающиеся друг от друга только специальным символом определения типа в конце переменной. Например, не допускается одновременное использование переменных var$ и var%. He допускается и явное объявление переменной, уже содержащей символ определения типа в конце имени, с помощью описателя As (даже если такое определение не противоречит обычному применению символа определения типа). Так, например, вы получите сообщение об ошибке, попытавшись ввести любое из следующих определений:
Dim var1% As String Dim var2% As Integer
Для определения типа данных аргументов процедуры или функции используется описание типа данных непосредственно в заглавной строке процедуры или функции. Например, следующая заглавная строка процедуры описывает ее параметры как переменные строкового типа:
Sub SplitStr(str1 As String, str2 As String, str3 As String)
Определение типа данных возвращаемого функцией значения завершает заглавную строку функции, например:
Function FindSplitSpace (strl As String) As Integer
описывает возвращаемое функцией значение как переменную короткого целого типа.
Чтобы программа работала быстрее и занимала меньше памяти, рекомендуется использовать, когда это возможно, конкретные типы переменных, а не универсальный тип Variant. На обработку переменных типа Variant требуется не только дополнительная память (сравните размеры, приведенные в табл.
13.1), но и дополнительное время: требуется выяснить, к какому конкретному типу данных принадлежит такая переменная в момент обработки, а также при необходимости выполнить преобразование данных к нужному типу. Может показаться, что в таком случае лучше вообще не использовать подобные переменные. Это не так. Часто подобные переменные просто необходимы: например, в том случае, когда вы точно не уверены, какие именно данные будут присвоены переменной.
Приведем здесь лишь один пример. Если вы хотите, чтобы пользователь программы ввел некоторое целое значение, необходимое для дальнейшей работы программы, и описали для этого переменную целого типа, то рекомендуется использовать для ввода данных промежуточную переменную, описанную как Variant, а затем выполнить присваивание введенного значения нужной переменной (или же описать переменную, в которую вы хотите поместить это значение как Variant, несмотря на то, что ввести предполагается именно целое число). Дело в том, что пользователь может ошибиться и ввести, например, вещественное число или вообще нечаянно нажать не на ту клавишу и ввести строковое значение. В таком случае при присваивании введенного значения переменной целого типа произойдет ошибка во время выполнения программы. Если же переменная для ввода будет объявлена как Variant, ничего страшного не случится: введенное значение будет благополучно присвоено этой переменной, а вы получите возможность проанализировать введенное значение и попросить пользователя повторить ввод, если введенное им значение не отвечает нужным условиям.
И в завершение этого раздела обсудим использование именованных констант. Для их описания применяется оператор Const, схожий с оператором описания переменных Dim. Вот синтаксис этого оператора:
Const [As ] =
где — эго любое значение или формула, возвращающая значение, которое должно использоваться в качестве константы. Например, следующий оператор определяет целую константу maxLen:
Const maxLen% = 30
Как и переменные, константы могут содержать значения различных типов данных, но при этом они не меняют своих значений во время выполнения программы.
Если вы собираетесь использовать в вашей программе какие-либо константы, то рекомендуется дать этим константам осмысленные имена и описать их в самом начале модуля, а затем использовать всюду только именованные константы. Это не только делает программу понятнее, но и проще в сопровождении и отладке. Зачастую значение той или иной константы требуется изменить (хотя бы на время отладки), и тогда достаточно поменять лишь одно значение в описании именованной константы. Если же непосредственное значение использовалось прямо в тексте кода программы, то изменить все вхождения этого значения намного сложнее.
Кроме описываемых пользователем констант, существуют еще предопределенные встроенные константы, которые включаются в тексты программ без предварительного описания. Сведения о предопределенных встроенных константах, используемых для различных объектов приложений Microsoft Office и Visual Basic, можно найти в справке—в разделах описания свойств объектов (реже — в разделах описания методов). При именовании встроенных констант используется стандартное соглашение, позволяющее определить, к объектам какого приложения относится эта константа. Например, встроенные константы, относящиеся к объектам Access, начинаются с префикса ас, относящиеся к объектам Excel — с префикса xl, относящиеся к объектам Word — с префикса wd, а относящиеся к объектам VBA — с префикса vb. Например, в команде
DoCmd.OpenForm «Orders», acNormal, , stLinkCriteria
используется встроенная константа Access acNormal.
Источник: www.taurion.ru
C++. Понятие переменной. Объявление переменной. Локальные и глобальные переменные. Выделение памяти для переменных. Константы
Понятие переменной. Объявление переменной. Локальные и глобальные переменные. Операция расширения области видимости :: . Выделение памяти для переменных. Константы
Поиск на других ресурсах:
1. Что называется переменной?
Переменная (variable) в программе – это именованная ячейка памяти, которая предназначена для сохранения некоторого значения. Сохраненное значение может быть результатом вычисления выражения, числовой или строчной константой и т.д.
При разработке программы, программист по собственному усмотрению дает имена переменным. Имя переменной есть именем идентификатора. Это имя должно соответствовать синтаксису языка C/C++. Более подробно об именах переменных описывается в теме:
Для решения задачи, программист может использовать любое количество переменных в программе. Чаще всего переменные используются в выражениях при проведении вычислений.
Желательно, чтобы имя переменной отвечало ее предназначению в программе. Например, если переменная используется для сохранения некоторого максимального значения, тогда ее имя может быть Max (например).
В языке C/C++ каждая переменная должна иметь собственный тип. Более подробно о типах данных C/C++ описывается в статье:
2. Какой общий вид описания переменной в C/C++?
Общий вид описания переменной:
тип список_переменных;
- тип – тип данных, соответствующий переменным из список_переменных ;
- список_переменных – перечень переменных заданного типа, разделенных запятой.
Переменная может иметь до 1024 символов любого имени.
Пример объявления переменных разных типов.
int a, b, c; char sym; bool f_is; float x, y; double z;
3. В каких местах программы можно объявлять переменные? Как классифицируются переменные в зависимости от места объявления в программе?
Переменные могут быть объявлены:
- внутри функций;
- в определении параметров функций;
- за пределами всех функций.
В зависимости от места объявления в программе, переменные классифицируются следующим образом:
- локальные переменные (объявляются внутри функций);
- формальные параметры (есть параметрами функций);
- глобальные переменные (объявляются за пределами функций).
4. Что такое локальные переменные? В каких местах программы объявляются локальные переменные?
Локальные переменные – это переменные, которые объявлены (описаны) внутри функций. Доступ к таким переменным имеют только операторы, которые используются в теле функции.
Локальные переменные создаются в момент вызова функции. Как только выполнение функции завершается, локальные переменные уничтожаются.
Пример. Пусть дана функция GetMax3() , определяющая максимальное значение между тремя числами. В функции описывается локальная переменная res . Область действия переменной определена фигурными скобками < >.
. int GetMax3(int a, int b, int c) < int res; // res — локальная переменная res = a; if (resif (resreturn res; > .
5. Что означает термин «разрушение переменной»?
Локальные переменные создаются в момент вызова функции. Как только выполнение функции завершается, локальные переменные разрушаются. Термин «разрушение переменной» означает: разрушение переменной в оперативной памяти после завершения функции, в которой эта переменная была объявлена.
6. Что означает термин «формальный параметр»?
Формальный параметр – это переменная, которая есть входным параметром функции. При вызове функции, ей передаются аргументы. Значение этих аргументов копируются в формальные параметры функции в порядке их вызова.
Формальные параметры объявляются после имени функции внутри круглых скобок ( ) .
Пример. Пусть даны объявления функции GetMax3() , которая находит максимальное значение между тремя целыми числами.
. // Объявление функции GetMax3 int GetMax3(int a, int b, int c) < // a, b, c — формальные параметры int res; // res — локальная переменная res = a; if (resif (resreturn res; > . // Вызов функции GetMax3() из другого программного кода max = GetMax3(8, 5, 11); // числа 8, 5, 11 есть аргументами функции .
В данном примере, в функции GetMax3() есть 3 формальных параметра с именами a , b , c . При вызове функции из другого программного кода ей передаются 3 числа (аргумента), которые копируются в формальные параметры. Число 8 копируется в формальный параметр a . Число 5 копируется в формальный параметр b . Число 11 копируется в формальный параметр c .
7. Что такое глобальные переменные? Какое отличие между глобальными и локальными переменными?
Глобальная переменная – это переменная, доступ к которой имеют все функции в программе. Глобальные переменные сохраняют свои значения на протяжении всего времени выполнения программы. Это время называется временем жизни глобальной переменной.
Глобальная переменная объявляется за пределами всех функций.
Пример. В данном примере объявлена глобальная переменная max и две функции GetMax2() и GetMax3() .
. int max; // max — глобальная переменная // Объявление функции GetMax2 int GetMax2(int a, int b) < // a, b — формальные параметры max = a; // использование глобальной переменной max в функции GetMax2() if (maxreturn max; > // Объявление функции GetMax3 int GetMax3(int a, int b, int c) < // a, b, c — формальные параметры max = a; // использование глобальной переменной max в функции GetMax3() if (maxif (maxreturn max; >
8.
Примеры объявления переменных разных типов
int a, b, c; char sym; bool f_is; float x, y; double z;
9. Как выделяется память для переменных целочисленных типов?
При объявлении переменной для нее выделяется память. Размер памяти, которая выделяется, зависит от типа переменной.
Размер выделенной памяти влияет на диапазон значений, которые может принимать переменная.
Для переменных целых типов выделяется память соответственно нижеследующим таблицам.
Для 16-разрядной среды.
(аналогичен типу int)
(аналогичен типу int)
(аналогичен типу unsigned int)
(аналогичен типу int)
-2 147 483 648 … 2 147 483 647
(аналогичен типу long int)
Для 32-разрядной среды.
-2 147 483 648 … 2 147 483 647
(аналогичен типу int)
-2 147 483 648 … 2 147 483 647
(аналогичен типу int)
(аналогичен типу unsigned int)
-2 147 483 648 … 2 147 483 647
(аналогичен типу signed int)
Начиная с версии C++ 11 были введены два новых целочисленных типа данных: long long и unsigned long long . При объявлении переменной одним из этих типов выделяется 64 бита (8 байт) памяти.
Диапазон значений для типа long long
-9223372036854775808 . 9223372036854775807
Диапазон значений для типа unsigned long long
0 . 18446744073709551615
10. Как выделяется память для переменных типов с плавающей запятой?
Для типов с плавающей запятой таблица выделенной памяти для переменной имеет вид как показано ниже. Выделение памяти для переменных типов с плавающей запятой не зависит от того, какую разрядность имеет среда (16 или 32 разряда).
Тип | Размер в битах | Диапазон значений |
float | 32 | 3.4E-38 … 3.4E+38 |
double | 64 | 1.7E-308 … 1.7E+308 |
long double | 80 | 3.4E-4932 … 3.4E+4932 |
11. Как выделяется память для переменных символьных ( char ) типов?
Для переменных символьного типа независимо от среды (16 или 32 разряда) выделяется память на основе следующей таблицы.
Тип | Размер в битах | Диапазон значений |
char | 8 | -128 … 127 |
unsigned char | 8 | 0 … 255 |
signed char | 8 | -128 … 127 |
12. Что такое константы в языке программирования C++? Как объявить константу?
Константа – это есть переменная, которая не может изменять своего значения на протяжении всего времени выполнения программы. Значение константе присваивается при ее объявлении. Для объявления константы используется ключевое слово const.
Общий вид объявления константы
const тип имя_константы = константное_значение;
- тип – тип который получает константа;
- имя_константы – имя, по которому будет осуществляться использование константного значения.
Примеры объявления констант.
const float Pi = 3.1415; // Число Пи const int Max = 1000; // константа с именем Max int const Min = 100; // константа с именем Min const char New_Line = ‘n’; const bool YES = true;
13.
Доступ к глобальным переменным всередине функций. Операция расширения области видимости :: . Пример
При разработке собственных программ, содержащих глобальные переменные, может возникнуть ситуация, когда в теле функции используется локальная переменная с таким же именем. В этом случае имя локальной переменной перекрывает имя глобальной переменной. При обращении к имени в теле функции принимается ко вниманию локальная переменная (глобальная переменная игнорируется). Если возникла такая ситуация, то для доступа к глобальной переменной можно использовать операцию расширения области видимости, которая обозначается :: .
С помощью операции расширения области видимости :: можно получить доступ не только к переменным, но и к константам и функциям.
Пример.
В примере продемонстрировано:
- использование локальных и глобальных переменных;
- использование прототипа функции;
- использование операции расширения области видимости :: для доступа к глобальной переменной.
#include using namespace std; // Глобальные и локальные переменные. Операция :: // Объявить глобальную переменную d. // Эта переменная доступна в обеих функциях: MultGlobal2() и main() int d = 15; // Прототип функции, умножающей глобальную переменную d на 2 int MultGlobal2(void); void main() < // Объявить локальную переменную d в функции main() int d; // 1. Вывести значение локальной переменной d d = 25; cout «Local: d color: #008000;»>// d = 25 — локальная переменная переопределяет глобальную переменную // 2. Вывести значение глобальной переменной d, // используется операция :: — расширение области видимости cout «Global: d color: #008000;»> // 3. Вывести удвоенное значение глобальной переменной d cout «Global: d*2 color: #008000;»>// d*2 = 30 // 4. Записать в локальную переменную d новое значение 27 d = 27; cout «Local: d color: #008000;»> // 5. Записать в глобальную переменную d новое значение 68 ::d = 68; cout «Global: d color: #008000;»>// глобальная переменная d = 68 // 6. Вывести удвоенное значение глобальной переменной ::d cout «Global d * 2 color: #008000;»>// будет выведено 136 > // Функция, которая использует значение глобальной переменной d. // К локальной переменной d в функції main() эта функция доступа не имеет int MultGlobal2(void) < // здесь доступна глобальная переменная d return d * 2; >
Результат выполнения программы
Local: d = 25 Global: d = 15 Global: d*2 = 30 Local: d = 27 Global: d = 68 Global d * 2 = 136
Связанные темы
- C++. Идентификаторы, зарезервированные слова, литералы, управляющие последовательности
- Базовые типы данных С++
- Понятие выражения. Операция присваивания. Преобразование и приведение типов
Источник: www.bestprog.net
Использование переменных в программе
Каждая переменная, используемая в программе на С++ должна быть объявлена. При объявлении указывается тип переменной и ее имя.
При описании переменной можно присвоить начальное значение (инициализировать). Значение указывается после знака «=» или в круглых скобках.
Примеры описания переменных:
float x, y = 0.78, z(0.2);
Значение переменной позже можно изменить с помощью операции присваивания «=». Обратите внимание, что присваивание – это именно операция, и она имеет значение, равное присваиваемому значению. Поэтому в С++ абсолютно корректны следующие операторы:
x = 0.25; x = (y = 7.21); x = y = z = 1.2345;
Если перед именем типа при описании переменной указано служебное слово const, то значение переменной в программе изменять нельзя. Такая переменная является константой. Она обязательно должна быть инициализирована при объявлении:
const short n=10;
Переменная, которая объявлена внутри блока (блок ограничен фигурными скобками), называется локальной. Область ее действия – от точки описания до конца блока, включая вложенные блоки. Переменная, объявленная вне блока, называется глобальной. Область ее действия – от точки описания до конца файла.
Память под глобальные переменные выделяется один раз в начале работы программы. Если вы не инициализировали переменную, то компилятор присваивает ей нулевое значение соответствующего типа.
Память под локальные переменные выделяется в стеке каждый раз при входе в блок и освобождается при выходе из блока. При выделении памяти значение не обнуляется, поэтому не забывайте инициализировать локальные переменные.
Если при описании переменной использовано служебное слово static, то такая переменная называется статической. Память под статическую переменную выделяется один раз, даже если она локальная, и существует переменная на всем протяжении выполнения программы. При выделении памяти значение статической переменной обнуляется, если вы не инициализировали ее иначе. Пример описания переменной:
Источник: mydocx.ru