Массив - это упорядоченная совокупность однотипных элементов. Члены этой совокупности называются элементами массива. Каждый элемент определяется именем массива и его положением в массиве.
Упорядоченность последовательности данных заключается в том, что элементы массива располагаются в последовательных ячейках памяти.
Массивы бывают одномерные, двумерные, трехмерные, и т.д. Массив называется одномерным, если для получения доступа к его элементам достаточно одной индексной переменной.
Объявление одномерного массива:
VAR
Имя_массива: ARRAY[1..k] OF <Тип_данных>;
Здесь переменная k задает количество элементов в массиве, при этом значение индекса элементов лежит в интервале от 1 до k и может принимать только целые значения.
Массивы могут иметь и более одного измерения. Размерность ("мерность") массива определяет количество индексов отдельного элемента.
Здесь k1 задает количество строк и диапазон изменения индекса строк, k2 - количество столбцов и диапазон изменения индекса столбцов.
Объявление трехмерного массива:
Имя_массива: ARRAY[1..k1,1..k2,1..k3] OF < Тип_данных>;
Здесь k1 задает количество строк и диапазон изменения индекса строк, k2 - количество столбцов и диапазон изменения индекса столбцов, k3 - количество слоев и диапазон изменения индекса слоев.
Подобным образом описываются массивы и более высокой размерности. Ограничения на максимальное значение размерности не существует.
Обращение к отдельным элементам массива осуществляется по имени массива и последовательности его индексов, заключенных в квадратные скобки и разделенных запятой.
На примере двумерного массива А(5х6) рассмотрим ввод элементов массива и вывод их на экран в виде строк и столбцов.
Program Wwod_Wywod;
Var A : Array [1..5,1..6] of integer;
I,J : Integer;
Begin
For I:=1 to 5 do
For J:=1 to 6 do
read(A[I,J]); {- считывание в цикле всех 30 элементов массива}
For I:=1 to 5 do Begin
For J:=1 to 6 do Write (A[I,J]:4); {- вывод в одну строку значений элементов массива вложенного цикла длиной в 4 символа}
Writeln; {- переход на новую строку}
End;
End.
При работе с массивами надо помнить, что в каждый момент времени мы работаем с одним конкретным элементом массива заданного типа. Если элементов массива много, то для ввода значений часто используют функцию Random(Х), которая возвращает случайное целое число, равномерно распределенное в диапазоне от 0 до Х-1 (Х – параметр обращения). Если параметр Х опущен, то функция возвращает вещественное число в диапазоне от 0 до 1.
Program Wwod;
Var A : Array [1..8,1..10] of Integer;
I, J : Integer;
Begin
For I:=1 to 8 do
For J:=1 to 10 do A[I,J] := Random(100);
……………
End.
При решении задач массивы используются очень часто, и зачастую эти массивы необходимо отсортировать по возрастанию или по убыванию. Существует два основных алгоритмов сортировки.
Сортировка выбором
1. Установить номер наименьшего элемента массива
2. Поменять местами наименьший и первый элементы массива.
3. Оставив в покое первый элемент, выполнить первые два пункта над остатком массива. Пункт 3 повторять, пока остаток не сократится до одного элемента.
Метод пузырька (обменная сортировка)
1. Сравнивать в цикле соседние элементы, и если левый элемент оказался больше, то поменять его местами с правым.
2. Выполнить шаг 1, не обращаясь к последнему элементу.
Пример. Отсортировать массив в порядке убывания (сортировка осуществляется при помощи двух вложенных циклов)
For j:=1 to N-1 do
Begin
NEW:=MAS[N];
K:=N;
For i:=N downto j do
If MAS[i]>NEW then
Begin
K:=i;
NEW:=MAS[i]
End;
MAS[K]:=MAS[j];
MAS[J]:=NEW;
End;
Записи
Записи - это еще один структурированный тип данных, позволяющий хранить вместе переменные, имеющие различные типы данных. Поля записи - фиксированное количество компонентов записи. Чтобы можно было ссылаться на тот или иной компонент записи, поля именуются.
<список полей> - список полей; представляет собой последовательность разделов записи, между которыми ставится точка с запятой.
Каждый раздел записи состоит из одного или нескольких идентификаторов полей, отделяемых друг от друга запятыми. За идентификатором ставится двоеточие и описание типа поля (полей), например:
VAR Students = RECORD
Surname,
Name,
Address : STRING[20];
group : Word;
Telephone : LongInt;
END;
При обращении к отдельным полям указывается имя всей записи и имя отдельного поля, причем они разделяются точкой.