Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
6 Пользовательские типы данных(массивы, записи,....doc
Скачиваний:
2
Добавлен:
07.07.2019
Размер:
137.22 Кб
Скачать

6. Пользовательские типы данных ( массивы, записи, множества). Указатели. Массив

Массив – это формальное объединение нескольких однотипных переменных в одну. То есть, массив рассматривается как одна переменная, он имеет одно имя, но на самом деле там имеется несколько переменных одного типа. Массивы, как и переменные, объявляются в разделе переменных var, и имеют такой синтаксис:

Имя_переменной : array [диапазон значений] of Тип_переменных_в_массиве;

Пример:

var

a : Integer; //переменная целого типа

b : array [1..10] of Integer; //массив целого типа

begin

Обратите внимание, что диапазон значений в массиве указывается произвольно, между первой и последней цифрой нет пробелов, но обязательны две точки. Пример диапазона может быть и таким: [5..7], какие цифры назначать – решать Вам. Обычно в практике приходится начинать диапазон с 1 или с 0, в зависимости от ситуации.

Обращение к отдельному разделу массива такое:

a := 5;

b[1] := a;

b[2] := b[1]+2;

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

Рис. 9.1.  Представление массива в виде таблицы

Поскольку в приведенном примере объявлен массив целых чисел типа Integer, каждой ячейке (элементу) массива будет выделено по 4 байта памяти, каждый такой элемент соответствует обычной переменной такого же типа. Подобные массивы называются одномерными. С многомерными и динамическими массивами мы познакомимся позже.

Как уже упоминалось, массивы могут быть любого типа:

var

a : array [0..3] of String;

b : array [1..5] of Real;

c : array [10..20] of Boolean;

Обработка массива

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

var

i : Byte; //счетчик для for

a : Array [1..100] of Real; //массив для полученных данных

begin

for i := 1 to 100 do

a[i] := i * 1,609;

Что мы имеем в данном примере? При первом проходе цикла for счетчик i имеет значение 1, следовательно, в строке

a[i] := i * 1,609;

мы обращаемся к первому (a[1]) элементу массива, и присваиваем ему значение i, умноженное на 1,609 километров. Следовательно, в элемент массива a[1], который соответствует одной миле, попадает значение 1,609 километров. При втором проходе цикла i уже равен 2, значит, в элемент a[2] уйдет значение 2 * 1,609, то есть 3,218. И так далее, до конца массива. В дальнейшем, обратившись к нужному элементу массива, мы сможем узнать, скольким километрам будет равно данное количество миль:

ShowMessage('23 мили = ' + FloatToStr(a[23]) + ' километра');

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

for i := 0 to 100 do

a[i] := i * 1,609;

то получили бы ошибку, так как уже при первом проходе мы обратились бы к элементу a[0], которого не существует.