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

13.Массивы. Статические массивы. Операции с массивами, передача массивов как параметров. Динамические массивы.

Массивом- это структура данных, представляющая собой набор переменных одинакового типа, имеющих общее имя. Массивы удобно использовать для хранения однородной информации(таблицы, списки..).

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

Имя: [нижний_индекс..верхний_индекс]

где:

имя-имямассива;

array-зарезервированное слово языкаDelphiобозначающее, что объявляемое имя является именем массива;

нижний_индекс и верхний_индекс-целые константы, определяющиедиапазон изменения индекса элементов массива и, неявно, количествоэлементов (размер) массива

тип- тип элементов массива.

Различают массивы статические и динамические.

Статический массив представляет собой массив, границы индексов и, соответственно, размеры которого задаются при объявлении.

  1. Array[Имя массива]of<Тип элементов>;

Динамический массив представляет собой массив, для которого при объявлении указывается только тип его элементов, а размер массива определяется при выполнении программы. Формат описания типа динамического массива:

  1. Arrayof<Тип элементов>;

Во время выполнения программы размер динамического массива задается процедурой SetLength(var S; NewLength:Integer), которая для динамического массива S устанавливает новый размер, равный NewLength. Выполнять операции с динамическим массивом и его элементами можно только после задания размеров этого массива.

После задания размера динамического массива для определения его длины, а также минимального и максимального номеров элементов используются функции Length(), Low() и High() соответственно. Нумерация элементов динамического массива начинается с нуля.

Передача массива как параметра. Передача параметров в дельфи: Type Ta=array of something; Var a:Ta; Procedure Proc(a:Ta); - внутри процедуры создаётся копия массива, внутри процедуры работа осуществляется только с копией данных Procedure Proc(var a:Ta); - внутри процедуры код работает именно с переменной «а» и её содержимым Procedure Proc(const a:Ta); - внутри процедуры запрещено изменять данные переменной «а» Procedure Proc(out a:Ta); - при входе в процедуру массив рассматривается как пустой, но после выполнения процедуры можно получить значения.

Типичными операциями при работе с массивами являются:

  • вывод массива;

  • ввод массива;

  • поиск максимального или минимального элемента массива;

  • поиск заданного элемента массива;

  • сортировка массива.

14. Множества. Записи.

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

  1. Setof<Тип элементов>;

Переменная множественного типа может содержать любое количество элементов своего множества— от нуля до максимального. Значения множественного типа заключаются в квадратные скобки. Пустое множество обозначается как[].

Операции над множествами:

Объединение множеств (+)  - объединение неповторяющихся элементов первого и второго множества

Вычитание множеств (-)  - Элементы первого множества, не пренадлежащие второму

Пересечение множеств (*)  - Элементы, общие для обоих множеств

Эквивалентность (=)  - True, если множества эквивалентны

Неэквивалентность (<>)  - True, если множества неэквивалентны

Проверка вхождения (<=)  - True, если первое множество входит во второе

Проверка включения (>=)  - True, если первое множество включает второе

Кроме того, есть операцияin (проверка членства), которая определяет принадлежность выражения порядкового типа (первого операнда) множеству (второму операнду). Результат операции имеет тип boolean и значение True в случае, если значение принадлежит множеству.

Записи

Записи объединяют фиксированное число элементов данных других типов. Отдельные элементы записи имеют имена и называются полями. Имя поля должно быть уникальным в пределах записи. Различают фиксированные и вариантные записи.

Фиксированная запись состоит из конечного числа полей, ее объявление имеет формат:

  1. Record

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

  3. ...

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

  5. end;

Вариантная запись, как и фиксированная, имеет конечное число полей, однако предоставляет возможность по-разному интерпретировать области памяти, занимаемые полями. Все варианты записи располагаются в одном месте памяти и позволяют обращаться к ним по различным именам. Отметим, что в данном случае термин «вариантный» не имеет ничего общего с вариантным типом (variant).  Формат объявления вариантной записи:

  1. Record

  2. case<Признак>:<Тип признака>of

  3. <Вариант1>:(<Описание варианта1>);

  4. <ВариантN>:(<Описание вариантаN>);

  5. end;

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