Описание переменной представляет собой список идентификато-
ров, которые обозначают новые переменные и их типы.
описание ┌────────────┐ ┌───┐ ┌───┐ ┌───┐
переменной ─>│список иден-├─>│ : ├─>│тип├─┬───────────┬─>│ ; ├>
│тификаторов │ └───┘ └───┘ │ │ └───┘
└────────────┘ │ ┌────────┐│
└>│absolute├┘
└────────┘
Тип, задаваемый для переменных, может быть идентификатором
типа, который был ранее описан в разделе описания типов того же
самого блока, или блока, в который входит данный блок, или моду-
ля, или же этот тип может быть новым определением типа.
При указании идентификатора в списке идентификаторов описа-
ния переменной этот идентификатор имеет силу идентификатора пере-
менной в том блоке, где это описание было указано. К этой пере-
менной можно обращаться из любого места этого блока, если ее
идентификатор не переопределен в блоке, входящем в первый. Пере-
определение означает, что для новой переменной используется тот
же самый идентификатор, но это использование не оказывает влияния
на значение первоначальной переменной.
Приведем пример раздела описания переменной:
var
X,Y,Z: real;
I,J,K: integer;
Digit: 0..9;
C: Color;
Done,Error: boolean;
Operator: (plus, minus, times);
Hue1,Hue2: set of Color;
Today: Date;
Results: MeasureList;
P1,P2: Person;
Matrix: array[1..10,1..10] of Real;
Переменные, описанные вне процедуры и функции, называются
глобальными переменными и располагаются в сегменте данных. Пере-
менные, описанные в самой процедуре или функции, называются ло-
кальными переменными и располагаются в сегменте стека.