Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебник Емельянов.doc
Скачиваний:
12
Добавлен:
03.11.2018
Размер:
3.25 Mб
Скачать

Статические массивы

Тип статического массива объявляют следующим образом:

Туре

<Имя> = Array[<тип индекса>] of <тип элеметов>; (например, Туре Vekt = Array [1..10] of byte;).

В данном случае задан одномерный массив (вектор) состоящий из 10 элементов целого типа byte. Отдельные элементы этого массива в програм­ме определяются с помощью индексов, например, если объявлено var X: vekt;,TOB выражениях можно использовать х[1],х[2],... ,х[Ю].В квад­ратных скобках указывается значение индекса, т.е. номер компонента в мас­сиве. Отсчет номеров ведется так, как указано в индексе при объявлении. Пусть объявлено: Var Z: array [-2. .2] of integer,-. Это значит зада­ны элементы z [ -2], Z[-l], z[0], z[l], z [2] целого типа integer.

В общем случае тип индекса может быть любым порядковым типом. Так, в примере Var У: array [ А' . .' Z' ] of integer; объявлено 26 элементов (по количеству букв в английском алфавите): Y[ ‘а' ], Y[ ‘В' ], .., Y[ 'z' ], выделено 26 ячеек памяти, в которые можно записывать данные типа integer, например У [ X 3 : =5;. Информацию можно также считывать из этих ячеек памяти: A:=cos(Pl + YpC']);.

Индекс можно определять и таким способом: Var Y:array[Char] of single;, т.е. определено 256 ячеек памяти, в которые можно записывать вещественные числа. Однако имеется ограничение при объявлении масси­вов: размер памяти, занимаемый одним массивом не должен превышать 2 оайта. Так, объявление var X:array[Longlnt] of integer; синтакси­чески верно, но превышен размер памяти, который должен быть выделен для этого массива (более 2 Гбайт).

Аналогичные правила действуют и для двумерных массивов, например ьявление var a: array[1..2, 1..3] of double; определяет двумер-

67

ный массив (матрицу), который содержит 2 строки и 3 столбца (всего 6 эле­ментов). Эти элементы записываются в памяти следующим образом-А[1,1], А[1,2], А[1,3], А[2,1], А[2,2], А[2,3], т.е. сначала пер. вая строка матрицы, а затем вторая. Этот массив можно определить и так: д. array[1..2] of array[1..3] of real; или Type Vekt = аг-ray[1..3] of real; Var A: array[1..2] of vekt;.

Разрешается объявлять и использовать многомерные массивы (до семи­мерных включительно).

Для массивов можно задавать типизированные константы, т.е. задавать начальные значения элементам массива. Например, требуется задать в памя­ти значения элементов вектора q = (5.2, 6.0, -3.1, 0.8). Это можно осущест­вить следующим образом: Const q:array[l..4] of real=(5.2,6.0,-3.1,0.8);.

Начальные значения для двумерного массива, например матрицы

можно задать следующим способом:

Type Matr= array[1..2, 1..3] of byte; Var R:Matr=<(3, 7, 5), (8, 11, 6));.

При задании значения индекса для элемента какого-либо массива можно использовать выражение соответствующего типа, указанного при объявле­нии. При этом необходимо следить, чтобы значение этого выражения не вы­ходило за объявленные границы. Например, для элемента объявленной выше матрицы R можно записать R[Succ(i) ,Pred(j) ] (см. табл. 2), необходимо лишь, чтобы выполнялись для заданной матрицы R условия: 1 < Succ(i) > 2и1 < Pred(j) > 3.

Если задан массив символов, то типизированную константу можно оп­ределять следующим образом: const С:array[1..5] of Char='abcde';.

Если два или более массивов имеют один тип, т.е. объявлены с помощью одного описания, то эти массивы можно присваивать друг другу. Например, если объявлено Type V= array [1.. 5] of real; Var А, В :V;, то МОЖНО записывать А: =в;. Однако при следующем описании тех же переменных А и ВVar A:= array[1..5] of real; B:= array[1..5] of real; запи­сывать А: = В; нельзя.