Одномерные массивы

Ранее обсуждались переменные простых типов данных. По-другому они называются скалярными типами данных. Каждый из этих типов данных характеризуется дискретным набором множества своих значений (напомним, что это относится в том числе и к вещественным типам, однако перечислить конкретные значения элементов соответствующего множества для того или иного вещественного типа достаточно сложно, для этого необходимо абсолютно точно знать, как именно он реализован в компьютере). Заметим, что все скалярные типы, кроме вещественных, называются также порядковыми типами: значения любого из таких типов могут быть упорядочены так, что компьютерное представление каждого следующего значения есть двоичное число, на единицу больше предыдущего (это справедливо и для нечисловых типов данных). С общими свойствами порядковых типов мы подробно познакомимся в дальнейшем.

Из элементов простых типов в языке Паскаль можно образовывать составные (структурированные) типы данных, так называемые структуры данных. Примером такой структуры является векторный тип данных – массив.

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

Запись на Паскале выглядит следующим образом:

a [1], a [2],…, a [n]

Тип индекса может быть ограниченным, литерным, перечислимым, логическим, это объясняется тем фактом, что указанные типы строго упорядочены и пронумерованы.

Например:

1. Если индексы – это упорядоченные символы a…z или A…Z, то возможна такая запись

c [‘ a ’]:= false; c [‘8’]:= true; c [‘ x ’]:= false;

2. Для ограниченного типа 0..10

d5 [1].. d 5[10] ‘a’..’d’

Заметьте, что допускается последовательность от false..true, но никак не true..false. Так же не допускается последовательность ‘ y’..’f’.

Для описания подобных объектов в программировании следует предварительно ввести соответствующий тип в разделе описания типов. Описание типа данных массив производится 2 способами.

1 способ:

type < имя типа >=array[ тип индекса ] of < тип компонент >; var a: < имя типа >;

2 способ:

var a: array[ тип индекса ] of < тип компонент >;

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

Минимальное значение индекса
 
Максимальное значение индекса
..

Тип же самих элементов может быть любым, в том числе и составным. Количество элементов массива называется его размерностью.

В Паскале упомянутую выше последовательность можно описать, например, следующим образом:

const n =10; type aa =array[1..n] of real; var a: aa;

То есть мы задали массив вещественных чисел, состоящий из 10 элементов. Меняя значение константы n, мы можем изменять количество элементов в массиве.

Примеры:

type lit =array[char] of real; ogr =array[10,18] of char; perech =(z1, z2, z2, z4, z5); bol =array[boolean] of integer; var l:lit; а:ogr; b: bol; p: array[perech] of Boolean; c, d: boolean;

Проверим правильность записи переменных:

l [5]:=7.5; - не правильная запись, так как индекс относится к типу char.

l [‘5’]:=‘ b ’; - ошибка записи, так как переменная l – это действительное число (тип real).

Правильным было бы следующее выражение:

l ['5']:= 7.5;

Проверьте правильность следующих записей:

a [5]:= ' a '; p [ z ]:= true;

a [11]:= ' a '; b [ c and d ]:=5;

Проверьте себя. Как опишутся в программе переменные массива var x: array[1.. n ] of real?

Ответ: x [1]:=2.5; x [ n ]:=0.1; x [2]:=0.5.

Над переменными типа массив возможна только операция присваивания. То есть содержимое одного массива может быть присвоено содержимому другого массива того же самого типа. Например, если мы добавим в описание переменных переменную b того же типа aa, то в программе будет возможно использовать, например, следующий оператор присваивания: b:= a.

Очевидно, что для того, чтобы этот оператор имел смысл, значения элементов массива a уже должны быть заданы, например, введены с клавиатуры.

С элементами массива можно осуществлять все те же действия, которые допустимы с обыкновенными переменными соответствующего типа. Чтобы обратиться в программе к конкретному элементу массива, после имени переменной типа массив в квадратных скобках должно стоять выражение для соответствующего индекса элемента. Это может быть константа, входящая в диапазон констант, указанный при описании, это может быть переменная того же самого порядкового типа (если в качестве индексов используется конкретный диапазон целых значений, то переменная может принадлежать любому целому типу), наконец это может быть произвольное выражение, значение которого также принадлежит указанному типу. Например, a [5], a [ i ], a [ i +1], a [2* k -1]. При использовании переменных для обозначения индекса их значения к моменту использования должны быть определены, а в случае арифметических выражений их результат не должен выходить за границы массива (минимальное и максимальное значения индекса).

Индексы элементов массива могут начинаться с любого целого числа, в том числе и отрицательного, например:

type a =array[-5..3] of boolean;

Массивы данного типа будут содержать 9 логических переменных, пронумерованных от -5 до 3.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: