Важное значение для рационального использования ресурсов имеют умения правильно использовать выражения и перемменые в структуре программы.
Выражения – это основные конструктивные элементы программ, которые применяются для вычисления некоторых значений.
Выражения состоят из операндов, знаков операций и скобок. Операнды задают данные для вычислений. Операции, в соответствие с приоритетами, определяют необходимые действия. Каждый операнд является, в свою очередь, выражением или одним из его частных случаев, например, константой или переменной.
Рассмотрим составные части выражений.
Переменные
Переменная — это именованная область памяти, в которой хранятся данные определенного типа.
Данные, записанные в переменные, называют значениями (набор битов в памяти интерпретируемый в соответствии с типом). Во время выполнения программы значение переменной можно изменять.
Объявление переменных
Перед использованием любая переменная должна быть объявлена, т.е. получить имя, тип и (необязательно) начальное значение. Общий формат инструкции объявления переменных выглядит следующим образом:
Область видимости переменной в питоне
- тип список_переменных , где
- элемент тип — это тип данных;
- элемент список_переменных — список имен переменных, указанного типа.
Примеры объявления переменных:
- int i, k, x;
- double d, dBalance;
При объявлении, переменную можно инициализировать, т. е. присвоить ей начальное значение , причем С++ позволяет выполнить динамическую инициализацию с помощью любого выражения, действительного на момент инициализации. Инициализатор можно записывать в двух формах:
- со знаком равенства: int a = 10, b = 20;
- в круглых скобках: int c (a+b);
Локальные и глобальные переменные
Переменные, объявленные внутри блока (блок ограничен фигурными скобками) называются локальными. Область ее действия — от точки объявления до конца блока, включая все вложенные блоки. Память, выделяемая для локальных переменных, при выходе из блока освобождается.
Если переменная определена вне любого блока, она называется глобальной. Областью ее действия считается файл, в котором она объявлена, от точки описания до его конца. В отличие от локальных, глобальные переменные хранят свои значения на протяжении всего времени жизни программы. Доступ к глобальной переменной можно получить из любого блока программы.
Пример объявления локальной и глобальной переменной представлен на рис. 1. Поскольку переменную необходимо объявлять до ее использования, то глобальную переменную лучше объявлять в начале программы.
Константные выражения
В языке С++ предусмотрено использование символических констант, т. е. именованных объектов, которым после инициализации невозможно присвоить другое значение. Константы с информативными именами повышают читабельность программы.
Unity C# Как получить доступ к переменной другого скрипта
Символические константы базовых типов объявляются так же, как и переменные соответствующих типов, но с указанием модификатора const . Например:
- const long c = 299792458;
- const double pi = 3.141593;
Источник: informatics-lesson.ru
Правила, определяющие область видимости переменных и функций
Область видимости или область действия переменной или функции — это часть программы, в которой на нее можно ссылаться. Например, когда мы объявляем локальную переменную в блоке, на нее можно ссылаться только в этом блоке или в блоке, вложенном в этот блок. Существуют четыре области действия идентификатора — область действия функция, область действия файл, область действия блок и область действия прототип функции.
Идентификатор, объявленный вне любой функции (на внешнем уровне), имеет область действия файл. Такой идентификатор «известен» всем функциям от точки его объявления до конца файла. Глобальные переменные, описания функций и прототипы функций, находящиеся вне функции — все они имеют областью действия файл.
Метки (идентификаторы с последующим двоеточием, например, start:) — единственные идентификаторы, имеющие областью действия функцию. Метки можно использовать всюду в функции, в которой они появились, но на них нельзя ссылаться вне тела функции. Метки используются в структурах switch (как метки case) и в операторах goto. Метки относятся к тем деталям реализации, которые функции «прячут» друг от друга. Это скрытие — один из наиболее фундаментальных принципов разработки хорошего программного обоспечения.
Идентификаторы, объявленные внутри блока (на внутреннем уровне), имеют областью действия блок. Область действия блок начинается объявлением идентификатора и заканчивается конечной правой фигурной скобкой блока. Если имеются вложенные блоки, то переменная внешнего блока видна и во вложенных блоках.
Локальные переменные, объявленные в начале функции, имеют областью действия блок так же, как и параметры функции, являющиеся локальными переменными.
Любой блок может содержать объявления переменных. Если блоки вложены и идентификатор во внешнем блоке или идентификатор глобальной переменной идентичен идентификатору во внутреннем блоке, одноименный идентификатор внешнего блока или глобальный «невидим» (скрыт) до момента завершения работы внутреннего блока. Это означает, что пока выполняется внутренний блок, он видит значение своих собственных локальных идентификаторов, а не значения идентификаторов с идентичными именами в охватывающем блоке. Локальные переменные, объявленные как static, имеют областью действия блок, несмотря на то, что они существуют с самого начала выполнения программы.
Из внутреннего блока можно получить доступ к одноименной глобальной переменной с помощью унарной операции разрешения области действия Например, выражение::I означает глобальную переменную I, даже если в данном блоке объявлена локальная переменная I.
Единственными идентификаторами с областью действия прототип функции являются те, которые используются в списке параметров прототипа функции. Прототипы функций не требуют имен в списке параметров — требуются только типы. Если в списке параметров прототипа функции используется имя, компилятор это имя игнорирует. Идентификаторы, используемые в прототипе функции, можно повторно использовать где угодно в программе, не опасаясь двусмысленности.
При необходимости обеспечить видимость переменных, объявленных в одном модуле, из других модулей, в эти модули должны быть добавлены объявления соответствующих переменных (без их инициализации) со спецификацией extern. Для видимости из других модулей функций, объявленных в каком-то модуле, надо повторить в соответствующих модулях объявления этих функций. Это не относится к функциям, объявленным со спецификацией static. Такие функции невидимы в других модулях.
Если в модуле, описывающем функцию, ее объявление записано в заголовочном файле, то в другом модуле можно получить к ней доступ так, как описано выше, а можно и проще — включить директивой #include этот заголовочный файл.
Инструментом является объявление области видимости имен ключевым словом namespace и последующее объявление использования функции и переменных из той или иной области ключевым словом using.
Синтаксис объявления области видимости:
объявления типов, переменных и функций
Источник: cyberpedia.su
4 вида области видимости переменных и функций в программе
Область видимости или область действия переменной или функции – это часть программы, в которой на нее можно ссылаться. Например, когда мы объявляем локальную переменную в блоке, на нее можно ссылаться только в этом блоке или в блоке, вложенном в этот блок. Существуют четыре области действия идентификатора: область действия функция, область действия файл, область действия блок и область действия прототип функции.
Область действия файл
Идентификатор, объявленный вне любой функции (на внешнем уровне), имеет область действия файл. Такой идентификатор «известен» всем функциям от точки его объявления до конца файла. Глобальные переменные, описания функций и прототипы функций, находящиеся вне функции – все они имеют областью действия файл.
Область действия функция
Метки (идентификаторы с последующим двоеточием, например, start:) – единственные идентификаторы, имеющие областью действия функцию. Метки можно использовать всюду в функции, в которой они появились, но на них нельзя ссылаться вне тела функции. Метки используются в структурах switch (как метки case) и в операторах goto. Метки относятся к тем деталям реализации, которые функции «прячут» друг от друга. Это скрытие одно из наиболее фундаментальных принципов разработки хорошего программного обеспечения.
Область действия блок
Идентификаторы, объявленные внутри блока (на внутреннем уровне), имеют областью действия блок. Область действия блок начинается объявлением идентификатора и заканчивается конечной правой фигурной скобкой блока. Если имеются вложенные блоки, то переменная внешнего блока видна и во вложенных блоках.
Локальные переменные, объявленные в начале функции, имеют областью действия блок так же, как и параметры функции, являющиеся локальными переменными. Любой блок может содержать объявления переменных.
Если блоки вложены и идентификатор во внешнем блоке или идентификатор глобальной переменной идентичен идентификатору во внутреннем блоке, одноименный идентификатор внешнего блока или глобальный «невидим» (скрыт) до момента завершения работы внутреннего блока. Это означает, что пока выполняется внутренний блок, он видит значение своих собственных локальных идентификаторов, а не значения идентификаторов с идентичными именами в охватывающем блоке. Локальные переменные, объявленные как static, имеют областью действия блок, несмотря на то, что они существуют с самого начала выполнения программы. Из внутреннего блока можно получить доступ к одноименной глобальной переменной с помощью унарной операции разрешения области действия «::». Например, выражение ::I означает глобальную переменную I, даже если в данном блоке объявлена локальная переменная I.
Область действия прототип функции
Единственными идентификаторами с областью действия прототип функции являются те, которые используются в списке параметров прототипа функции. Прототипы функций не требуют имен в списке параметров — требуются только типы. Если в списке параметров прототипа функции используется имя, компилятор это имя игнорирует.
Идентификаторы, используемые в прототипе функции, можно повторно использовать где угодно в программе, не опасаясь двусмысленности. При необходимости обеспечить видимость переменных, объявленных в одном модуле, из других модулей, в эти модули должны быть добавлены объявления соответствующих переменных (без их инициализации) со спецификацией extern.
Для видимости из других модулей функций, объявленных в каком-то модуле, надо повторить в соответствующих модулях объявления этих функций. Это не относится к функциям, объявленным со спецификацией static. Такие функции невидимы в других модулях. Если в модуле, описывающем функцию, ее объявление записано в заголовочном файле, то в другом модуле можно получить к ней доступ или поступить еще проще – включить директивой #include этот заголовочный файл.
Источник: cubook.pro