Составные типы данных характеризуются наличием многочисленных атрибутов. К ним относятся массивы, записи, множества.
Массив - это структура данных, которая содержит последовательность элементов одинакового типа.
- Время доступа к любому элементу массива
A[i] не зависит от значения индекса i.
- Индекс первого элемента называют нижней границей, а индекс последнего элемента - верхней границей массива.
- При обращении к массиву желательно проверять значение текущего индекса, чтобы оно находилось в пределах допустимого диапазона. Такая проверка реализована только в языках Pascal, Ada, Java и C#. В других языках (например, в С и С++) проверка отсутствует.
- В PERL имена всех массивов должны начинаться с символа
@, а имена элементов - со знака $. Например, ко второму элементу массива @list обращаются по имени $list. Можно использовать $list[-2] для обращения к предпоследнему элементу массива.
Разновидности массивов:
- Статические массивы: связывание по диапазонам индексов и размещение в памяти происходит до начала работы программы.
- Явные стековые массивы: статическое связывание по диапазонам индексов, размещение в памяти происходит по итогам обработки объявления в ходе выполнения программы (подпрограммы). Массив удаляется из стековой памяти по завершению работы программы (подпрограммы).
- Стековые массивы: динамическое связывание по диапазонам индексов и динамическое размещение в памяти, которое происходит в ходе обработки объявления. Связанность диапазонов индексов и размещение массива в памяти сохраняются в течение всей жизни переменной.
- Явные динамические массивы: связывание по диапазонам индексов и по памяти происходит после размещения в памяти. Связывание по индексам и памяти производится по запросу программы и в течение ее выполнения, память выделяется в куче.
- Динамические массивы: динамическое связывание по диапазонам индексов и размещению в памяти, которое повторяется многократно в течение всего жизненного цикла массива.
Ассоциативные массивы - это неупорядоченное множество элементов данных, индексированных ключами.
-
Широко используются в Perl, Python, Ruby и Lua.
-
Обеспечиваются стандартными библиотеками классов в Java, C++, C# и F#.
-
Пример на PERL:
%age = ( "Liza" => 27, "Alex" => 18, "Nataly" => 30, "John" => 41);
$age{"Nataly"} = 33;
Строки символов бывают:
- Фиксированной длины (строки со статической длиной).
- Переменной длины, не превосходящей заданного максимума (строки с ограниченной динамической длиной).
- Неограниченные по длине (строки с неограниченной динамической длиной).