Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛабРаб__6_Массивы.doc
Скачиваний:
0
Добавлен:
06.09.2019
Размер:
584.7 Кб
Скачать

Лабораторная работа

Тема - операции с массивами.

Цель работы - изучение операций с одномерными и многомерными массивами.

Общие сведения

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

Рис. 4. Синтаксическая диаграмма <Объявление массива>

Например:

Var

a, b : array [1..5] of real ;

c, d : array [-7..3] of integer ;

Тип индекса определяет его допустимые значения. В качестве типа индекса может быть указан любой порядковый тип (boolean, char, integer, перечисляемый тип, а также диапазоны этих типов), кроме типа longint и его производных.

В зависимости от количества типов индексов различают: одномерные, двумерные, трехмерные и n-мерные массивы. Одномерные массивы обычно называют векторами, а двумерные – матрицами, считая первый индекс – номером строки, а второй – номером столбца.

Тип элементов массива – любой допустимый в Турбо Паскале тип (в том числе и массив), кроме файла.

Использование массивов существенно упрощает работу с однотипными данными, ускоряет обращение к ним и сокращает размер используемой памяти, так как все данные получают общий начальный адрес. Максимальный объём памяти, который может занимать массив, в Турбо Паскале составляет 65520 байт.

Многомерные массивы в Турбо Паскале могут быть описаны двумя способами. Первый способ описания массива заключается в объявлении его в операторе объявления переменных, например:

Var

a : array [0..3] of array [5..7] of real;

или

Var

a: array [0..3,5..7] of real ;

Обратите внимание на следующие правила:

1. Нижняя граница диапазона должна быть не меньше верхней.

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

3. У многомерных массивов диапазоны разделяются запятыми, количество измерений не ограничено (за исключением, конечно, правила о 65520 байтах).

4. Границы диапазонов находятся в пределах либо -32768..32767, либо 0..65535.

5. В качестве границ диапазонов могут использоваться не только числа, но и определённые к этому моменту константы.

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

Например, описания массивов

Var

a, c : array [1..3] of real ;

b, d : array [5..7,1..3] of real

и

Const

k1 = 1 ; k2 = 3 ; l1 = 5, l2 = 7;

type

vector = array [k1..k2] of real ;

matrix = array [l1..l2] of vector;

Var

a, c : vector;

b, d : matrix

эквивалентны между собой.

Элемент одномерного массива обозначается с помощью названия массива и индекса, заключённого в квадратные скобки, например a[k]; индексы элемента многомерного массива могут быть перечислены в квадратных скобках через запятые или быть заключены в отдельные квадратные скобки, например b[2,10] или b[2][10]. При этом b[2] представляет собой одномерный массив.

Почти все действия с массивами осуществляются поэлементно, например:

a[2] :=3;

read(b[5,6]) ;

a[2] := c[3] + d[7] ;

WriteLn(c[3] : 5 :2, c[3] - d[5] : 5 : 1);

Исключения составляют лишь присваивание всем элементам одного массива таких же значений, как у элементов другого массива и сравнение идентичности всех элементов двух массивов. Чтобы эти операции были возможны, необходимо оба массива описать совместно (в одном списке), либо предварительно ввести тип и использовать при описании массивов идентификатор типа. Например:

Type vector_1 = array[0..10] of real;