Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УМКД-Паскаль-2012.docx
Скачиваний:
38
Добавлен:
01.05.2015
Размер:
561.45 Кб
Скачать

8.2. Двумерные массивы (матрицы)

Описание двумерных массивов можно представить следующим образом:

Это описание соответствует таблице, состоящей из n=2 строк и m=3 столбцов. При таком описании обращение к конкретному элементу, например, к a23 (элементу, стоящему во 2-ой строке и 3-м столбце) в Паскале будет выглядеть следующим образом: a[2,3], а его значение в нашем примере (см.таблицу) будет равно 3 (т.е. a[2,3]=3).

Ввод и вывод элементов массива

Ввод данных двумерного массива аналогичен одномерному массиву, осуществлять его можно также несколькими способами.

1 способ:

2 способ:

Обратите внимание на апострофы: данные, находящиеся внутри них будут напечатаны на экране без изменения, что позволит отслеживать, какой элемент в данный момент был введен, что очень важно при заполнении данных матрицы (таблицы).

Распечатать элементы массива в виде таблицы на экране можно так:

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

Наибольший интерес представляют квадратные матрицы, то есть двумерные массивы, у которых количество строк и столбцов совпадает, например:

Обращение к компонентам массива

Массивы относятся к структурам прямого доступа. Это означает, что возможно напрямую (не перебирая предварительно все предшествующие компоненты) обратиться к любой интересующей нас компоненте массива.

Доступ к компонентам линейного массива осуществляется так:

а многомерного - так:

Правила употребления индексов при обращении к компонентам массива таковы:

  1. Индекс компоненты может быть константой, переменной или выражением, куда входят операции и вызовы функций.

  2. Тип каждого индекса должен быть совместим с типом, объявленным в описании массива именно для соответствующего "измерения"; менять индексы местами нельзя.

  3. Количество индексов не должно превышать количество "измерений" массива. Попытка обратиться к линейному массиву как к многомерному обязательно вызовет ошибку. А вот обратная ситуация вполне возможна: например, если вы описали N-мерный массив, то его можно воспринимать как линейный массив, состоящий из (N-1)-мерных массивов.

Примеры использования компонент массива:

Задание массива константой

Для того чтобы не вводить массивы вручную во время отладки программы (особенно если они имеют большую размерность), можно пользоваться не только файлами. Существует и более простой способ, когда входные данные задаются прямо в тексте программы при помощи типизированных констант.

Если массив линейный (вектор) или как мы его называли ранее одномерный, то начальные значения для компонент этого вектора задаются через запятую, а сам вектор заключается в круглые скобки.

Многомерный массив также можно рассматривать как линейный, предполагая, что его компонентами служат другие массивы. Таким образом, для системы вложенных векторов действует то же правило задания типизированной константы: каждый вектор ограничивается снаружи круглыми скобками.

Исключение составляют только массивы, компонентами которых являются величины типа char. Такие массивы можно задавать проще: строкой символов.

Примеры задания массивов типизированными константами:

Замечание: Невозможно задать неименованную или нетипизированную константу, относящуюся к типу данных array.