Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Тема№29 Структурированные типы: массивы, строки, записи, файлы




Массивы

Как и 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; // Нетипизированный файл

 




Поделиться с друзьями:


Дата добавления: 2015-04-24; Просмотров: 955; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.017 сек.