Структурированные типы

Это типы:

  • Массив.
  • Запись
  • Множество.
  • Файл.

Массивы

Как и Turbo Pascal, FPC поддерживает массивы. Поддерживаются и многомерные, упакованные и динамические массивы в стиле Delphi.

Массив – упорядоченная индексированная совокупность однотипных компонент, имеющих общее имя. Массив определяется:

  • именем,
  • индексами (номерами компонент). Индексы должны иметь порядковые типы.

Размерность массива определяет числом индексов. Размерность массива ограничена только доступной памятью. Возможны массивы:

  • одномерный (или вектор),
  • двумерный (или матрица),
  • многомерный.

Различают массивы:

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

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

Статические массивы

Массив называется статическим, когда в определение массива включена размерность массива. Попытка доступа к элементу массива с индексом, лежащим вне объявленного диапазона, приведет к ошибке времени выполнения при условии, что включён контроль границ.

Объявление Значения
type

<Имя>=array[<Индексы>] of <Тип компонент>;

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

type

MyArray=array[1..7,1..10] of real;    // Объявление типа массива

var

Ar1:MyArray;                             // Явное объявление массива

Ar2:array[1..20,1..15] of real;           // Неявное объявление массива

Доступ к элементу массива: Ar1 [2, 2]

Динамические массивы

Объявление Значения
type
<Имя > = array of <Тип компонент>;

var

<Имя переменной> = array of <Имя типа>;

Фактическая размерность массива задается с помощью функции

SetLength(<Имя переменной>, <Размер индекса>);

Для многомерного массива структура array of повторяется столько раз, сколько индексов имеет массив.

Набор из заданного базовым типом количества компонент.  Индекс нумеруется от 0.

Пример

type

MyArray=array of byte;         // Объявление типа массива. Размера нет

var

Ar1:MyArray;                  // Явное объявление массива

begin

SetLength(Ar1,10);          // Фактическая размерность массива 10

end.

Записи (комбинированные типы)

Запись – это набор компонент разного типа, размещаемых в полях записи. Имена полей локальны в записи. Различают записи:

  • Фиксированные.
  • Вариантные. Никак не связаны с типом Variant – вариант.

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

Объявление Значения
type

<Имя типа>=record

<Имя поля 1>:<Тип 1>;

{…….}

<Имя поля N>:<Тип N>;

[вариантная часть]

end;

Точки с запятой в конце строки нет.

Вариантная часть содержит список вариантов. Для каждого варианта указывается ключ выбора и список его полей.

Записи без вариантной части

Пример:

type

MyData=record               // Мои данные

FirstName:string[15];       // Имя

LastName:string[20];        // Фамилия

BirthDay:byte;            // День рождения

BirthMonth:byte;              // Месяц рождения

BirthYear:word;               // Год рождения

Phone:string[15];              // Телефон

Address:string[30];           // Адрес

end;

Записи с вариантной частью

Пример:

type

MyData=record                          // Персона

FirstName:string[15];             // Имя

LastName:string[20];              // Фамилия

BirthData:date;                       // Дата рождения

case Citezen:Boolean of         // Гражданство (да или нет)

True:BirthPlace:String[40];     // Если да – место рождения,

False:(Country:String[20], // Если нет – страна гражданства,

EntryDate:Date,                // Дата вьезда,

ExitDate:Date);                 // Дата выезда

end;                                       // Конец вариантной части

end;                                             // Конец записи

Множества

Множество – это набор компонент из заданного набора. В множестве компонент присутствует в единственном экземпляре. Например, множества [1, 2, 3] и [1, 2, 2, 3] эквивалентны. Любой тип множества перед употреблением должен быть объявлен. Имя типа любое уникальное.

Объявление Значения
type
<Имя>=set of <Имя целевого типа>;
var
<Имя переменной>:<Имя типа>;
Набор компонент из заданного перечня

Целевой тип – порядковый тип с числом компонент не более 256. Возможны Byte, Char, интервальные и перечислимые типы. Значения множественного типа заключают в квадратные скобки.

Пример:

type
Set1=set of byte;                               // Целые числа 0..255
Set2=set of char;                               // Символы с № 0..255
Set3=set of 1..12;                             // Тип-поддиапазон
Svetofor=set of (‘Red’,’Green’,’Yellow’,’Dead’); // Перечисляемый тип

Файлы

Файл – это последовательность однотипных компонент на внешнем устройстве. В FPC определены файлы:

  • типизированный, это последовательность однотипных компонент,
  • текстовый, это последовательность строк символов,
  • нетипизированный, это последовательность байтов.

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

type
<Имя типа>=file of <Имя типа компонент>;

Компоненты файла любые, кроме:

  • файлов,
  • структурированных с файлами.

Пример

type
MyFile1=file of real;         // Типизированный файл
MyFile2=file of text;         // Текстовый файл
MyFile3=file;                   // Нетипизированный файл

TwitterSEO CommunityВаау!News2.ruChippKoricaSMI2Google BookmarksDiggI.uaЗакладки YandexLinkstoreMyscoopCommunizmRu-marksWebmarksRuspaceLinkomaticKli.kzWeb-zakladkaZakladok.netRedditdeliciousMa.gnoliaTechnoratiSlashdotYahoo My WebБобрДобр.ruMemori.rurucity.comМоёМесто.ruMister Wong

Copyright © 2009-2010 Программирование на паскале.