Двумерные массивы матриц — это массивы, у которых все элементы обладают двумя индексами, а именно, номером строки и номером столбца.
Массивы: сущность, основные понятия
Когда требуется решить задачу, связанную с обработкой большого числа данных одного типа, с использованием разных переменных, не прошедших сортировку, то может возникнуть много проблем при программной реализации решения данной задачи. Чтобы преодолеть эти проблемы, в таких случаях в языках программирования применяются специальные формы, названные массивами. Массивом считается фиксированный участок памяти, содержащий совокупность однотипных объектов и имеющий отдельное, общее наименование (имя). Массив определяется следующими характеристиками:
- Элементы массива - набор значений, хранящихся в отведённых им ячейках памяти, расположенных в пределах массива и имеющих конкретные адреса ячеек памяти.
- Адрес массива - адрес первого компонента массива.
- Имя массива - идентификационный признак, позволяющий выполнить обращение к элементам массива.
- Объём массива - количество входящих в состав массива компонентов.
- Размер элемента - количество байтов, занимаемых одним компонентом массива.
- Размер массива - количество байтов, отведённых в памяти для хранения всей совокупности компонентов массива. То есть, длина или размер массива — это произведение размера одного компонента на их суммарное число.
Использование многомерных массивов эффективно тогда, когда информационные данные, подлежащие обработке, представлены в форме таблицы или целого набора таблиц. Для первого варианта оптимальным считается применение двумерных массивов, имеющих другое наименование «матрица», а для второго варианта (набор таблиц) оптимальным будет использование трехмерных массивов. Следует отметить, что массивы могут обладать и большей размерностью. Например, язык программирования Visual Basic способен формировать массивы, которые содержат до тридцати двух размерностей.
Обработка двумерных массивов
Обработку двумерных массивов рассмотрим на примере использования возможностей языка программирования Visual Basic. Операция описания двумерных массива, по существу, аналогична описанию одномерных массивов. В начале следует указать имя матрицы, а далее круглые скобки, внутри которых необходимо поставить одну запятую. Запятая указывает программе, что будет организован массив, обладающий двумя индексами. В конце указывается тип данных, который будет иметь каждый элемент матрицы. Матрица может быть объявлена одним из двух методов. Первый метод:
Dim a(,) As Integer
Данный оператор выполняет описание двумерного целочисленного массива а(,), имеющего тип Integer и неизвестный заранее размер. Сначала в этом массиве отсутствуют элементы, а размер данной матрицы может быть определён в дальнейшем при помощи оператора:
ReDim.
Второй метод:
Dim b(10, 18) As Single
Эта запись осуществляет определение двумерного массива b(,), имеющего тип Single и состоящего из одиннадцати строк и девятнадцати столбцов. Матричные строки нумеруются от нуля до десяти, а столбцы, соответственно, от нуля до восемнадцати.
Следует отметить, что когда описывается матрица, то вначале нужно указать номер последней строчки, а далее указать номер последнего столбика. Кроме того, нужно помнить, что номера строчек и столбиков матрицы отсчитываются от нуля, вне зависимости от метода её объявления. Объём массива также может меняться при исполнении программы при помощи оператора ReDim.
Как отмечалось уже выше, объём памяти, который занимает матрица, можно вычислить путём перемножения количества строк, количества столбцов и объёма памяти, занимаемого одной переменной этого типа данных. В качестве примера, определим объём памяти, требуемый для сохранения матрицы b(,). В данной матрице имеется одиннадцать строк и девятнадцать столбцов. Поскольку тип элемента данных матрицы Single, то ему отводится в памяти четыре байта. Следовательно, требуемый объём памяти для этой матрицы будет равен:
11 • 19 • 4 = 836 байт.
Когда выполняется обращение к конкретному элементу двумерного массива, следует в круглых скобках указывать два индекса, разделённых запятой. Например:
b (3, 6) = 7.5.
При обработке двумерных массивов используется специальный формат, состоящий из двух циклов. Причём один из циклов расположен в теле другого цикла. Данный формат именуется вложенными циклами и может быть записан следующим образом:
For i = 0 to 10
For j = 0 to 18
A(i, j) = i + j
Next
Next
При каждом шаге во внешнем цикле, то есть For i = 0 to 10, целиком исполняются и все команды внутреннего цикла, а именно, For j = 0 to 18. Все команды внешнего цикла исполняются одиннадцать раз, а все команды внутреннего цикла исполняются девятнадцать раз. Таки образом, процедуры, заложенные в тело внутреннего цикла, будут исполнены 11•19 = 209 раз.
При формировании операций с вложенными циклами следует помнить, что значения счётчиков внешнего и внутреннего циклов всегда обязаны различаться.
Ввод матрицы означает задание её размеров с указанием значений всех её элементов. Эту процедуру можно осуществлять следующими методами:
- Путём ввода значений с клавиатуры.
- При помощи генератора случайных чисел.
Ввод значений компонентов массива при помощи клавиатуры компьютера является самым распространённым методом задания массива. Он включает следующие шаги:
- Необходимо указать число компонентов массива и соответственно переопределить размер массива.
- Необходимо организовать цикл, с каждым шагом которого вводить значение одного компонента.
Приведём пример программной реализации этих действий. Прежде всего следует описать целочисленную матрицу a(,) . Поскольку её размеры не определены заранее, то при описании матрицы нет номеров последней строки и столбца:
Dim a(,) As Integer
Для использования матрицы следует определить её размеры. Это можно сделать при помощи переменных:
m — это количество строк, а n — это количество столбцов.
Тогда:
Dim m, n As Integer