Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЯВУ лекции.doc
Скачиваний:
18
Добавлен:
27.10.2018
Размер:
592.38 Кб
Скачать

Структурированные типы данных Массивы

Массивы представляют собой ограниченную упорядоченную совокупность однотипных величин. Каждая отдельная величина называется элементом массива. Тип элементов может быть любым, кроме файлового типа и называется базовым типом. Вся совокупность компонент определяется одним именем – именем массива. Доступ к элементу массива происходит по индексу – координатам элемента в массиве. В Object Pascal существуют статические и динамические массивы. Динамические массивы используют динамическое распределение памяти под массив и будут рассмотрены ниже вместе с другими динамическими структурами.

Статический массив описывается в разделе объявления типов или в разделе объявления переменных. В первом случае массив можно использовать в качестве типа параметров подпрограмм и типа результата функции.

Структура:

type <имя_типа>=array [<знач>[,…]] of <тип_элем>;

или

var <имя_перем>[,…]:array [<знач>[,…]] of

<тип_элем>[=(<спис_знач>)];

<тип элем.> - тип элементов массива(базовый тип).

<знач> - значение интервального типа (обычно целого).

Количество <знач> определяет количество измерений(координат элементов) массива (одномерный, двухмерный и т.д.), а само <знач> определяет границы изменения координаты и количество элементов для соответствующего измерения.

Можно проинициализировать переменную-массив начальными значениями, указанными в <спис_знач>. При инициализации многомерных массивов значения элементов каждого из входящих в него массивов записывается в скобках.

Для доступа к элементам массива используется структура:

<имя_масс>[<выраж.>[,…]]

Список выражений в скобках определяют индекс элемента. <выраж.> должно иметь значение целого типа. Количество <выраж.> должно соответствовать количеству измерений массива.

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

К массивам применимы стандартные функции

Low(<имя_типа>|имя_перем),High(<имя_типа>|имя_перем),

Length(<имя_типа|имя_перем>), которые возвращают границы и длину первого измерения массива.

Строковой тип данных (строки)

Особое место в языке Object Pascal занимают массивы символов - строки. Работа со строками похожа на работу с обычными массивами, но строки не относятся к структурированным типам данным, так как имеют сложный внутренний механизм работы и хранения данных.

Тип

Количество символов

Требуемая память, байт

Кодировка

1. String[<знач>]

<знач>

<знач>+1

ASCII

2. ShortString

255

256

ASCII

3. AnsiString (String)

0-~2^31

4 б – 2 Гб

ASCII

4. WideString

0-~2^30

4 б – 2 Гб

Unicode

5. PChar

0-~2^31/~2^30

4 б – 2 Гб

ASCII или Unicode

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

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

<имя_строки>[<выраж.>]

<выраж.> - выражение целого типа, имеющее значение от 1 до количества символов в строке.

Тип элементов – Char или WideChar в зависимости от кодировки.

У переменных первых двух строковых типов существует специальный элемент с индексом 0, содержащий текущую длину строки.

Для строк (кроме PСhar) применимы:

1. Операция присваивания.

2. Операции отношения, которые производятся посимвольно. Если длина строки S1 больше длины строки S2, и все символы S2 равны соответствующим символам S1, то S1>S2. Например ‘AB’>’A’. Пустые строки представляют наименьшее значение: ‘A’>’’.

3. Операция конкатенации(объединения) строк +.

4. Стандартная функция Length(<имя_перем>), возвращающая текущую длину строки.

5. Стандартные функции для работы со строками - copy, delete, insert, pos.

Тип PСhar предназначен для хранения нуль-терминированных строк(стандартный строковой тип данных языка C++). В таких строках признаком конца строки является символ #0. Для работы с такими строками применяются стандартные подпрограммы из модуля SysUtils.

Данные типа PСhar и остальных строковых типов могут быть преобразованы друг в друга при помощи приведения типов.