Одномерные массивы

 

Если указан только один тип индекса, массив является одномерным.

Примеры описаний одномерных массивов:

const MAXLEN=100;{константа удобна для изменения размера массива}

type t_vect =array[1.. MAXLEN] of integer;

var a : t_vect; {для хранения целочисленных последовательностей}

b : t_vect;

c, d : array[1.. MAXLEN] of integer;

point : array[(x, y, z)] of real; {для хранения координат точки или

вектора}

flag : array[‘A’..‘Z’] of boolen;

Массивы a, b, c, d имеют одинаковые размеры (=100). Размер массива point равен 3, flag - 26.

Компоненты (элементы) массива занимают последовательные ячейки памяти. Объем памяти, выделяемой массиву, равен произведению размера массива на объем, занимаемый элементом. Переменная а занимает 100*2=200 байтов, point - 3*6=18 байтов, flag - 26*1=26 байтов.

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

Согласно приведенным выше описаниям, типы переменных a и b тождественны, так как переменные описаны с использованием имени типа t_vect. Переменные с и d тоже имеют тождественные типы, так как описаны в одной секции.

Над массивами любой размерности как над едиными целыми не определены никакие операции. Разрешено присваивание переменной типа массив значения переменной тождественного типа, то есть для совместимости массивов по присваиванию требуется тождественность типов.

Если массивы a и d инициализированы, то допустимы операторы b:=a и c:=d.

Имя массива является общим именем совокупности компонентов (элементов) массива. Обращение к отдельным компонентам массива осуществляется с помощью переменных с индексами:

 

 


Выражение в квадратных скобках должно иметь тип индекса. Например, a[1], d[MAXLEN div 2], point[x], point[y], flag[‘X’], flag[succ(‘G’)].

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

Пример.Составим программу для определения максимального члена данной целочисленной последовательности, длиной не больше 100, и номера этого элемента:

Program max_elem;

const MAXLEN=100;

var v : array [1.. MAXLEN] of integer;

max:integer; {для максимального значения}

n : 1.. MAXLEN; {n - длина последовательности}

imax, i : 1.. MAXLEN; {imax - для номера максимального члена}

Begin

write('Введите длину последовательности £ ', MAXLEN);

read (n);

write('Введите члены последовательности ');

for i:=1 to n do read(v[i]);

{Поиск максимального элемента}

max := v[1]; imax := 1; {инициализация переменных}

for i:=2 to n do

if v[i] > max then

begin {запоминаем большее значение}

max := v[i];

imax := i

end;

writeln(‘ Максим. член последовательности - v[’, imax, ‘] = ’, max)

End.

 



r.php"; ?>