КАТЕГОРИИ: Архитектура-(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; Просмотров: 990; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |