Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекция Массивы 1.doc
Скачиваний:
5
Добавлен:
15.07.2019
Размер:
77.31 Кб
Скачать

Структурированный тип данных – массивы.

( слайд 1) Структурированные типы данных определяют наборы однотипных или разнотипных компонентов; при этом каждый из них образуется из других типов данных – простых или структурированных. То есть переменная или константа структурированного типа всегда имеет несколько компонентов. Каждый компонент, в свою очередь, может принадлежать структурированному типу, т.е. получается как бы вложенность типов. В Турбо-Паскале допускается произвольная глубина вложенности типов, однако суммарная длина любого из них во внутреннем представлении не должна превышать 65520 байт.

В TP 4 типа структурированных данных:

        • массивы (тип-массив);

        • файлы (тип-файл);

        • записи; (тип-запись);

        • множества (тип-множество);

1. Основные определения. ( слайд 2)

Массивом называется упорядоченная последовательность однотипных переменных, обозначенных одним именем.

Элементы массива являются его компонентами. Все компоненты относятся к одному типу, его называют типом компонент; количество их фиксировано.

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

Индекс – это величина, характеризующая положение элемента относительно начала массива; индексом может быть произвольное выражение порядкового типа, заключенное в квадратные скобки.

b[1], b[2], b[10] - элементы массива B;

c[i+1], c[i*5-2] - элементы массива C;

d[2,5], d[1,3] - - элементы массива D;

Массивы бывают одномерными и многомерными. Количество индексов в квадратных скобках определяется размерностью массива ( a[1], b[2,5] );

Размерность массива практически может быть любой.

Каждому массиву, используемому в программе, отводится место в памяти. Но в отличие от простых переменных массиву отводится не одна ячейка, а последовательность расположенных друг за другом ячеек, в каждую из которых записывается значение соответствующего элемента.

Время доступа к любому элементу массива не зависит от значения индекса – это прямой доступ.

2. Описание массивов. ( слайд 3)

Описать массив – это значит задать:

  • имя массива

  • число элементов

  • тип элементов

  • тип индексов

Описать массив можно двумя способами: (слайд 4)

1). Тип – массив является типом, определяемым пользователем, его можно определить в разделе описания типов.

Формат записи:

TYPE

<имя типа> = ARRAY [< тип индексов >] OF <тип элементов >;

где:

ARRAY, OF - кодовые слова (массив …из);

<имя типа> : правильный идентификатор;

<тип индексов> : список из одного или нескольких индексных типов, разделенный запятыми;

<тип элементов>: любой тип ТР;

[ ] – квадратные скобки, обрамляющие список индексов, определяют требования синтаксиса языка.

Вместо квадратных скобок [ ] можно использовать круглые скобки с точками (. .);

Индекс может быть любого порядкового типа, кроме Longint. Обычно в качестве индексного типа используют тип-диапазон, в котором задаются границы изменения индексов. Очевидно, что нижняя граница не может превосходить верхнюю. Введя тип-массив, можно затем задать переменные или типизированные константы этого типа. ПРИМЕРЫ

  1. Тип-массив определяется в разделе описания типов.

    1. Описание одномерных массивов .

TYPE

mass = Array[1..5] of integer;

M1= array[1..10] of real;

M2 = array[1..3] of char;

M3 = array[1..5] of byte;

Var

a1, b1,c1 : mass;

a2 : M1;

b2 : M2; c2 : M3;

Размерность реальных массивов не должна превышать верхней границы, указанной в описании типа.

    1. Описание двумерных массивов.

TYPE

Atype = Array[1..5,1..3] of integer;

Btype = array[1..4,1..4] of real;

Var

a3 : Atype; b3 : Btype;

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

Пример. Типизированная константа использует тип-массив, объявленный ранее.

TYPE

mass = array[1..5] of integer;

matr = array[1..3,1..4] of real;

CONST

M1 : mass = (2, 4, 6, 8,0);

M2 : mass = (1, 5, 7, 0,0);

X : matr = ((2., 3.5, 4.6, -5.2),

(.5, 1.3, 7.1, 12.),

(6.8, 0.1, -5.4, 2.1));

Y : matr = ((3., 6., 4., 0),

(5., 1., 7., 0),

(0, 0, 0. 0));

{ X(3x4), Y(2x3), M1(4), M2(3) }

2). Тип-массив можно вводить непосредственно при определении переменных или типизированных констант.

ПРИМЕРЫ:

Тип-массив задается непосредственно в разделе описания переменных VAR.

( слайд 8)

TYPE

mass = array[1..5] of integer;

CONST n=4; m=10;

Var

a1, b1, c1 : array[1..5] of integer;

a5 : mass;

a2 : array[1..m] of real;

a3 : array[1..5,1..3] of integer;

b3 : array[1..n,1..n] of real;

Для массивов идентичного типа, т.е. описанных одним TYPE, передать все элементы из одного массива в другой можно единственным оператором.

Допустим оператор b1 := a1;

{после этого присваивания все 5 элементов массива b1 получат те же значения, что и в массиве a1}

При таком объявлении массивов a1, a5 следует помнить, что их типы не будут идентичными, даже если они имеют одинаковую структуру. Поэтому передавать их как параметры в подпрограмму нельзя, нельзя также присвоить одному массиву значения другого массива – в таком случае допустимо лишь покомпонентное присваивание.

Недопустим оператор a5 :=a1;

4. Тип-массив задается непосредственно в разделе описания констант. ( слайд 9)

CONST

a1 : array[1..4] of integer = (1, 4, 3, 7);

a2 : array[1..2,1..2] of real = ((1., 4.),

(5., 7.));

a3 : array[1..3] of char = (‘n’, ‘o’, ‘t’);

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

5.Встроенный тип элементов. ( слайд 10)

Так как < тип элементов >, идущий за кодовым словом OF, - любой тип Турбо-Паскаля, то он может быть и другим массивом, например:

a).Type

matr = array[1..4] of array[1..3] of real;

b). Type

mass = array[1..3] of real;

matr = array[1..4] of mass;

Var

x, y : matr;

sr : mass;

X, Y - матрицы размерностью не

более (4x3) .

SR – одномерный массив размерностью

не выше 3.

c). Более компактная запись для a) и b):

TYPE

matr = array[1..4,1..3] of real;