Массивы «ARRAY»
Краткие теоретические сведения
Массивы используются для хранения большого количества данных. Существую несколько видов массивов:
1. Одномерный (Вектор)
2. Двумерный (Матрица)
3. Трехмерный (Кубический)
4. Многомерный
В программах чаще всего используют массивы первых двух видов.
| 0 | 1 | 2 | 3 | 4 | 5 | … | … | … | n-1 |
| 3 | 4 | 7 | 21 | 4.5 | … | [э] |
[э] – какой-либо элемент
На данном рисунке изображен одномерный числовой массив (назовем его A), состоящий из n элементов. Следует обратить внимание, что индекс элементов начинается с нуля.
| 0 | 1 | … | i-1 | |
| 0 | 4 | 11 | … | [э] |
| 1 | 24.5 | 78 | … | [э] |
| … | … | … | … | … |
| j-1 | [э] | [э] | [э] | [э] |
На этом рисунке изображен двумерный числовой массив из ixj элементов (назовем его B). Чаще используется квадратная матрица, где i=j=n, иначе обозначаемая nxn.
Примечание: На данных примерах массивов A и B, я указал наиболее часто используемые и более понятные виды массивов, с которыми намного легче работать. На самом деле индексы начала и конца массива могут задаваться пользователем на усмотрение, о чем будет говориться далее.
Можно провести аналогию массивов и переменных. Имя массива обозначается так же, как и имя переменной, за исключением индексов, стоящих в квадратных скобках, например: для первого одномерного массива: A[1] он будет равным 4, – для второго массива: B[0,1] он будет равным 24.5, – и так далее. Массивы, как и переменные, могут быть разного типа: числового (целого, вещественного…), строкового, символьного и другого.
Описание массивов
Описывать массивы можно, как и через блок описания переменных «Var», через блок описания констант «Const», так и с помощью блока описания типов «Type». Рассмотрим два первых метода описания (последний способ можно найти, перейдя по ссылке).
Общий вид описания в блоке «Var»:
Var <имя массива>: array [тип индекса в кв. скобках] of <тип элементов>=[(элементы)];
Часто не указывают тип индекса, а задают тип промежутками, например: [1..10,-5..5]. Пример:
Var massiv: array [1..10,-5..5] of real;
Таким образом, мы создали двумерный массив «massiv» со строками с индексами от i=1,2,…, 10 и со столбцами с индексами j=-5,-4,…,5.
В PascalABC. NET вводится следующее наименование таких массивов – статические. Как видно из общего вида данные массивы можно изначально заполнить какими-либо элементами, которые затем можно будет изменить в течение программы. При этом индексами могут быть не только цифры, но и буквы, например: ['a'..'z'] или [d1..d5].
Общий вид описания в блоке «Const»:
Const <имя массива>=array [тип индекса в кв. скобках] of <тип элементов> = (элементы);
Пример:
Сonst massivc = array [0..2,0..2] of integer = ((2,4,7),(10,23,-54));
Можно копировать содержимое массивов из одного в другой, но только при условиях, что:
1. Массивы одного типа
2. Массивы одинакового размера,
воспользовавшись оператором присваивания: m1:=m2;
При работе с массивами, а именно: заполнении, счете, чтении и т.д., – используют циклы. Для работы, например, с двумерным массивом, используют два вложенных цикла. Обработка матрицы возможна по строкам или по колонкам, аналогично и для других случаев.
Пример:
Задача: создать массив и заполнить данный массив с клавиатуры.
program arr;
var table: array [0..4, -2..2] of integer;
i,j: byte;
begin
for i:=0 to 4 do
for j:=-2 to 2 do begin
write ('Введите элемент с индексами (',i,',',j,'):');
readln(table[i,j])
end
end.
Другие примеры можно найти на сайте, в частности «Перемножение квадратных матриц».