Массивы


Рассмотренные выше простые типы данных позволяют использовать в программе одиночные объекты - числа, символы, строки и т.п. В Турбо Паскале могут использоваться также объекты, содержащие множество однотипных элементов.
Массив - это множество однотипных элементов, объединённых общим именем и занимающих вкомпьютере определённую область памяти. Количество элементов в массиве всегда конечно. В общем случае массив - это структурированный тип данных, состоящий из фиксированного числа элементов, имеющих один и тот же тип.
Тип элементов, из которых состоит массив, может быть как скалярным, так и структурированным. Этот тип называется базовым, им может быть целый, байтовый, логический, символьный, перечисляемый, интервальный, вещественный, множественный типы и т. д.

При описании массива необходимо указать общее число входящих в массив элементов и тип этих элементов. Например:

var

а : array [1..10] of Real; 

b : array [0..50] of Char;

с : array [-3..4] of Boolean;

Как видим, при описании массива используются зарезервированные слова ARRAY и OF (массив, из). За словом ARRAY в квадратных скобках указывается тип-диапазон, с помощью которого компилятор определяет общее число элементов массива. Тип-диапазон (подробнее см. в гл.4) задается левой и правой границами изменения индекса массива, так что массив А состоит из 10 элементов, массив В - из 51, а массив С - из 8 элементов. За словом OF указывается тип элементов, образующих массив.

Доступ к каждому элементу массива в программе осуществляется с помощью индекса - целого числа (точнее, выражения порядкового типа, см. гл.4), служащего своеобразным именем элемента в массиве (если левая граница типа-диапазона равна 1, индекс элемента совпадает с его порядковым номером). При упоминании в программе любого элемента массива сразу за именем массива должен следовать индекс элемента в квадратных скобках, например:

var

a: array [1..10] of Integer;

b: array [0..40] of Char;

c: array [-2..2] of Boolean;

k: Integer; begin

b[17] := 'F1;

c[-2] := a[l] > [2] ;

for k : = 1 to 10 do a[k] := 0;

...

end.

В правильно составленной программе индекс не должен выходить за пределы, определенные типом-диапазоном. Например, можно использовать элементы А[1], В[38], С[0], но нельзя A[0] или С[38] (определение массивов см. выше). Турбо Паскаль может контролировать использование индексов в программе на этапе компиляции и на этапе счета программы.

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

Пример 1.9

Program Average;

{Программа создает массив из N случайных целых чисел, равномерно распределенных в диапазоне от 0 до MAX_VALUE-1, подсчитывает среднее арифметическое этих чисел, а также минимальное и максимальное из них.}

const

N = 1000; 

MAX_VALUE = 100+1; {Диапазон значений случайных чисел} 

var

m : array [1..N] of Integer; {Массив чисел}

i : Integer; {Индекс массива}

max, min : Integer; {Максимальное и минимальное число}

s : Real; {Сумма чисел}

begin

{Наполняем массив случайными числами:} 

for i := 1 to N do

m[i] := random(MAX_VALUE); {Задаем начальные значения переменных:}

s := 0;

max : = m [ 1 ] ;

min : = m [ 1 ] ;

{Цикл вычисления суммы всех случайных чисел и поиска минимального и максимального:}

for i := 1 to N do 

begin

s : = s + m [ i ] ;

if m[i] < min then

min := m[i]

else if m[i] > max then

max := m[i] 

end;

{Вычисляем среднее значение и печатаем результат:}

WriteLn('MMH = ',min,' Макс = ', max, ' Среднее = ',s/N) 

end.

Для создания массива используется встроенная функция RANDOM (MAX) , которая возвращает случайное целое число, равномерно распределенное в диапазоне от 0 до МАХ-1 (МАХ- параметр обращения).