Лекция 7
7.0. Массивы
Тип массив – структура данных, представляющая собой набор переменных одинакового типа, имеющих общее имя.
Каждый элемент массива однозначно определяется именем и индексом (номером элемента в массиве).
Индексы массива принадлежат целочисленному типу.
Массив может быть:
-
одномерным a[ i ] ( i – номер элемента)
-
двумерным b[i,j] ( i –номер строки , j – номер столбца)
Массив заданный математически имеет вид:
- одномерный A := (1, 5, 8, 3, 4, 2, 7, 0)
- двумерный B ( 3 – строки и 2 – столбца )
Массив, объявленный в среде Lazarus:
- одномерный Arr1 [ 1..8 ],
- двумерный Arr2 [ 1..3, 1..2 ].
Формат объявления одномерного массива:
<Имя>=array [<нижний индекс . . верхний индекс>] of <тип>;
где: Имя – имя массива;
array – зарезервированное слово языка, обозначающее объявление массива;
нижний индекс и верхний индекс – целые константы, определяющие диапазон изменения индекса элементов массива;
тип – тип элементов массива.
Примеры объявления массивов:
type
Matrix=Array[1 . . 3, 1 . . 2 ] of Real; //Тип - двумерный массив
// вещественных чисел состоящий из 3 строк и 2 столбцов
A=Array [1 . . 8 ] of Real; //Тип - массив из 8 вещественных чисел
или
var
S : Array [ ' a ' . . ' z ' ] of Char ; //одномерный массив S символьного типа
или
const
B : Array[1..6] of integer=(1,5,3,-2,0,3); // одномерный массив из 6 целых чисел
При работе с массивами необходимо помнить об ограничении на размер общей памяти под переменные (64 Кбайт).
Общая память под переменные 64 Кбайт.
При объявлении массива удобно использовать именованные константы, которые объявляются в разделе констант, перед разделом переменных.
Например:
const
N=12; //число команд
SN=50; //предельная длина названия команды
var
team: array[1 . . N] of string[SN];
При обращении к элементу массива, надо указать его имя и номер элемента в квадратных скобках:
. . .
team[ 1 ] := ’CSK’;
S:=S+A[2];
. . .
При объявлении массива в разделе переменных модуля одновременно с объявлением массива можно выполнить его инициализацию, т.е. присвоить начальные значения элементам массива.
Формат объявления массива с инициализацией:
<Имя>=array [<нижний индекс . . верхний индекс>] of <тип>= (список);
//одномерный массив
<Имя>=array [<нижний индекс . . верхний индекс>строк,
<нижний индекс . . верхний индекс>столбцов,] of <тип>= (список);
//двумерный массив
Например:
program Example1;
…
uses
SysUtils;
var
Team: array[1..5] of string[10]=('Zenit', 'Dinamo', 'Spartak', 'Rotor', 'CSK');
А: array[1..4,1..4] of integer=((0,2,4,6),(2,9,6,3),(4,7,5,8), (1,6,5,7));
. . .
Количество элементов списка инициализации должно соответствовать размерности массива. Иначе компилятор выведет сообщение об ошибке.
Локальный массив (в процедуре) можно инициализировать во время выполнения программы в цикле.
Например:
for i :=1 to 10 do
begin
Writeln( 'Vvedite', i, 'element massive А' );
Readln( А [ i ] ); //ввод элемента массива А
end;
Операции, производимые над элементами массива, полностью определяются типом этих элементов.