Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Непейвода Н.Н. -> "Основания программирования " -> 24

Основания программирования - Непейвода Н.Н.

Непейвода Н.Н., Скопин И.Н. Основания программирования — Институт компьютерных исследований , 2002. — 919 c.
Скачать (прямая ссылка): osnovanprogramm2002.pdf
Предыдущая << 1 .. 18 19 20 21 22 23 < 24 > 25 26 27 28 29 30 .. 316 >> Следующая

трактуется как определение идентификатора Имя, обладающего значением, т. е. определяется константа, но значение этой константа может быть вычислено в ходе исполнения программы. Таким образом, имя, обозначающее константу, с того момента, когда оно появляется в программе и до того момента, когда оно исчезает из-за выхода из его области определения, имеет одно и то же значение. Hо при другом входе в тот же блок константа может иметь другое значение.
Может показаться, что появление константы, обозначающей значение, возникшее в ходе исполнения программы и не имеющее смысла вне контекста, определяемого данным исполнением, противоречит самой суности константы. Но самому математическому понятию константы это не противоречит. В математических текстах все время встреча тся конструкции типа « бозна-чим значение, которое существует согласно доказанному выше утверждению (5), через ао.» Это утверждение (5) может не иметь смысла вне данного доказательства, а то и быть прямо ло ным (если ведем доказательство приведением к абсурду), так что константа ао возникает и суествует лиь в контексте данного математического рассу дения, зато в нем она имеет некоторое фиксированное значение все время, пока используется. Именно это последнее свойство нужно нам и от имени, обозначающего программистскую константу.
Такая конструкция позволяет определять не только имена констант, но и имена переменнх.
type Имя1 ; рассматривается как сокраение для
ref type Имя1 = loc type;
где loc type — это выражение, вырабатывающее новое значение типа ref type (локальный генератор адреса для размеения значений типа type в качестве содеримого по указанному адресу; это — один из искл чительно редко встречаихся случаев, когда переменная задается не именем, а значением некоторого вра ения). Таким образом, по-пренему определяется константа, значением которой обладает имя Имя1.
1.5. РАБОТА СО ЗНАЧЕНИЯМИ
65
о это значение есть адрес (о чем говорит слу ебное слово ref), и появляется возможность использовать Имя1 как переменную: можно присваивать ей значение типа type.
налогично
ref type Имя2;
сокраение для
ref ref type Имя2 = loc ref type;
Таким образом, есть возможность присваивать Имя2 значение типа ref type.
нми словами, Имя2 — это переменная, предназначенная для размещения в ней адресов, или, что то же самое, имен других переменных. Таким образом, последовательность предло ений
real A = 53/5; real B;
описывает константу A со значением, равным результату деления числа 53 на 5, и переменную B вещественного типа. Можно записать и выполнить присваивание B:=A, но не наоборот. Если же записать
real A := 53/5; real B;
то A оказвается переменной и присваивание A:=B становится законным.
В языке С все, казалось бы, проще. Понятие констант и переменных определяется на уровне соглашений об их отношении к памяти вычислителя. Описание
int X, Y;
определяет имена X и Y как переменне, способные принимать целочисленные значения, а
float X, Y;
как веественные переменные. о, как и обычно, иная простота ху е воровства. За недоработку в базовых понятиях приходится многократно платить целой серией соглашений, которые сейчас будут описаны для простейшего случая, и которе отдельно и достаточно сло но вводятся для более сло нх случаев, возникающих, в частности, в объектно-ориентированном программировании.
ля описания соглаений об отноении меду переменными и память вычислителя в C вводится понятие класса памяти, отражающее различные
66
ГЛАВА 1. ПОНЯТИЯ
возмо ности привязки переменнх к видам памяти конкретного вчислите-ля, а также времени жизни переменной (по отношению к программной единице, в которой они описываются) и доступа к переменной из разных программных единиц. Классы памяти описываются с помощью одного из сле-дуих слу ебнх слов:
• auto — автоматические переменные (слово auto можно не указывать).
ни име т локальну область действия: только внутри текста той программной единицы, в которой автоматическая переменная определена, ее мо но использовать, т. е. употреблять ее имя как ее наименование. Это позволяет, сгруппировав некоторый текст с помощью {}, вводить в данном тексте свои имена, не заботясь о том, что происходит снаружи. Если снаружи была определена переменная с таким же именем, то работает внутреннее описание. Эта блочная структура областей действия имен является обепринятой для больинства современных языков программирования и для логических языков.
• external — внение переменне: име т глобальну область действия, т. е. доступны для использования вне программной единицы, в которой определена внешняя переменная. Внешними также считаются пе-ременне, описанне (без слу ебных слов external) вне описаний всех функций, и тогда они оказываются доступными для всех функций (внеш-ние переменные формируют общий контекст функций программы).
Внимание!
Имя, описанное в двух и более функциях как внешняя переменная, определяется как одна и та же переменная, входящая в общий контекст всех функций .
• static — статические переменные. Этим термином определяются переменные, которым приписано фиксированное место в памяти. Они со-зда тся при входе в программу и никогда не уничто а тся. В частности, статические переменне функций сохраня т свои значения от вызова до взова функции.
Предыдущая << 1 .. 18 19 20 21 22 23 < 24 > 25 26 27 28 29 30 .. 316 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100