Массив (тип данных): различия между версиями

[непроверенная версия][отпатрулированная версия]
Содержимое удалено Содержимое добавлено
Комментарии к коду. Синтаксис.
Ненужные тире, избыточная викификация
Строка 1:
{{другие значения|Массив}}
'''Массив''' (также, — в некоторых [[язык программирования|языках программирования]], также «''таблица''», «''ряд''», «''матрица''») — [[Тип данных|тип]] или [[структура данных]] в виде набора компонентов (''элементов'' массива), расположенных в памяти непосредственно друг за другом. При этом доступ к отдельным элементам массива осуществляется с помощью [[Индексация (программирование)|индексации]], (то есть через ссылкуссылки на массив с указанием номера (''индекса'') нужного элемента);. заЗа счёт этого и, в отличие от [[список (информатика)|списка]], массив является структурой данных, пригодной для осуществления произвольного доступа кс еёпроизвольным ячейкамдоступом{{sfn|Вирт|1989|loc = 1.6 Массив}}.
 
'''Размерность''' массива — это количество индексов, необходимое для однозначнойоднозначного адресациидоступа элементак в рамкахэлементу массива<ref>[http://comp.vslovar.org.ru/828.html Дрот В. Л., Новиков Ф. А. «Толковый словарь современной компьютерной лексики», Размерность массива]</ref>{{sfn|Хювёнен, Сеппянен|1990|с = 349}}. '''Форма''' или '''структура массива''' — сведения о количествеколичество размерностей иплюс размереразмер (протяжённость) массива для каждой из размерностейразмерности{{sfn|Бартеньев|2000|cc = 108-109}}; может быть представлена одномерным массивом{{sfn|Магариу|1983|cc = 18-19}}.
 
В языке программирования «[[APL (язык программирования)|APL]]» — массив является основным типом данных (при этом нуль-мерный массив называется ''скаляром'', одномерный — ''вектором'', двумерный — ''матрицей''){{sfn|Магариу|1983}}.
 
== Общее описание ==
Массив — упорядоченный набор данных, — используемый для хранения '''данных''' одного типа, идентифицируемых с помощью одного или нескольких ''индексов''. В простейшем случае массив имеет ''постоянную'' длину и хранит единицы данных ''одного и того же'' типа.
 
Количество используемых '''индексов''' массива может быть различным:. массивыМассивы с одним индексом называют ''одномерными'', с двумя — ''двумерными,'' и т. д. Одномерный массив («''колонка''», «''столбец''») нестрого соответствует [[Вектор (математика)|вектору]] в математике;, двумерный — [[Матрица (математика)|матрице]]. Чаще всего применяются массивы с одним или двумя индексами;, реже — с тремя;, ещё большее количество индексов встречается крайне редко.
 
;Пример фиксированного массива на языке Паскаль
Строка 27:
;Пример фиксированного массива на С/С++
<source lang="cpp">
int Array[10]; // Одномерный массив: целых чисел, размера 10;
// Нумерация элементов от 0 до 9.
double Array[12][15]; // Двумерный массив: вещественных чисел двойной точности
// размера 12 на 15.
double Array[12][15]; // Двумерный массив:
// вещественныхНумерация чиселпо двойнойстрокам точностиот 0 до 11, по столбцам от 0 до 14
// размера 12 на 15;
// Нумерация: по строкам — от 0 до 11,
// по столбцам — от 0 до 14.
</source>
 
В некоторых языках программирования многомерные массивы создаются на основе одномерных, у которых элементы являются массивами<ref name="McMillan2014">{{cite book|author=Michael McMillan|title=Data Structures and Algorithms with JavaScript|url=http://books.google.com/books?id=1ywEAwAAQBAJ&pg=PA30|date=10 March 2014|publisher="O'Reilly Media, Inc."|isbn=978-1-4493-7396-2|pages=30–32}}</ref>.
 
; Пример двумерного массива на JavaScript
<source lang="javascript">
// ES6
// Создание двумерного массива чисел:
var array = [
[11, 12, 13, 14, 15, 16], // Первая строка-массив
[21, 22, 23, 24, 25, 26], // Вторая
[31, 32, 33, 34, 35, 36] // Третья
];
array.forEach((subArray) => {
// Вывод массива на консоль:
array subArray.forEach((subArrayitem) => { // Для каждого под-массива,
subArray console.forEach(log(item); => { // для каждого его элемента,
console.log(item); // — вывести этот элемент на консоль.
});
});
</source>
 
Поддержка индексных массивов (свой синтаксис объявления, функции для работы с элементами и т. д.) есть в большинстве [[язык программирования высокого уровня|высокоуровневых языков программирования]]. Максимально допустимая размерность массива, типы и диапазоны значений индексов, ограничения на типы элементов определяются языком программирования и (/или) конкретным [[Транслятор|транслятором]].
 
В языках программирования, допускающих объявления программистом собственных [[тип данных|типов]], как правило, существует возможность создания типа «массив». В определении такого типа могутможет указываться: размер<!-- Размер чего? — Массива? (число элементов) Или размер элемента? -->, тип элемента, диапазон значений и типы индексов. В дальнейшем возможно определение переменных созданного типа. Все такие переменные-массивы имеют одну структуру. Некоторые языки поддерживают для переменных-массивов операции присваивания (когда одной операцией всем элементам массива присваиваются значения соответствующих элементов другого массива).
 
;Объявление типа «массив» в языке Паскаль
<source lang="pascal">
type
TArrayType = array [0..9] of Integer; (* Объявления типа "массив" *)
(* Массивы, имеющие заданные параметры:
1. Размер — 10 ячеек;
2. Тип элементов, пригодных для хранения —
— целые числа диапазона [−32 768; 32 767],
— объявляются типом операндов, называющимся "TArrayType". *)
 
var
arr1, arr2, arr3: TArrayType; (* Объявление трёх переменных-массивов одного типа *)
(* Объявление трёх переменных-массивов одного типа
(вышеуказанного "TArrayType"). *)
</source>
 
Строка 80 ⟶ 68 :
=== Динамические массивы ===
{{main|Динамический массив}}
«'''''Динамическим'''»'' — называется массив, такогоразмер размера, которыйкоторого может «''динамически''» меняться приво выполнениивремя выполнения программы (например, — ''уменьшаться'' после выгрузки неактуальных данных). [[Язык программирования]], предоставляющийподдерживающий такуюдинамические возможностьмассивы, называетсядолжен поддерживающимпредоставлять динамическиевозможность массивыдля изменения размера массива. Динамические массивы делают работу с данными более гибкой, так как не требуют предварительного определения хранимых объёмов данных, а позволяют регулировать размер массива в соответствии с реальными потребностями. Обычные (не динамические) массивы называют ещё ''фиксированными''.
 
;Пример динамического массива на Delphi