жолдың ұзындығы бойынша. Сондықтан жолдың логикалық құрылымы
қарапайым жағдайда – бұл айнымалы ұзындықты вектор. Жолға қатынау тек
қана жалғыз элементке емес, символдар тізбегіне де, сонымен қатар барлық
жолға қатынауға болады. Турбо Паскальда жолдардың көрсетілімі келесідей.
Жолдық типтің ұзындығы байтпен алғанда оның максималды ұзындығы
кезінде +1-ге тең. Бірінші байт ағымдағы жолдың ұзындығын құрайды,
келесілер – жолдың символдарын. Ұзындықтың байты және символдар
белгісі жоқ мәндермен көрсетіледі.жолдың максималды ұзындығы 255
символ + ұзындық байты (string[255]).
2.5 Жазбалар
Мәліметтерді өңдеу кезінде көбінесе бір жинаққа әртүрлі типті
мәліметтерді жинау керек болады. Ол үшін мәліметтердің құрылымдалған
типтері қолданылады: жазбалар – Паскальда, құрылымдар – Сида. Мысалы,
студенттер туралы ақпарат (сурет 2).
Сур. 2 Студент туралы ақпарат
Құрылым – мәліметтердің иерархиялық реттелген жинағы. Мәліметтер
әртүрлі типті ғана емес, сонымен қатар олардың белглі бір деңгейде
орналасуы да маңызды. Жазба элементтері мыналар болуы мүмкін:
• скалярлық берілгендер;
• массивтер;
• жазбалар.
Әртүрлі құрамдас типтер әртүрлі жақшалармен комбинация құра
алады.
Жазбаларды хабарлау
Паскальда құрамдас құрылымдық тип – жазба – типті бейнелеумен
анықталады.
TYPE Т = RECORD
S
1
: T
1
;
S
2
: T
2
;
. . . . .
S
N
:T
N
END;
Мысалы, туған күн.
TYPE DAT = RECORD
DEN: 1..31;
MES: 1..12;
GOD : 1950..2050
END;
TYPE CODS = RECORD
GR:RECORD
FAC, SP, GOD : CHAR;
NOMG: 1..2
END;
NOM : INTEGER
END;
Жазба типін хабарлауға болады
TYPE STUDENT = RECORD
COD:CODS;
FIO: RECORD
FA,IM,OT:STRING[1..15];
END;
DR:DAT;
STIP : ARRAY[1..10] OF BOOLEAN;
EXAM : ARRAY[1..5] OF (0, 2, 3,4, 5)
{ НЕ АТТ, НЕУД, УД., ХОР, ОТЛ. }
END;
Енді айнымалыларды хабарлаймыз
VAR DECANAT : ARRAY[1..1000] OF STUDENT;
STUD: STUDENT;
FSTUD : FILE OF STUDENT;
Жазбада өрістер типіне шектеулер жоқ. Жазба элементтеріне қатынасу
жазбаның селекторлары болатын құрамдас немес квалификацияланған
есімдермен жүзеге асады. Ондай селектор жазбаның элементарлы
компонентін анықтайтын жазбаның атынан және өрістердң атынан (ішкі
жазба) тұрады. Есімдер нүктемен бөлінеді.
Мысалы,
STUD.FIO.IM := 'БОРИС';
немесе
IF DEKANAT[I].STIP[4]
THEN {алады }
ELSE { жоқ }
немесе
STUD := DEKANAT[274]; - барлық жазба DEKANAT массивінің 274-
ші элементінен STUD айнымалысына көшіріледі.
Ескерейік, өрістің аты әрқашанда нақты көрсетіледі, және индекстен
айырмашылығы үнемі қолданылатын типте есептелмеуі мүмкін.
WITH –
қосылу операторы
Жазбалармен жұмыс істеген кезде жазбаның элементтеріне
қатынасқанда бірдей құрамдастар
қайталанатын ұзын аттар жазуға мәжбүр
болғандықтан, бағдарламалардың мәтіндері тым үлкен болуы мүмкін.
Бейнелеуді қысқартуға қосу операторы мүмкіндік береді, ол мынадай
түрге ие:
WITH R DO S,
мұндағы WITH, DO – қызметтегі сөздер;
R – жазба аттарының тізімі (үтір арқылы);
S – Паскальдің кез келген операторы.
Мәні: S операторының ішінде жазба өрісінің аттарын префикссіз
қолдануға болады (жазбалардың аты, және жоғарғы ішкі жазбалардың
аттары да мүмкін). олардың бәрі R айнымалысына сілтеледі деп есептеледі.
Мысалы
WITH SDUT, FIO DO BEGIN
FA := 'Иванов';
IM := 'Петр';
ОТ :='Борисович'
end;
Оператор
WITH R
1
, R
2
,
..., R
N
DO S
эквивалентті
WITH R
1
DO
WITH R
2
DO
. . . . . .
WITH R
N
DO S;
Жазба мен массив жалпы қасиетке ие: екеуі де ерікті қатынауы бар
құрылым болып табылады.
Жазба – неғұрлым әмбебап құрылым, себебі оның барлық
компоненттерінің типі бірдей болуы қажет емес.
Басқа
жағынан,
массив
үлкен
мүмкіндіктерге
ие.
Оның
компоненттерінің селекторларын жазба компоненттерінің селекторлары –
типті бейнелегенде берілетін тұрақты идентификаторлар болғанда есептеуге
болады.
2.6 Нұсқалары бар жазбалар
Практикада екі типті бір типтің нұсқалары ретінде қарастырған
ыңғайлы. Мысалы, геометрияда декарттық және полярлық нүктелерді
жазықтықта қолдануға болады. Бұл координаттарды жазбаның екі нұсқасын
біріктіретін тип деп есептеуге болады, оның компоненттері:
а) екі ұзындық
б) ұзындық және бұрыш болып табылады.
Берілген уақыт мезетінде қандай нұсқа қабылданғанын анықтау үшін
үшінші компонент енгізіледі. Ол типтің дескрипторы немесе белгінің өрісі
деп аталады. Мысалы,
TYPE COORD
=
RECORD
CASE KIND : (DEC, POL) OF
DEC : (X, Y : REAL);
POL : (R, FI: REAL)
END;
Бұнда белгі өрісінің аты – KIND, ал координаттар аты DEC
жағдайында Х және Y, немесе POL жағдайында R және FI.
COORD типінің мәндерінің жиыны екі типтің біріктірлуі болып
табылады:
T
1
=(X,Y:REAL)
Т
2
=
(R, FI: REAL),
ал оның кардинальды саны T
1
жәнеТ
2
кардиналды сандарының
қосындысына тең.
Бірақ көбінесе толығымен әртүрлі типтерді біріктіру емес, ал
компоненттерінің бөліктері сәйкес келетін екі типті біріктіру керек болады.
Мысалы, жұмыскерлердің анкеталық мәліметтерінде жыныстарына
байланысты әртүрлі маңызды мінездемелер жазылады. Еркек үшін қандай да
бір жағдайда маңыздырақ болып салмақ пен сақалдың болғаны болса,
әйелдер үшін – оның үш негізгі өлшемі (онда ол салмағын құпияда сақтай
алады) болады. Онда типтің келесі бейнелеуін аламыз:
TYPE ALFA = STRING[1..15];
TYPE PERSON = RECORD
FA, IM, ОТ : ALFA;
DATR : DATE;
ROST: INTEGER;
CASE POL:(M,W)OF
M : (WES : REAL;
BOR: BOOLEAN);
W : (SIZE : ARRAY[1..3] OF INTEGER)
END;
Нұсқалары бар құрамдас типтің бейнелеуінің жалпы түрі:
TYPE Т = RECORD S
1
: Т
1
;...; S
N-1
: T
N-1
;
{ жалпы бөлімі }
CASE S
N
: T
N
OF
C
1
: (S
11
: Т
11
; ... ; S
1N1
: T
1N1
);
C
M
: (S
M1
: T
M1
;
…
; S
MNM
: T
MNM
)
END
Нұсқалы бөлігі әрқашанда жазбада соңғы болуы керек. Жазбаның
нұсқалы бөліктерінің бір-біріне салынған бөліктері де жіберіледі.
Мұнда Si, Sij – Ti мен Tij типтеріне жататын компонент селекторлары,
ал Sn – белгі өрісінің аты.
Достарыңызбен бөлісу: |