Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Массивы и матрицы.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
345 Кб
Скачать
☆

Индексный массив

Индексный массив (в некоторых языках программирования также таблица, ряд) — именованный набор однотипных переменных, расположенных в памяти непосредственно друг за другом (в отличие от списка), доступ к которым осуществляется по индексу.

Индекс массива — целое число, либо значение типа, приводимого к целому, указывающее на конкретный элемент массива.

В ряде скриптовых языков, например JavaScript, PHP, Ruby применяются также ассоциативные массивы, в которых переменные не обязаны быть однотипными,

и доступ к ним не обязательно осуществляется по индексу.

Общее описание

Количество используемых индексов массива может быть различным. Массивы с одним индексом называют одномерными, с двумя — двумерными и т. д. Одномерный массив нестрого соответствует вектору в математике, двумерный — матрице. Чаще всего применяются массивы с одним или двумя индексами, реже — с тремя, ещё большее количество индексов встречается крайне редко.

Пример статического массива на Паскале -

word Array : array [Word] of Integer; { Статический, размер = High(Word) + 1 }

multi Array : array [Byte, 1..5] of Char; { Статический массив, 2 измерения }

rang e Array : array [5..20] of String; { Статический массив, размер = 16 }

Пример статического массива на С/С++ -

int Array[10]; // Статический, размер 10, базовый тип данных - целое число (int)

double Array[12][15]; // Статический массив, 2 измерения, базовый тип данных - число// с дробной частью (double)

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

В языках программирования, допускающих объявления программистом собственных типов, как правило, существует возможность создания типа «массив». В определении такого типа может указываться размер, тип элемента, диапазон значений и типы индексов. В дальнейшем возможно определение переменных созданного типа. Все такие переменные-массивы имеют одну структуру. Некоторые языки поддерживают для переменных-массивов операции присваивания (когда одной операцией всем элементам массива присваиваются значения соответствующих элементов другого массива).

Объявление типа «массив» в Паскале -

type

T Array Type = array [0..9] of Integer; (* Объявления типа "массив" *)

var

arr1, arr2, arr3: TArrayType; (* Объявление трёх переменных-массивов одного типа *)

Специфические типы массивов Динамические массивы

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

Пример динамического массива на Delphi

byte Array : Array of Byte; // Одномерный массив

multi Array : Array of Array of string; // Многомерный массив

Пример динамического массива на Си

float *array1; // Одномерный массив

int **array2; // Многомерный массив

array1=(float*)malloc(10*sizeof(float)); // выделение 10 блоков по sizeof(float)байт каждый

array2=(int**)malloc(16*sizeof(int *)); // выделение 16*8 блоков по sizeof(int) байт каждый

for(i=0;i<16;i++)

array2[i]=(int*)malloc(8*sizeof(int));

Пример динамического массива на С++

float *array1; // Одномерный массив

int **array2; // Многомерный массив

array1=new float[10]; // выделение 10 блоков размером типа float

array2=new int*[16]; // выделение 16*8 блоков размером типа int

for(int i=0;i<16;i++)

array2[i]=new int[8];