Т типінің х айнымалысы мына компоненттерден
тұрады
X.S
1
, X.S
2
, ... , X.S
N
, X.S
K1
,
…
, X.S
K,NK
ағымдағы мән X.S
N
= С
K
болғанда. Керісінше жағдайда қателік
(сақалды әйел).
Нұсқалары бар жазбаларды қолданғанда әрбір нұсқамен байланысты
әрекеттер, нұсқалар операторы деп аталатын таңдалатын секторда топтау
әрекеттері ыңғайлы. Оның құрылымы нұсқалары бар жазбаларды бейнелеу
құрылымын көрсетеді:
CASE X.S
N
OF
C
1
: S
1
;
C
2
: S
2
. . . . .
C
M
: S
M
END;
S
1
, S
2
, ... , S
M
- орындалатын операторлар.
Мысалы, COORD типінің айнымалыларымен берілген А және В
нүктелерінің арақашықтығын есептеу керек. Бір немесе екі нүктенің
координаттары декарттық немесе полярлық болуына байланысты есептеулер
әртүрлі болады. Барлығы 4 нұсқа аламыз:
VAR А,В : COORD; D : REAL;
CASE A.KIND OF
DEC : CASE B.KIND OF
DEC : D:-SQRT(SQR(A.X-B.X)+SQR(A.Y-B.Y));
POL : D:-SQRT(SQR(A.X-B.R*COS(B.FI))+SQR(A.Y-B.R*SIN(B.FI)))
END;
POL : CASE B.KIND OF
DEC:D:=SQRT(SQR(A.R*COS(A.FI)-B.X)+SQR(A.R*SIN(A.FI)-B.X));
POL : D:=SQRT(SQR(A.R+SQR(B.R)-2*A.R*B.R.* COS(B.FI-A.FI))
END
END
ЭЕМ жадысындағы жазбалар көрінісі
Паскальда жазбалар жадыда жазба компоненттері тізбектелетіп
келетіндей орналасады. Әрбір компонент сөздердің бүтін санын құрайды.
Қандай да бір компоненттің (өрістің) адресі R бастапқы адресіне
қатысты K
j
өрісінің ығыстырылуы деп аталады.
K
i
= S
1
+S
2
+...+S
i-1
,
мұндағы Sj – сөздердегі j-ші компоненттңі
өлшемі.
К
i
= (I-l)S массиві үшін барлық ұзындықтар бірдей.
Жазбаның компоненттеріне қатынау мүмкіндігі шектеулі – тек қана
бекітілген идентификаторларды қолдануға болады. Бұл шектеу трансляция
кезінде адрестерді білуге мүмкіндік береді, бұл жазбаларға қатынау
ыңғайлылығын үлкейтеді.
2.7 Жиындар
Жиындар тағы бір оперативті статикалық құрылым болып табылады.
Жиындар – біртұтас бүтін деп түсінілетін біртипті объектілердің ерікті
жинағы. Сәйкес тип былай белгіленеді:
TYPE Т = SET OF T
0
,
мұндағы Т
0
– жиын элементтерінң базалық типі. Ұмытпайық, базалық
тип тек қана саналатын және интервалды болады. Т типінің х
айнымалысының мәндері Т
0
типінің элементтерінің жиыны болып табылады.
Олар барлық Т
0
ішкі жиындарын құрайды. Бұндай жиын деңгей-жиын деп
аталады. Яғни, Т типі - өзінің базалық Т
0
типінің деңгей-жиыны.
Жиындар үшін рет маңызды емес.
Жиындар
элементтерінің
максималды
саны
жүзеге
асумен
анықталады. Паскаль үшін жиын элементтерінің саны 256-дан аспау керек.
TYPE CHIS - SET OF 0..30;
TYPE DSET = SET OF DAY;
TYPE ZNSET = SET OF '*'..'/';
Сәйкес айнымалылар былай бейнеленеді: VAR CH : CHIS;
D: DSET;
ZN : ZNSET;
Жиындарға қолданылатын опреациялар бізге белгілі. Тек қана, бұлар
жиындар теориясының қарапайым операциялары екенін ескерейік.
Меншіктеу:
CH := [12]; D := [SU, FR];
Біріктіру:
А = [1, 2, 3, 4, 5]
В = [2, 5, 6, 7, 8]
А+В=[1, 2, 3, 4, 5, 6, 7, 8]
Қиылысу:
А * В = [2, 5]
Айырма
А-В = [1, 3, 4]
Қатынас
Паскаль
Математикалық жазба
Мәні
A=B
(A = B)
true false
A<>B (A
≠ B)
A<=B (A
≥ B)
A=>B (A
≤ B)
x IN A
(x € A)
Операциялар рангі:
1) *
2) +,-
3) IN
Жиындарды қолдану мысалы – транслятордағы қарапйым сканер
бағдарламасы. Сканер – символдар тізбегін аударылатын тілдің лексема деп
аталатын мәтіндік бірліктерінің тізбегіне түрлендіретін бағдарлама. Әрбір
шақыру кезінде сканер кіретін символдардың керекті санын есептейді де, бір
шығыс лексемасын береді. Трансляцияның нақты ережелері мынадай:
келесі кіріс лексемалары бар: "идентификатор", "сан", "кіші-тең",
"үлкен-тең", "меншіктеу" және бөлек символдарға: +, -, * сәйкес келетін
лексемалар және т.б.
"Идентификатор" лексемасы әріптен басталатын әріптер мен цифрлар
тізбегін оқу кезінде беріледі.
"Сан" лексемасы цифрлар тізбегін оқу кезінде беріледі;
"Кіші-тең", "үлкен-тең", "меншіктеу" лексемалары сәйкес символар
жұбын <=, >=, := оқу кезінде беріледі;
Бос орындар мен жолдардың соңын қалдырып кетеді.
Бағдарламаның жұмысы кезінде шығыс лексемасы глобалды sym
айнымалысына меншіктеледі. id және num глобалды айнымалыларының
тағайындалуы бағдарламадан көрінеді. Ch глобалды айнымалысы енетін
тізбектің ағымдағы символына ие. Лексемалардың S массиві символдардың
лексемаларға түрленуін береді, оның индекстері не цифр, не әріп болмайтын
символдармен шектелген. Көріп отырғандай, символдар жиынын қолдану
сканерді оның реттелгеніне қарамастан, бағдарламалауға мүмкіндік береді.
Бағдарлама мәтіні:
VAR CH CHAR;
SYM SYMBOL;
NUM INTEGER;
ID: RECORD
К : 0..МАХК;
A : ARRAY[1..MAXK] OF CHAR
END;
PROCEDURE SCANNER;
VAR CH1 : CHAR;
BEGIN {бос орындарды өткізу}
WHILE CH
=
" DO READ(CH);
IF CH IN['A'..'Z'] THEN
WITH ID DO BEGIN
SYM := IDENTIFIER; К := 0;
REPEAT
IF К < MAXK THEN BEGIN
K:=K+1; A[K]:=CH
END;
READ(CH)
Достарыңызбен бөлісу: |