Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Раздел 3 Pascal, лр1-9.doc
Скачиваний:
56
Добавлен:
22.05.2015
Размер:
654.85 Кб
Скачать

6 Содержание отчета

1 Название, цель, содержание работы

2 Задание для своего варианта.

3 Схема алгоритма.

4 Программы.

5 Результаты расчётов в среде pascal.

6 Письменные ответы на контрольные вопросы.

7 Выводы по работе

154

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

Обработка массивов

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

процессы .с индексированными переменными

Содержание работы:

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

2 Многомерные массивы

3 Обработка массивов

1 Одномерные и многомерные массивы

Все переменные делятся на простые и индексированные. Простые записываются своими идентификаторами (именами) и могут быть различных типов (integer, real,…), напр, PI, Xmin, DELTA, omega и др. Индексированные переменные являются элементами массива, который состоит из набора данных одного типа Массив элементов имеет общий идентификатор-имя, а каждый его элемент определяется по индексу имени, например, V[i] – i-тый элемент массива с именем V. Массив объединяет фиксированное количество элементов одного типа данных. Более формально массив можно определить как последовательную упорядоченную совокупность элементов некоторого типа, которые адресуются с помощью некоторого индекса (номера элемента в массиве).

Наряду с термином «массив» часто используются термины «матрица», «таблица», «вектор».

Поскольку все элементы массива должны быть одного типа, определение типа массива имеет следующий вид:

type Tarr = array [T1] of T2,

где Tarr – имя массива., array,of – служебные слова, Т1 – означает тип индекса массива, Т2 – тип элементов массива.

В качестве типа индекса может быть использованы все порядковые типы, за исключением длинного целого (longint) и поддиапазонов длинного целого.

Массивы могут быть одномерными и многомерными, например, X[I], A[I,J], D[I,J,K] и др. Число индексов в определении (то есть размерность массива) не ограничивается.

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

155

Например, array[1..5] of array[1..10] of Real интерпретируется компилятором точно так же, как массив: array[1..5,1..10] of Real. Таким образом, допускается запись типов индексов, разделенных запятыми, в одних скобках..

Примеры описания массивов:

Тип массива (его элементов) должен быть описан до объявления самого массива (его имени):

type

V1 = array[1..100] of real;

V2 = array[char] of boolean;

M1 = array[1..10] of array [1..15] of integer;

Var

Vector: V1;

Symb_Table: V2;

Matrix1, Matrix2: M1;

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

var

B: array[1..5] of byte;

S: array[(Red, Yellow, Green)] of Boolean;

M: array[1..5,1..7] of integer;

Иногда требуется задать массив с помощью типизированной константы. Пример:

const

Marks: array[1..4] of integer = (2,3,4,5);

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

Pascal допускает единственное возможное действие над массивом в целом: использование его в операторе присваивания, например

Vect1:=Vect2

причем типы обоих массивов в данном случае должны быть эквивалентны.

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

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

156

Примеры:

Vector[1]

Vector[(i+1)*2]

M[i,j]

M[3][1]

M[3,1]

Элемент массива считается переменной; он может получать значения (например, в операторе присваивания), а также участвовать в выражениях.

Примеры:

M[i,j]:=M[i,j-1]*2

Symb_Table[‘a’]:=true;

Vector[i]:=M[i,1] mod 2;