Program UsingEnumerateds; Type

TColor = (Black, White, Red);

{Описание перечислимого типа TColors. Диапазоном значений переменных этого типа являются три константы — Black, White, Red; значения этих констант не известны, но их можно использовать по именам}

Var

Color: TColor;{Описание перечислимого типа данных} Begin

Color := White;{Присвоение переменной Color значение White}

End.

Перечислимые типы данных используются, в основном, для повышения читабельности программы и привлечения внимания к возможным зна­чениям какого-либо параметра программы. Обратим внимание на то, что в стандартных компонентах и подпрограммах Delphi крайне широко ис­пользуются перечислимые типы.

2.3.3. Множества

Типы данных «множества» аналогичны перечислимым и интервальным типам данных, однако переменные множественных типов могут иметь несколько значений из описанного перечисления в каждый момент вре­мени работы программы, причем каждое значение не может присутство­вать в множестве дважды в одно и то же время. Описание переменной множественного типа выглядит следующим образом:

<Переменная>: SetOf <Перечислимый тип>;

Аналогично можно описать множество на основе интервального типа: <Переменная>: SetOf <Интервальный тип>;

Для присвоения значения переменной множественного типа использу­ется специальный оператор — конструктор множества [ ]:

<Переменная> := [Оначение 1>, . . . , Оначение п>] ;

В качестве Значенийможет быть использовано любое значение из мно­жества, на основе которого создан данный тип.

Рассмотрим пример описания и использования переменной-множества, основанной на перечислимом типе данных (см. листинг 2.4).

Листинг 2.4. Пример описания и использования переменной-множества

Program UsingSets; Type

TColors = Set Of (Black, White, Red);

{описание множественного типа данных TCoiors. В качестве значений переменных данного типа в любой момент времени выполнения программы может быть любое сочетание констант Black, White и Red}

Var

Colors: TColors;

{описание переменной множественного гиг.а данных TColors}

Begin

Colors:= [Black, Red]; {присвоение переменной Colors

множества, состоящего из двух

элементов — Black и Red}

Colors := []; {присвоение переменной Colors пустого

множества}

Colors:= [White];{присвоение переменной Colors

множества, состоящего из одного

элемент.а — White}

End.

При работе с множествами используются следующие понятия:

♦ Объединениемдвух множеств называется множество, содержащее элементы, как первого, так и второго множеств. Для объединения множеств используется оператор «+». Например, после выполнения команды Colors := [Black] + [Red], В переменной Colors будет содержаться множество [Black, Red].

♦ Пересечениемдвух множеств называется множество, содержащее элементы, включенные в оба множества. Для пересечения множеств используется оператор «*». Например, после выполнения команды Colors := [Black, Red] * [Black, White], В переменной Colors будет содержаться множество из одного элемента Black.

♦ Разностьюдвух множеств называется множество, содержащее эле­менты первого множества (уменьшаемого), не содержащиеся во вто­ром множестве. Для определения разности множеств используется оператор «-». Например, после выполнения команды Colors : = [Black, Red] - [Black, White], в переменной Colors будет содержаться множество из одного элемента Red.

♦ Пустыммножеством называется множество, не содержащее элемен­тов. Для присвоения переменной множественного типа пустого множества может использоваться обычный конструктор множества. Например, после выполнения команды Colors := [] в перемен­ной Colors не будет содержаться ни одного элемента. Множество станет пустым, если вычесть из него множество, содержащее все возможные элементы. Например, после выполнения команды Colors := Colors - [Black, White, Red] множество Colors будет пустым вне зависимости от своего начального состояния. 2.3.4. Записи

Запись является типом данных5 и описывается в разделе описания типов данных Туре. После описания типа данных его можно использовать для создания переменных этого типа в обычном порядке. Описание записей как типов данных имеет следующий вид:

Туре{начало раздела описания типов данных} <Имя типа>=Record{заголовок описания записи} <Имя переменной 1>: <Тип>;

{описание "поля» записи}

<Имя переменной п>: <Тип>;

{описание "поля» записи} end;{окончание описания типа}

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

Описание переменных-записей, или, как их принято называть, экземп­ляров записей,осуществляется по обычным правилам в разделе описа­ния переменных Var.

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

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

<Имя переменной-экземпляра записи>.<Имя поля>

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

Листинг 2.5. Работа с записями

Program UsingRecords;

Type {начало раздела описания типов данных}

Thuman= Record {заголовок описания записи)

FirstName: String;{описание поля записи

с именем FirstName} {описание поля записи с именем LastName} {описание поля записи с именем Age} {окончание описания типа}

Lastame: String; Age: Integer; end;

Var Human1:Thuman; Human2: Thuman;

{Описание переменной — записи типа THuman с именем Human1} {Описание переменной — записи типа THuman с именем Human2}

Begin

Humanl.FirstName

= 'Michael';{Изменение поля FirstName

переменной Humanl}

Human2 := Humanl;{Копирование значений всех полей записи Humanl в поля записи Human2. Таким образом поле FirstName записи Human2 станет иметь значение 'Michael'}

End.

2.3.5. Массивы

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

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

<Наззание массива> = Array [<Нижнийиндекс>..<Верхний индекс>]

Of <Тип элементов>;

Program DeclareArrayTypesl;

Type

MyArray

Begin End.

{Начало раздела описания типов данных) Array [5..150] Of Integer;

{Описание типа данных — массива с именем MуАrrау, состоящего из 14 6-ти элементов, пронумерованных от 5-ти до 150-ти, каждый из которых имеет тип Integer}

С момента такого описания тип MyArray может использоваться наравне с остальными типами данных, известными компилятору, например, для описания двухмерного массива:

Program DeclareArrayTypes2;

Туре{Начало раздела описания типов данных) MyArray = Array [5..150] Of Integer;

{Описание типа данных — массива с именем MyArray, состоящего из 146-ти элементов, пронумерованных от 5-ти до 150-ти, каждый из которых имеет тип Integer) MyArray2D = Array [1..10] Of MyArray;

{Описание типа данных — массива с именем MyArray2D, состоящего из 10-ти элементов, пронумерованных от 1 до 10-ти, каждый из которых представляет собой массив типа MyArray}

Begin

End.

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

Туре

MyArray2D = Array [1..10, 5..150] Of Integer;

{Описание двухмерного массива)

Описание переменной, представляющей собой массив, происходит по обычным правилам описания переменных:

Туре

MyArray2D = Array [1..10, 5..150] Of Integer;

{Описание двухмерного массива) Var

Array2D: MyArray2D; {Описание переменной-массива}

Для обращения к элементу массива-переменной, ее индекс (индексы в случае многомерных массивов) указываются в квадратных скобках после имени переменной:

Наши рекомендации