Тема 6
Структурированный тип данных –
МАССИВЫ .
Структурированные типы данных определяют наборы однотипных или разнотипных компонентов; при этом каждый из них образуется из других типов данных – простых или структурированных.
В Турбо-Паскале допускается произвольная глубина вложенности типов, однако суммарная длина любого из них во внутреннем представлении не должна превышать 65520 байт.
В TP 4 типа структурированных данных:
массивы (тип-массив);
файлы (тип-файл);
записи; (тип-запись);
множества (тип-множество);
Основные определения.
Массивом называется упорядоченная последовательность однотипных переменных, обозначенных одним именем.
Элементы массива относятся к одному типу, количество их фиксировано.
Каждый элемент может быть явно обозначен с помощью имени переменной массива, за которым в квадратных скобках следует индекс.
Индекс – это величина, характеризующая положение элемента относительно начала массива; индексом может быть произвольное выражение порядкового типа, заключенное в квадратные скобки.
b[1], b[2], b[b[10]+1] - элементы массива B;
c[i+1], c[i*5-2] - элементы массива C;
Массивы бывают одномерными и многомерными. Количество индексов в квадратных скобках определяется размерностью массива
a[1], b[2,5], c[1,3,2];
Размерность массива практически может быть любой.
Каждому массиву, используемому в программе, отводится место в памяти. Но в отличие от простых переменных массиву отводится не одна ячейка, а последовательность расположенных друг за другом ячеек, в каждую из которых записывается значение соответствующего элемента.
Время доступа к любому элементу массива не зависит от значения индекса – это прямой доступ.
2. Описание массивов.
Описать массив – это значит задать:
имя массива
число элементов
тип элементов
тип индексов
Описать массив можно двумя способами :
1). Тип – массив
является типом, определяемым пользователем, его можно определить в разделе описания типов.
Формат записи:
TYPE <имя типа> = ARRAY [< тип >] OF <тип элементов > ;
индексов
где:
ARRAY , OF - кодовые слова
<имя типа> : правильный идентификатор;
<тип индексов> : список из одного или нескольких индексных типов, разделенный запятыми;
<тип элементов> : любой тип ТР;
[ ] – квадратные скобки, обрамляющие список индексов, определяют требования синтаксиса языка.
Вместо квадратных скобок [ ] можно использовать круглые скобки с точками (. .);
Индекс может быть любого порядкового типа, кроме Longint.
Обычно в качестве индексного типа используют тип-диапазон, в котором задаются границы изменения индексов.
Введя тип-массив, можно затем задать переменные или типизированные константы этого типа.
ПРИМЕРЫ:
Тип-массив определяется в разделе описания типов.
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;
Размерность реальных массивов не должна превышать верхней границы, указанной в описании типа.
Типизированная константа использует тип-массив, объявленный ранее.
Type
mass = array[1..5] of integer;
Const
Y : mass = (2, 4, 6, 8,0); {Y(4)}
X : mass = (1, 5, 7, 0,0); {X(3)}
Если размерность массива меньше указанной в Type, свободные позиции заполняются нулями.
2). Тип-массив можно вводить непосредственно
при определении переменных или типизированных констант.
Тип-массив задается непосредственно в разделе описания констант и переменных.
Const n=4; m: integer=10;
a1 : array[1..4] of integer = (1, 4, 3, 7);
a2 : array[1..3] of real = (1., 4., -5);
a3 : array[1..3] of char = (‘n’, ‘o’, ‘t’);
Var
a6, b6 : array[1..5] of integer;
a5, c1: array[1..5] of integer;
a4 : array[1..m] of real;
3. Ввод – вывод одномерных массивов.
Значения элементов одномерного массива
( вектора ) можно ввести в программу следующими способами:
1). типизированной константой;
2). ввод с клавиатуры;
3). ввод из файла;
значения отдельных элементов массива можно задать оператором присваивания.
Вывод элементов массива и результатов вычислений :
1). вывод на экран;
2). вывод в файл.
Program Vvod;
Type mass = array[1..5] of integer;
Const A: mass = ( 2, -4, 3, -6, 8 );
Var B: mass; {или B,C: mass;}
C: array[1..4] of integer;
i: byte;
BEGIN
{ ввод массива B с клавиатуры }
writeln(‘ введите массив B‘);
For i := 1 to 5 do read(b[i]);
{ ввод массива C с клавиатуры }
writeln(‘ введите массив С‘);
For i := 1 to 4 do read(c[i]);
{ вывод массива A на экран }
writeln(‘ массив A:’);
For i := 1 to 5 do write(A[i]:5,’ ‘);
writeln; {выводится вектор-строка}
{ вывод массива B на экран }
writeln(‘ массив B:’);
For i := 1 to 5 do
writeln(B[i]); {выводится вектор-столбец}
СОРТИРОВКА МАССИВОВ