Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпоры [4747 вопросов].doc
Скачиваний:
83
Добавлен:
15.06.2014
Размер:
407.04 Кб
Скачать

30 Область видимости имен. Способы реализации.

Статическая Динамическая

Одной из важнейших характеристик переменных является область видимости. Об­ласть видимости (scope) переменных программы — это ряд операторов, в которых пе­ременная видима. Переменная является видимой (visible) в операторе, если к перемен­ной, входящей в оператор, можно обратиться.

Большинство отдельных статических областей видимости в императивных языках связаны с определениями программных единиц. Во многих языках подпрограммы создают собственные области видимости.

В языках со статическим обзором данных объявления некоторых переменных могут быть скрыты от некоторых подпрограмм.

Динамические области видимости.Видна область или нет видно во время компиляции (зарание).Видимость определяется в период выполнения Динамический обзор данных (dynamic scoping) опирается на последовательность вызова подпрограмм, а не на их пространственную взаимосвязь. Область видимости можно определить только во время вы­полнения программы.

31 Типы данных. Способы реализации.

Числа :

Целочисленные Все целые числа представляются в компьютере в виде строки битов, причем один из битов (как правило, крайний слева) представляет знак. Целые типы данных поддержива­ются аппаратным обеспечением.

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

Вещественные Типы чисел с плавающей точкой (floating-point) моделируют действительные чис­ла. В большинстве компьютеров числа с плавающей точкой хранятся в двоичных кодах.

Числа с плавающей точкой представляются в виде мантисс и показателей степени в форме, перенятой из научной записи. Большинство языков программирования со­держит два типа чисел с плавающей точкой, часто называемых float и double. Пере­менные типа float имеют стандартный размер, равный, как правило, четырем байтам памяти. Тип double используется в ситуациях, требующих большей по размеру мантис­сы.

Булевские (Boolean) типы являются, вероятно, простейшими из всех типов. Диапазон их значений содержит всего лишь два элемента, один для обозначения истинности, дру­гой ложности.

Символьные строки (character strings) представляют собой последовательности сим­волов. Константные строки символов сопровождают вывод результатов, а ввод и вывод всех типов данных часто производится с помощью строк.

Двойственность,Статическая строка,Динамическая ограниченная, неограниченная

Строки и действия над ними

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

Порядковым (ordinal) называется тип, в котором область возможных значений пере­менных может быть легко связана с последовательностью натуральных чисел. В языках Pascal и Ada, основными порядковыми типами являются целый, символьный и булевский типы. Пользователи сами могут определять разновидно­сти порядковых типов: перечислимые и ограниченные типы.

Перечислимым (enumeration) называется тип, в описании которого перечислены все возможные значения, являющиеся символьными константами

Ограниченным типом (sub range type) называется непрерывная подпоследователь­ность порядкового типа.

Массивом (array) называется однородное множество данных, в котором каждый от­дельный элемент идентифицируется его положением по отношению к первому элементу. Обращение к элементу массива в программе часто содержит один или несколько пере­менных индекса. Такие ссылки следует вычислять во время выполнения, чтобы определить область памяти, к которой производится обращение. Отдельные элементы массива принадлежат к одному из ранее определенных типов, элементарному или определенному пользователем.

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

Объединением (union) называется переменная, которая может содержать в различ­ные периоды выполнения программы значения различных типов. Размеченные объединения реализуются простым использованием одинаковых адре­сов для всех возможных вариантов.

Переменные множественного типа (set type) могут содержать неупорядоченную со­вокупность отдельных величин, имеющих некоторый порядковый тип, называемый ба­зовым типом (base type). Множественные типы данных часто используются для моде­лирования множеств в математическом смысле этого термина. Примером может служить анализ текста, для выполнения которого нужно обеспечить хранение и удобное исполь­зование таких небольших наборов символов, как знаки пунктуации или гласные буквы.

Указателем (pointer) называется переменная, диапазон значений которой состоит из адресов ячеек памяти и специального значения - нулевого адреса. Значение нулевого ад­реса не является реальным адресом и используется только для обозначения того, что указа­тель в данный момент не может использоваться для обращения ни к какой ячейке памяти.

Указатели разработаны для применения в двух различных сферах. Во-первых, они позво­ляют использовать некоторые выгоды косвенной адресации, широко применяемой в про­граммировании на языках ассемблера. Во-вторых, указатели предлагают метод динамическо­го управления памятью: их можно использовать для доступа к области с динамическим раз­мещением памяти, обычно называемой кучей (heap), или динамической памятью.

Языки, в которых предусмотрен тип указателей, содержат, как правило, две основные операции над ними: присваивание и разыменование. Первая из этих операций присваи­вает указателю некоторый адрес. Разыменование может быть явным и неявным, большинстве современных языков программирования разыменование происходит только при явном указании.

Ссылки

Если при описании функций в качестве формальных параметров используются ссыл­ки, то они обеспечивают двустороннюю связь между вызывающей и вызываемой функ­циями. Для параметров, которые не являются ни ссылками, ни указателями, это было бы совершенно невозможно, поскольку параметры в языке C++ передаются по значению. Передача указателя как параметра также обеспечивает двустороннюю связь, но при этом приходится выполнять явное разыменование формальных параметров, что делает программу менее читабельной и менее надежной. К ссылкам вызываемая функция обраща­ется точно так же, как и к другим параметрам. Ссылкам компилятор передает адреса, а не значения.