Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
80
Добавлен:
09.05.2015
Размер:
725.5 Кб
Скачать

1: (KinfWorker: String[15];

NumSect: Integer);

2: (PosAdmin: String[20]);

end;

Все варианты занимают в памяти одно место. Каждый вариант обозначается некоторой постоянной. При желании можно получать доступ ко всем полям всех вариантов одновременно, однако это может иметь смысл только в наиболее простых случаях, когда точно известно, как именно информация каждого варианта записывается в память. Каждый вариант обозначается минимум одной константой. Все константы должны быть порядковыми и совместимыми по типу с меткой поля. Необязательное поле — это идентификатор дополнительного поля в фиксированной части записи, общий для всех вариантов. Обычно с его помощью определяют, когда к какому варианту обращаться. Необязательное поле можно не указывать, однако порядковый тип необходим. При отсутствии необязательного поля программе придется выбирать подходящий вариант каким-то иным образом. Данные некоторых типов бессмысленно интерпретировать различным образом, и в Object Pascal на некоторые критические типы наложено соответствующее ограничение. Как следствие, в вариантную часть записи нельзя включать длинные строки и переменные типа Variant, а также структурные переменные, содержащие эти типы.

В С и C++ эквивалентом вариантному типу записи из Delphi является тип union.

2.10.2. Массивы

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

Массивомназывают набор однотипных переменных, объединенных одним именем и доступных через это имя и порядковый номер к любой переменной в наборе.

Хотя массивы используются несколько реже переменных, они играют важную роль в разработке программ.

Синтаксис объявления массива:

Var ИмяМассива: array [ТипИндекса1, ...., ТипИндексаN] of БазовыйТип

Обратите внимание, что здесь квадратные скобки являются элементом описания массива и не означают, что выражение ТипИндекса1, ТипИндекса2 является необязательным.

Обычно ТипИндексаимеет выражениеnПерв1..nПосл1, гдеnПерв1— нижняя граница нумерации,nПосл1—верхняя граница нумерации. Для описания границ используются целые числа, они должны быть положительны.

Если указаны два типа индекса (nПерв1..nПосл1, nПерв2..nПосл2), то это значит, что массив у нас двумерный. Двумерные массивы обычно используют для представления матриц.

Объявленные границы массива не могут быть изменены в процессе выполнения программы.

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

Var MyArray: Array [1..10] of Integer;

тогда обращение к его третьему элементу будет выглядеть, как MyArray[З], и выполняться, как к переменной Integer.

Понятие массива существует в большинстве языков программирования, однако синтаксис, как правило, в каждом случае свой. В языках Basic и FORTRAN вместо квадратных скобок применяются круглые. В С и  C++ элементы массива нумеруются с нуля, в FORTRAN — с единицы. В некоторых версиях Basic можно задавать верхнее и нижнее значения индексов, как это делается в Delphi. В С и C++ обращение к массиву эквивалентно обращению к его первому (нулевому) элементу. В Delphi это будет обращением ко всему массиву.

Нередко размер массива (то есть количество хранящихся в нем элементов) не может быть определен заранее. В таком случае следует объявить пустой массив.

Динамическим массивом называется массив, который в начале своего жизненного цикла не содержит ни одного элемента и размер которого определяется в процессе выполнения программы.

Динамический массив объявляется так же, как и обычный массив, за исключением того, что не указываются границы массива:

var

ИмяДиномическогоМассива : array of БазовыйТип;

Для задания размера динамического массива и выделения для него памяти используется встроенная процедура SetLength():

SetLength (ИмяДинамическогоМассива, длина) ;

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

ИмяМассива[ЗначениеИндекса1, ..., ЗначениеИндексаN] := Значение

или так:

ИмяМассва [ЗначениеИндекса1] . . . [ЗначениеИндексаN] := Значение

Соседние файлы в папке разработка и стандартизация