Cтраница 2
Однородные и неоднородные многомерные массивы являются основными типами структур данных в ПЛ / I. Во время компиляции обязательны полные описания числа размерностей и типа элементов, но области изменения индексов для однородных массивов могут быть заданы во время выполнения программы. Методы, используемые для описания таких массивов, их хранения во время выполнения программы и доступа к их элементам, стандартны и обсуждаются в разд. Неоднородные массивы называются структурами. Они могут содержать в качестве элементов однородные массивы ( массивы), а массивы могут содержать в качестве элементов структуры; таким образом, допустимы смешанные массивы, аналогичные используемым в Коболе. [16]
Поскольку любой многомерный массив при его представлении в памяти на самом деле сводится к приведенному одномерному массиву, то при программировании в ряде случаев бывает удобно исходный массив трактовать как одномерный массив, используя для указания нужной его компоненты приведенный индекс, каковым является ее порядковый номер в одномерном массиве ( см. разд. [17]
![]() |
Некоторые примеры сжатия. [18] |
Для многомерного массива имеет место то же самое правило. При этом сохраняются или отбрасываются столбцы массива. [19]
У многомерных массивов индексы переменной в их списке отделяются друг от друга запятой. [20]
В многомерных массивах указывается более двух индексов. Однако многомерные массивы реализованы не во всех версиях Бейсика. [21]
Сам термин многомерный массив указывает, что человек не склонен приписывать элементам такого массива простую линейную упорядоченность, при которой каждый элемент получает свой отличительный порядковый номер. Однако, если мы хотим разместить массив в памяти, то его элементы неизбежно выстраиваются в такую линейную последовательность в соответствии с адресами, которые они получают. В принципе допустимо размещение элементов массива в памяти в любом порядке, лишь бы для каждого элемента была выделена своя ячейка. Но на практике многомерные массивы, как и одномерные, размещаются в памяти так, чтобы адрес элемента линейно зависел от его индексов. [22]
Сам термин многомерный массив указывает, что человек не склонен приписывать элементам такого массива простую линейную упорядоченность, пря которой каждый элемент получает свой отличительный порядковый номер. В принципе допустимо размещение элементов массива в памяти в любом порядке, лишь бы для каждого элемента была выделена своя ячейка. Но на практике многомерные массивы, как и одномерные, размещаются в памяти так, чтобы адрес элемента линейно зависел от его индексов. [23]
При копировании многомерных массивов их можно представлять себе как одномерные, в которых строки расположены последовательно друг за другом. Например, если массив А2 имеет строки по три элемента, то приведенный выше оператор скопирует первые 4 элемента массива А1 в элементы первой строки А2 и в первый элемент второй строки. [24]
При отображении многомерного массива на вектор принято располагать элементы последовательно, строка за строкой. В S [0] заносится элемент A [ L3, L2, L1 ] с минимальными значениями всех трех индексов. [25]
Первый индекс многомерного массива также не требуется, однако все последующие индексы необходимы. Компилятор использует эти индексы для определения местонахождения в памяти элементов многомерных массивов. [26]
При использовании многомерных массивов можно очень быстро исчерпать допустимый объем памяти. [27]
При обработке многомерных массивов следует выделить такой частный случай, когда в процессе обработки массива последовательно присматриваются и обрабатываются все его элементы. [28]
Для обработки многомерного массива используют объект, называемый паспортом. Паспорт занимает несколько слов. Он содержит дескриптор вектора, на который наложен многомерный массив, и информацию, облегчающую вычисление адреса элемента по индексам. Можно создать паспорт, позволяющий работать с диаго -: малью матрицы как с обычным одномерным массивом. [29]
Доступ к многомерному массиву может осуществляться с помощью формулы доступа, являющейся простым обобщением формулы, используемой для векторов. [30]