Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции_Информатика.doc
Скачиваний:
5
Добавлен:
16.04.2019
Размер:
738.82 Кб
Скачать

2. Описание двумерных массивов

Это описание аналогично описанию одномерных массивов. Разница заключается в том, что в нём необходимо указать тип не одного, а двух индексов.

Пример

var

bas : array [0..5,1..10] of real ;

В разделе описания переменных объявлен двумерный массив вещественного типа bas, состоящий из 6 строк и 10 столбцов; длина массива 6*10=60 элементов.

Пример

type

c = array [1..3,1..10] of integer ;

var

maxim : c;

Здесь массив maxim описан в двух разделах - типов и переменных, и состоит из 3 строк и 10 столбцов; базовый тип элементов - целый, длина массива - 30 элементов. Если в программе необходимо использовать отдельные строки матрицы, то её удобно описать как массив строк, каждая из которых является одномерным массивом.

Пример

type

str = array [1..5] of real;

var

matr : array [1..4] of str;

Описан двумерный массив matr состоящий из 4-х строк, каждая из которых представляет собой одномерный массив (вектор) str содержащий по 5 элементов.

Обращение к элементам двумерного массива

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

Пример

x[2,1] - обращение к элементу массива Х с индексами 2 и 1;

zet[m,n] - обращение к элементу массива zet; индексы элемента m и n должны быть предварительно определены численно;

beta[i+2,k] - обращение к элементу массива beta; индексное выражение i+2 должно быть предварительно вычислено, а значение k определено.

Ввод-вывод двумерных массивов.

Для хранения элементов массива ЭВМ в своей памяти резервирует непрерывную последовательность ячеек, число которых равно его длине. Последовательность эта может быть заполнена элементами массива двумя способами - строка за строкой ("по строкам") или столбец за столбцом ("по столбцам"). И в том и в другом случае используется сложный цикл, содержащий два цикла - внешний и внутренний. Последний должен содержать оператор ввода.

Пример

var

i,k : integer ;

c : array [0..5,0..10] of real ;

begin

for i:=0 to 5 do

for k:=0 to 10 do

read(c[i,k]);

end.

Внешний цикл начинается с присваивания параметру i его начального значения, равного нулю, после чего выполняется внутренний цикл с параметром k, последовательно принимающим значения 0,1,2,...,10, т.е. вводится элементы нулевой строки матрицы c[0,0], c[0,1], c[0,2], ..., c[0,10]. Далее произойдет возврат во внешний цикл, значение переменной i увеличится на 1. При новом значении i снова будет выполнен внутренний цикл, т.е. введены элементы следующей строки. Операции ввода будут продолжаться до тех пор, пока не будут введены все элементы массива.

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