Пераменныя тыпу «масіў» са стартавым значэннем, ці тыпізаваныя канстанты-масівы

Стартавыя значэнні складаных пераменных задаюцца па-рознаму для розных тыпаў. Масівы задаюцца пералічэннем іх элементаў у круг­лых дужках. Калі масіў мнагамерны (масіў масіваў), тады пералічваюцца эле­мен­ты масіву, якія складаюцца з элементаў-скаляраў. Гэта выглядае та­кім чынам:

TYPE

dim10 : ARRAY [1..10] OF Real;

dim3х6 : ARRAY [1..3, 1..6] OF Real;

dim4х3х2 : ARRAY [1..4, 1..3, 1..2] OF Word;

CONST

D10 : dim10=

(0, 2.1, 3, 4.5, 6, 7.70, 8, 9.0, 10, 34);

{гэта адзін набор з 10 лікаў}

D3х6 : dim3х6=

((1, 1, 1, 1, 1, 1),

(2, 2, 2, 2, 2, 2),

(3, 3, 3, 3, 3, 3));

{гэта тры наборы па 6 лікаў}

D4х3х2 : dim4х3х2=

(((1,2), (11,22), (111,222)),

((3,4), (33,44), (333,444)),

((5,6), (55,66), (555,666)),

((7,8), (77,88), (777,888)));

{гэта чатыры наборы па тры масівы з 2 лікаў}

Заўвага. Пры заданні структур тыпу ARRAY OF Char, якія ба­зі­ру­юц­ца на сімвалах, можна не пералічваць сімвалы, а злучыць іх у адзін радок пат­рэб­най даўжыні:

CONST CharArray : ARRAY [1..5] OF Char='abcde';

Канстанты з тыпам «масіў»

Каб вызначыць агульны выпадак для тыпізаваных канстант, раз­гле­дзім струк­тур­ныя дыяграмы.

Канстанта-масіў:

 
 

 

 


 

Тыпізаваная канстанта:

Задача.Вядома, што элементы цэлалікавага масіву A[1..n] не мен­ш за –2 і не больш за 12. Падлічыце, колькі разоў сус­т­ра­ка­ец­ца ў масіве A кожны з элементаў.

Рашэнне.

PROGRAM Pr;

CONST n=10;

TYPE index=-2..12;

CONST A : ARRAY [1..n] OF index=

(0, -2, 5, 1, 0, -2, 5, 8, 1, 0);

VAR B : ARRAY [index] OF Byte;

I : index;

j : 1..n;

BEGIN

FOR i:=-2 TO 12 DO B[i]:=0;

FOR j:= 1 TO n DO Inc(B[A[j]]);

{раздрукоўка}

Writeln('элемент':10,'колькасць':20);

FOR i:=-2 TO 12 DO

IF B[i]<>0 THEN Writeln(i:10, B[i]:20);

Readln;

END.

Заданне.Падлічыць у нейкім тэксце колькасць кожнага сімвала 'a'.. 'z' і 'A'.. 'Z', не адрозніваючы малыя і вялікія літары.

Камбінаваны тып «запісы»

Гэты тып даных больш падрабязна разгледзім далей. Цяпер зробім та­кое азначэнне запісу.

Запіс – гэта структура неаднародных даных, у якой ёсць найменныя па­лі розных тыпаў.

Для азначэння запісу прымяняюць службовыя словы RECORD і END.

Напрыклад, наступны запіс мае сваімі палямі рознахарактарныя даныя:

TYPE

Person=RECORD

F_I_O : STRING;

{прозвішча, імя, імя па бацьку £ 255 сімвалаў}

Ves, Rost : Real;

Telephone : Longint; {нумар тэлефона}

Ozenki : ARRAY[1..4] OF Byte;

END;

Тып Person цяпер задае даныя з радка (F_I_O), двух лікаў з дроба­вай часткай (Ves, Rost), аднаго цэлага доўгага ліку.

VAR Nehta : person;

Пад іменем Nehta разумеецца данае з канкрэтнымі значэннямі. До­ступ да палёў здзяйсняецца пры дапамозе селектара запісу:

імя_пераменнай.імя_поля

Nehta.F_I_O – гэта значэнне радка з прозвішчам.

Nehta.Telephone – тэлефон.

Палямі запісаў можа быць што заўгодна, нават іншыя запісы, а ко­ль­касць палёў – вялікай. У адрозненне ад масіваў і мностваў палі запісу мо­гуць мець розныя тыпы. Доступ да палёў адбываецца па імені.

Пры заданні першапачатковых значэнняў даным тыпу «запіс» ро­бяць так:

CONST Htosti : person=(F_I_O : 'XXX'; Ves : 50.5;

Rost : 158; Telephone : 265539;

Ozenki : (5,4,3,4));

Поле ад свайго значэння аддзяляецца знакам «:». Парадак чар­га­ван­ня палёў павінен адпавядаць парадку іх апісання ў тыпе, палі павінны раз­дзя­ляц­ца не коскай, а «;», як гэта робіцца ў апісанні тыпу «запіс».

Падрабязна гэты тып разгледзім потым.