Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции_TP.doc
Скачиваний:
10
Добавлен:
22.12.2018
Размер:
1.4 Mб
Скачать

Диапазон (ограниченный, интервальный).

Самый простой способ образования новых типов из существующих. Это ограничение допустимого диапазона значений некоторого стандартного типа. В общем виде диапазон выглядит: <минимальное значение>..<максимальное значение>.

Примеры: VAR INDEX : 0..5;

I1, I2 : 1..100;

Примечания:

  • два символа (две точки) рассматриваются как один символ;

  • левая граница не должна превышать правую;

  • имя должно быть правильным идентификатором (в имени не используются базовые слова!).

Перечисляемый (перечислимый) тип.

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

TYPE

COLOR=(RED, GREEN, BLUE);

DAYS=(Monday,Tuesday);

VAR A1: COLOR;

D: DAYS;

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

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

Структурированные (сложные, составные) типы данных.

Эти типы задают множества значений (или совокупности значений) другого типа. Существует 4 сложных типа.

Это:

А) массивы

Б) записи

В) файловый

Г) множества.

Есть несколько дополнительных сложных типов, таких как строковый, процедурный, объектный и ссылочный.

Регулярный тип (массив) array.

Используется при работе с такими математическими объектами, в записи которых используются индексы (элементы вектора, матрицы, последовательности n-мерного пространства).

Массив – это структура, состоящая из фиксированного числа компонентов одного типа. Число элементов определяется типом индекса. Если указан один тип индекса, массив одномерный, если – n типов, то массив n-мерный.

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

VAR A:ARRAY[1..20] OF INTEGER;

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

VAR D:ARRAY[1..5,1..7] OF BYTE;

A1:ARRAY[1..5] OF ARRAY[1..7] OF BYTE;

Размерность массива не ограничена.

Описание массива с помощью типов:

TYPE

C=ARRAY[1..3] OF BYTE;

VAR A:C;

Задача: описать матрицу с помощью TYPE:

TYPE

B=ARRAY[1..3,1..5] OF INTEGER;

VAR A:B;

Пример: сложить 2 матрицы одинаковой размерности. Результат записать в третью

новую матрицу.

PROGRAM S2;

TYPE C=ARRAY[1..3,1..3] OF BYTE;

VAR X, Y, Z:C; I, J:INTEGER;

BEGIN

FOR I:=1 TO 3 DO

FOR J:=1 TO 3 DO {цикл для ввода}

READ(X[I, J], Y[I, J]);

FOR I:=1 TO 3 DO

FOR J:=1 TO 3 DO {цикл для суммирования}

Z[I, J]:=X[I, J] + Y[I, J];

FOR I:=1 TO 3 DO

FOR J:=1 TO 3 DO {цикл для вывода}

WRITELN(Z[I, J]);

END.

Пример: умножить 2 матрицы одинаковой размерности. Результат записать в третью новую матрицу.

PROGRAM L2;

TYPE C=ARRAY[1..3,1..3] OF BYTE;

VAR X, Y, Z:C; I, J:INTEGER;

BEGIN

FOR I:=1 TO 3 DO

FOR J:=1 TO 3 DO {цикл для ввода}

READ(X[I, J], Y[I, J]);

FOR I:=1 TO 3 DO

FOR J:=1 TO 3 DO {цикл для суммирования}

Z[I, J]:=X[I, J] * Y[I, J];

FOR I:=1 TO 3 DO

FOR J:=1 TO 3 DO {цикл для вывода}

WRITELN(Z[I, J]);

END.

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

Пример: присвоить третий элемент одномерного массива в ячейку Х.

PROGRAM R3;

VAR A:ARRAY[1..10] OF BYTE;

BEGIN

FOR I:=1 TO 10 DO

READ(A[ I ] );

X:=A[ 3 ]

Пример: присвоить первый элемент второй строки в ячейку У.

У:= А[ 2 , 1 ]

Доступ к любому элементу массива прямой.

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

C: ARRAY[‘A’..’D’] OF…

Пример вставки порядкового номера столбца перед самим столбцом.

PROGRAM Y6;

VAR A:ARRAY [1..5,1..5] OF BYTE;

B:ARRAY [1..6,1..6] OF BYTE;

I,G: BYTE;

BEGIN

FOR I:=1 TO 5 DO BEGIN

FOR G := 1 TO 5 DO READ (A[I,G]);

END;

FOR I:= 1 TO 5 DO BEGIN

FOR G:=1 TO 5DO BEGIN

B[I+1,G]:= A[I,G];

B[1,G]:=G;

END;

END;

FOR I:=1 TO 6 DO

FOR G:=1 TO 5 DO

WRITE(B[I,G],’ ‘);

WRITELN:

END.

При работе с массивами в качестве индексов нельзя использовать вещественные числа, ассортимент операций определяется типом элементов. Можно выполнить оператор присваивания ( при работе с массивами) значений элементов одного массива другому в случае идентичности типов. Умножение, сложение можно производить в случае совпадения размерности. В большинстве случаев :

а) при изменении некоторых элементов массива,

б) при вводе / выводе,

в) сложении и т. д. оперируем отдельными элементами массива, то есть можно производить операции базового типа.

Пример:

PROGRAM U6;

TYPE NAPRAV=(X,Y,Z );

V: U,R:V;I:NAPRAV;

BEGIN

FOR I:=X TO Z DO

READ(R[ I]);

U:=R; . . . . .

END.

Пример: в квадратной матрице обнулить элементы главной диагонали.

FOR I:=1 TO 3 DO

FOR J:=1 TO 3 DO

READ( A[ I,J] );

FOR I:=1 TO 3 DO

A[ I,I]:=0;

Пример: найти минимум в каждой строке.

FOR I:=1 TO 3 DO

BEGIN MIN:=A[I,J];

FOR J:=1 TO 5 DO

IF A[I,J]< MIN THEN

BEGIN MIN:=A[I,J];

REZ[I]:=MIN;

END; END;

FOR I:=1 TO 3 DO

WRITELN( REZ[I]);

Пример : описать квадратную матрицу 5х5 и вывести на печать

А[1,1] = 101 А[1,2] = 102 А[1,3] =103

А[2,1] = 201 A[2,1] = 202 А[2,3] = 203

. . . . . . . . . .. .. .. . .. … …..

Задать соответствующим образом значение матрицы А и вывести на печать.

FOR I:=1 TO …. DO BEGIN

FOR J:=1 TO …. DO BEGIN

A[ I,J]:= 100* I+J;

WRITE (‘A[‘, I ,’,’,J,’] =', A[I,J] );

END;

WRITELN;

END.