Статические массивы
Массив‑ группа переменных (элементов). Описание типа имеет вид: <имя типа>=[Packed] Array[<индекс>] Of <тип>
Packed - элементы массива располагаются плотно без пропусков, что уменьшает размер используемой памяти, но увеличивает время обработки.
<индекс> ‑ список индексов через запятую. Индексами могут быть переменные типов: целые (кроме Longint), логические, символьные, перечисляемые, интервальные (кроме базового типа Longint). Обычно используется интервальный тип. Границы значений индексов могут задаваться только константами, а не переменными, т.е. при выполнении программы нельзя изменить размер массива. Поэтому такие массивы называют статическими в отличие от динамических, размер которых не известен до выполнения программы и определяется в процессе ее выполнения.
Элементами массива могут быть и структурированные данные. Суммарная длина массива ограничена ‑ 2 Гб.
Число индексов определяет размерность массива.
Пример. Двумерный массив: таблица из 5 строк и 10 колонок
type mot=array [1..5,1..10] of byte //таблица символов
Переменную типа «массив» можно определить сразу в разделе переменных без предварительного описания типа массива.
Пример. var urog : array [1..10,1..100] of real
Доступ к элементу массива осуществляется по его индексу.
Запись вида А:=В означает, что всем элементам массива А присваиваются попарно значения элементов массива В при следующем ограничении: перечислены в одном списке команды объявления или объявлены через один поименованный тип.
Однотипные массивы можно сравнивать (А=В, А<>В). Действия осуществляются с элементами массива.
Пример. FOR I:=1 TO 10 DO A[I]:=0 //очистка массива нулями.
Индексы можно задавать не только числовым интервальным типом, как это обычно и бывает, но и другими типами.
Примерперечисляемого типа индекса:
Type Cvet=(krasnii, geltii, zelenii, hernii); //перечисляемый тип ‑ цвета
Var Mcvetov: Array [Cvet] Of Integer; //одномерный массив цветов
Для обращения к третьему элементу массива нужно указать Mcvetov[zelenii].
Примеринтервального символьного типа ‑ латинские буквы.
Var Cim: Array [‘a’..’z’] Of Char; I:char; ...
For I:=’a’ to ‘z’ Do Cim[I]:=I; //заполнение массива латинскими буквами
При объявлении массива можно указать начальные значения его элементов. Покажем на примерах, как это делается.
Примерприсвоения начальных значений одномерному массиву:
Var A1: Array [0..6] of integer=(2,1,7,4,3,8,10); // список констант
Для многомерных массивов каждый список констант соответствующего измерения заключается дополнительно в круглые скобки и отделяется запятой. Самые внутренние множества констант связываются с изменением самого правого индекса массива.
Примерприсвоения начальных значений двумерному массиву:
Type A2: Array [1..3,1..2] of integer=((1,2),(3,4),(5,6)); // значения 1,2,3,4,5,6.
Примертипизированной константы типа «массив»:
Const Matr: Array[1..3,1..5) Of Byte=((0,1,2,3,4),(5,6,7,8,9),(10,11,12,13,14));
К одномерным символьным массивам применимы функции работы со строками.
Параметры в виде открытых массивов
При объявлении подпрограммы (функции или процедуры) можно не указывать размерность массивов. Такой открытый массив воспринимается в подпрограмме как массив с целыми индексами, начинающимися с нуля. Размер массива определяется функцией Length и Height=Length‑1.
При вызове подпрограммы в качестве параметра со значениями открытого массива можно использовать конструктор открытого массива, который задает в квадратных скобках список значений элементов массива через запятые.
Пример: S=MinValue([1.3,45.6,‑22,67,132.45,56]).
Приведем некоторые полезные функции обработки массивов.
Length(x) -возвращает число элементов в массиве.
High(x)/Low(x) - возвращает наибольшее/наименьшее значение индекса.
MaxIntValue(x), MinIntValue(x), MaxValue(x), MinValue(x) - возвращает максимальное, минимальное значение элемента числового массива.
Sum(x) - возвращает сумму элементов числового массива.
Дата добавления: 2016-03-22; просмотров: 606;