Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ABC_Pascal.doc
Скачиваний:
2149
Добавлен:
30.03.2015
Размер:
1.12 Mб
Скачать

6. Структурированные типы данных

6.1. Массивы данных

Массивыупорядоченная структура однотипных данных, хранящихся в памяти последовательно. Массив обязательно имеет размеры. Описывается в разделе TYPE или VAR следующим образом:

Type <имя_типа> = array [диапазон_индексов] of <базовый_тип>;

или

Var <имя_переменной> : array [ диапазон_индексов] of <базовый_тип>;

Отметим, что в разделе Type разделителем служит символ “=”, а в разделе переменных var – двоеточие “ : ” .

Пpимер: TYPE

array10 = array [1..10] of integer;

array11 = array [11..22] of real;

VAR

V: array[-3..2] of char; {массив из 6 элементов}.

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

Например:

TYPE DIAP = 1..100;

VECTOR = array [DIAP] of real;

При записи сложных массивов индексы разных диапазонов могут при­надлежать разным типам. Например:

VAR V: array [0..10 , 'A'..'C' ] of real;

В качестве значений диапазона могут использоваться идентификато­ры, если их значения определены выше. Например:

CONST

K=10; L=5;

VAR

A: ARRAY [1..K] OF INTEGER;

B,С: ARRAY[1..K,1..L] OF REAL;

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

Обращение к элементу массива в программе производится указанием имени массива и индексов, заключенных в квадратные скобки:

<имя> [ <индексы> ].

Пример:

A[1] := 1; B[8,5] := В[8,1] + B[8,2]; V[1,'B'] := 3.5; .

В данном типе определена единственная операция присваивания. Мож­но присваивать целиком весь массив лишь массиву того же типа и размерности, например: B := С.

Операции сравнения в массивах производятся только поэлементно.

Обнуление одновременно всех элементов массива выполняется в цикле

FOR I :=1 TO K DO A[I] := 0.

Разрешается объявлять массивы, где базовыми элементами служат также массивы, например:

TYPE

VECTOR = array[1..5] of real;

MATRIX = array[1..10] of VECTOR;

что эквивалентно следующему способу описания:

MATRIX = array[1..10] of array[1..5] of real;

или

MATRIX=array[1..10, 1..5] of real;

Типизированные константы-массивы

В качестве типизированных констант можно использовать массивы. В константах-массивах список констант разделяется запятыми и зак­лючается в круглые скобки:

CONST vector : array[0 .. 4] of byte = ( 0, 1, 2, 3, 4 );

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

CONST vec : array[-1..2] of char = ( 'a' , 'b' , 'c' , 'd' );

При объявлении многомерных констант-массивов список констант, соответствующих каждому измерению, заключается в дополнительные круглые скобки и отделяется от соседних списков запятыми. Самый внутренний список констант связывается с изменением самого правого индекса масси­ва. Например:

CONST

matr: array[1..2, 1..4] of byte = ((0,1,2,3),(4,5,6,7));

cub: array[0..1, 1..2,1..3] of byte = (((0,1,2),(3,4,5)),

((6,7,8),(9,10,11)));

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]