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

Опис об'єктів індексованого типу. 2

C:

float fMatr [ 10 ][ 20 ] ;

паспорт

10, 20 – межеві пари;

(0…9) (0…19) – дискретні діапазони;

float – індикатор типу компонентів.

Оскільки для опису індексів у мові С використовується вираз, то нижнім значенням межевої пари вважається нуль, а значення межевої пари не може бути від’ємним.

Бачимо, що в мові С визначуваний індексований тип використовується анонімно, без позначення, тому лише в описі програмного об'єкта.

Ініціалізація об'єктів індексованого типу

У мовах програмування ініціалізувати об'єкти можна трьома способами:

  • за умовчанням (у контексті механізму розподілу пам'яті);

  • при створенні об'єкту;

  • за допомогою оператора присвоювання.

Ініціалізація за умовчанням здійснюється відповідно до вивчених стратегій розподілу пам’яті. Тому далі розглятимуться останні два способи.

Ініціалізація при створенні об'єкту

Об'єкти ініціалізуються значеннями типів, еквівалентним типу значень компонентів мультизначень.

Значення ініціалізації виробляють R-вирази. Список R-виразів беруть з обох боків у символи "(", ")" (мова Pascal) або у символи “{”, “}” (мова С).

Якщо мультизначення багатовимірне, то список, який відповідає кожному виміру також береться в відповідні дужки.

Pascal:

Приклад 1:

const

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

DigitChar : array [0..5] of char = ('0', '1', '3', '4', '5')

Приклад 2:

type

A = 1..3;

B = 1..5;

const

matr : array [A, B] of real = ((0.0, 1.1, 1.2, 2.1, 3.2),

(1.1, 2.1, 3.0, 2.1, 3.3),

(3.1, 0.0, 5.1, 6.3, 7.0));

С:

int nP [4][3] ={{11, 12, 13} , { 21, 22, 23},

{31, 32, 33}, { 41, 42, 43}};

int nP [][3] ={{11, 12, 13} , { 21, 22, 23},

{31, 32, 33}, { 41, 42, 43}};

int nP [][3] ={{11, 11, 11} ,

{12, 12}, { 13}};

// ={{11, 11, 11} , {12, 12, 0}, { 13, 0, 0}}

Ініціалізуючи при описі, можна не вказувати значення граничної пари першого індексу в паспорті, а наявність значень наступних індексів обов'язкова. Ініціалізація значення за невказаним значенням індексу відбуватиметься за замовчуванням. Якщо кількість ініціалізованих значень у мультизначеннях менша від значення відповідного індексу, то частина мультизначення ініціалізується нулями, а якщо більше - помилка.

Ініціалізація об'єкту оператором привласнення

type

t = array ['a'..'d'] of integer;

var

a : t;

const

b: t = (65, 66, 67, 68);

begin

a := b;

end.

var

a : array [1.. 4, 1..5] of char;

nI : 1..4; nJ : 1..5; cT : char;

begin

cT := ' A';

nI := 1;

while nI < 4 do

begin

nJ := 1;

while nJ > 5 do

begin

a[nI, nJ] := cT;

cT := char(integer(cT) + 1);

nJ := nJ + 1;

end;

nI := nI + 1;

end;

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