Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
PYaVU_otvyty.docx
Скачиваний:
2
Добавлен:
04.08.2019
Размер:
100.42 Кб
Скачать

Билет 11. Переменные, понятие об объекте, lvalue и rvalue выражения.

Переменная в традиционных (императивных кто помнит определение этого слова?) языках программирования — проименованная либо адресуемая иным способом область памяти, имя или адрес которой можно использовать для осуществления доступа к данным, находящимся в переменной (по данному адресу).

Понятие об объекте (в программировании)

Объект — некоторая сущность в виртуальном пространстве, обладающая определённым состоянием и поведением, имеет заданные значения свойств (атрибутов) и операций над ними (методов). Как правило, при рассмотрении объектов выделяется то, что объекты принадлежат одному или нескольким классам, которые в свою очередь определяют поведение (являются моделью) объекта. Время с момента создания объекта (конструкция) до его уничтожения (деструкция) называется временем жизни объекта. Объекты обладают свойствами наследования, инкапсуляции и полиморфизма.

lvalue и rvalue выражения

Для того, чтобы отличать выражения, обозначающие объекты, от выражений, обозначающих только значения, ввели понятия lvalue и rvalue. Изначально слово lvalue использовалось для обозначения выражений, которые могли стоять слева от знака присваивания (left-value); им противопоставлялись выражения, которые могли находиться только справа от знака присваивания (right-value). Развитие языков C и C++ привело к утрате словом lvalue своего первоначального значения. Иногда lvalue трактуют также как locator value. (локальная величина)

С каждой функцией компилятор также связывает две вещи: ее адрес и ее тело («значение»). При необходимости выражение, обозначающее функцию, компилятор может привести к указателю на эту функцию. «Значениями» функций в языках C и C++ оперировать нельзя. В спецификации языка C++ термин lvalue относится также и к выражениям, обознающим функции. В стандарте языка C для выражений, обозначающих функции, используется отдельный термин — function designator.

Необходимо подчеркнуть, что lvalue/rvalue является свойством не объектов и/или функций, а выражений.

Билет 12. Время жизни переменных.

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

Под временем жизни переменной понимается время, в течение которого переменная может иметь значение.

Всё, что ниже впринципе не надо! В самом деле, не надо. Кстати, пример приведён на бейсике. Может, стоит просто убрать эту часть билета?

Локальные переменные имеют значение только во время выполнения процедуры, в которой они объявлены. Использование перед именем переменной ключевого слово Static позволяет сохранить ее значение между вызовами процедуры, в которой эта переменная объявлена. Инструкция Static используется только на уровне процедуры. Объявленные с помощью нее переменные называются статическими. Статические локальные переменные имеют значение в течение всего времени выполнения программы. Пример объявления такой переменной:

Dim Static A As Integer

Здесь переменная A объявлена как статическая переменная типа Integer. Если требуется, чтобы все переменные процедуры были статическими, перед ее именем необходимо поставить ключевое слово Static, например:

Private Static Sub TestSub()

Dim A As Integer

Dim B As Integer

End Sub

Здесь обе переменные A и B будут статическими.

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

Билет 13. Область видимости переменных.

Область видимости переменной - это те части программы, откуда переменная остается видимой. Видимая, - значит, объявленная и доступная для использования. Переменная, которая видима во всей программе, называется глобальной. Переменная, видимая, например, только в рамках конкретной функции, называется локальной.

Область видимости переменной – это контекст, в котором она определяется. Контекст - это набор определенных данных, формирующих среду выполнения программы.

Билет 14: Локальные и внешние переменные

Блин, билетик сделан не очень. =((( придётся его переделать:

Переменные являются внутренними или локальными по отношению к функции, если они объявлены внутри функции. Например:

Int func (void)

{

Int I; //локальная переменная

}

К локальным переменным некоторой функции никакая другая функция не имеет прямого доступа. Переменные располагаются в стеке после их объявления в функции, и разрушаются после завершения работы функции. По этой причине такие переменные, следуя терминологии других языков, обычно называют автоматическими. Необходимо заметить, что между двумя вызовами одной и тоже функции, локальная переменная, объявляемая в этой функции, НЕ СОХРАНЯЕТ своего значения. Но если переменные расположить в статической памяти используя слово static (например static int i), то значение локальной пременнной между двумя вызовами одной и тоже функции СОХРАНИТСЯ, но область видимости останется такой же – только внутри функции.

Внешние (или глобальные переменные) отличаются от локальных тем, что их область видимости охватывает всю программу. Их можно читать и изменять из любой точки программы, и они сохраняют своё значение на протяжении всей работы программы.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]