Пераменныя тыпу «масіў» са стартавым значэннем, ці тыпізаваныя канстанты-масівы
Стартавыя значэнні складаных пераменных задаюцца па-рознаму для розных тыпаў. Масівы задаюцца пералічэннем іх элементаў у круглых дужках. Калі масіў мнагамерны (масіў масіваў), тады пералічваюцца элементы масіву, якія складаюцца з элементаў-скаляраў. Гэта выглядае такім чынам:
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));
Поле ад свайго значэння аддзяляецца знакам «:». Парадак чаргавання палёў павінен адпавядаць парадку іх апісання ў тыпе, палі павінны раздзяляцца не коскай, а «;», як гэта робіцца ў апісанні тыпу «запіс».
Падрабязна гэты тып разгледзім потым.