Описание языка PascalABC.NET | страница 16



Например:

const

Pi = 3.14;

Count = 10;

Name = 'Mike';

DigitsSet = ['0'..'9'];

Arr: array [1..5] ofinteger = (1,3,5,7,9);

Rec: record name: string; age: integer end = (name: 'Иванов'; age: 23);

Arr2: array [1..2,1..2] of real = ((1,2),(3,4));

Описание меток

Раздел описания меток начинается с зарезервированного слова label, после которого следует список меток, перечисляемых через запятую. В качестве меток могут быть использованы идентификаторы и положительные целые числа:

a1,l2,777777;

Метки используются для перехода в операторе goto.

Описание типов

Раздел описания типов начинается со служебного слова type, после которого следуют строки вида

имя типа = тип;

Например, type

arr10 = array [1..10] of integer;

myint = integer;

pinteger = ^integer;

IntFunc = function(x: integer): integer;

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

Описание типов для классов использовать обязательно:

type

A = class

i: integer;

constructor Create(ii: integer);

begin

i:=ii;

end;

end;

Если описание типа используется просто для того чтобы заменить одно имя на другое, то такие типы называются синонимами типов:

type

int = integer;

double = real;

Описания типов могут быть обобщёнными, т.е. включать параметры-типы в угловых скобках после имени типа.

type

Dict = Dictionary;

Arr = array of T;

Использование такого типа с конкретным параметром-типом называется инстанцированием типа:

var

a: Arr;

d: Dict;

При описании рекурсивных структур данных указатель на тип может фигурировать раньше описания самого типа в определении другого типа:

type

PNode = ^TNode;

TNode = record

data: integer;

next: PNode;

end;

При этом важно, чтобы определения обоих типов находились в одном разделе type.

В отличие от Delphi Object Pascal следующее рекурсивное описание верно:

type

TNode = record

data: integer;

next: ^TNode;

end;

Отметим, что для ссылочных типов (классов) разрешается описание поля с типом, совпадающим с типом текущего класса:

type

Node = class

data: integer;

next: Node;

end;

Область действия идентификатора

Любой используемый в программе идентификатор должен быть предварительно описан. Идентификаторы описываются в разделе описаний. Идентификаторы для переменных могут также описываться внутри блока.