- •Структуры даных і праца з імі сродкамі мовы Pascal Парадкавыя тыпы
- •Мноствы
- •Тыпізаваныя канстанты тыпу «мноства»
- •Дзеянні над масівамі
- •Дзеянні над элементамі масіву
- •Пераменныя тыпу «масіў» са стартавым значэннем, ці тыпізаваныя канстанты-масівы
- •Канстанты з тыпам «масіў»
- •Камбінаваны тып «запісы»
- •Змяненне (прывядзенне) тыпаў і значэнняў
- •Радкі сімвалаў
- •Наданне значэння радкам
- •Радковыя выразы
- •Рэдагаванне радкоў
- •Пераўтварэнне радкоў
Дзеянні над масівамі
Пераменная тыпу «масіў» можа ўдзельнічаць толькі ў аператары «надаць значэнне» :=. Масівы, якія ўдзельнічаюць у гэтай аперацыі, павінны быць ідэнтычнымі па структуры (для масіваў ідэнтычнасць па структуры – гэта фактычна аб’яўленне ў адным спісе):
VAR
A, B : ARRAY [1..20] OF Real;
C, D : ARRAY [1..5, 1..5] OF Word;
Аператар A := B азначае, што адпаведным элементам масіву A надаюцца значэнні элементаў масіву B. Аператар C := D азначае, што адпаведным элементам масіву C надаюцца значэнні элементаў масіву D. Аператар A := D прывядзе да памылкі.
Дзеянні над элементамі масіву
Разгледзім тыповыя сітуацыі, што ўзнікаюць пры рабоце з данымі тыпу «масіў» у наступнай праграме:
CONST n=10; m=5; L=4;
VAR A, O : ARRAY [1..L] OF Real;
B : ARRAY [1..n,1..m] OF Integer;
k, i, j : Integer;
S : Real;
. . .
FOR i:=1 TO L DO Read(A[i]);
{ініцыялізацыя аднамернага масіву}
FOR i:=1 TO n DO
FOR j:=1 TO m DO Read(B[і,j]);
{ініцыялізацыя двухмернага масіву}
FOR i:=1 TO n DO
BEGIN
FOR j:=1 TO m DO Write(B[і,j]);
Writeln;
END; {вывад матрыцы ў выглядзе матрыцы}
Пераменныя тыпу «масіў» са стартавым значэннем, ці тыпізаваныя канстанты-масівы
Стартавыя значэнні складаных пераменных задаюцца па-рознаму для розных тыпаў. Масівы задаюцца пералічэннем іх элементаў у круглых дужках. Калі масіў мнагамерны (масіў масіваў), тады пералічваюцца элементы масіву, якія складаюцца з элементаў-скаляраў. Гэта выглядае такім чынам:
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', не адрозніваючы малыя і вялікія літары.