ij
, i, j=1…n шамасының мәндерін, есепті
шешу барысында X
ij
=F(i, j) формуласымен енгізілген X
ij
, i, j=1…n торында
есептеу талап етілсе, онда келесі қадамдар тізбегін орындау керек:
1. i, j=1…n нүктелерінен тұратын облысты сипаттау.
2. Осы облыста Х және У шамаларын сипаттау.
3. Осы облыста X
ij
=F(i, j) торының және Y
ij
=G(X
ij
) мәндерін есептеу
ережесін беру.
НОРМА тілінде облыстарды айқын сипаттаумен қатар, шартты
облыстарды беру мүмкіндігі де қарастырылған. Индекстік кеңістік
нүктелерінің шартты облысқа кіруі немесе кірмеуі, қандай да бір шарттың
орындалуы немесе орындалмауына байланысты анықталады. Шартты
облысты беру идеясы қарапайым. Ертерек анықталған D облысы екі
қиылыспайтын D
1
және D
2
ішкі облыстарға бӛлінеді. Бірінші ішкі облыс
берілген шарт ИСТИНА мәнін қабылдайтын D облысының нүктелерінен, ал
екінші ішкі облыс берілген шарт ЛОЖЬ мәнін қабылдайтын нүктелерден
тұрады. Square облысының алдыңғы сипаттамасын алып, соның негізінде
шартты облыстарды берейік:
Square1, Square2: Square/x[k,1]-y[k,1]Берілген сипаттама бастапқы облысты Square екі қиылыспайтын
Square1
және Square2 ішкі облыстарға бӛлуді береді, және
203
Square1∩Square2=Ø,
ал Square1USquare2=Square. Бірінші
Square1
ішкі облысы, x[k,1]-y[k,1]қабылдайтын Square облысының нүктелерінен тұрады, ал Square2 ішкі
облысы, ЛОЖЬ мәнін қабылдайтын нүктелерден тұрады.
НОРМА тілінде шамалардың екі класы анықталған: скаляр шамалар
және облыстағы шамалар. Сипаттама ағымды бӛлімде әрбір шамаға сәйкес
бірегей ат қояды, сонымен қатар шаманың типін береді: REAL, INTEGER
немесе DOUBLE. Скаляр шаманы сипаттау, мысалы, келесі түрде болуы
мүмкін:
VARIABLE k1,k2 INTEGER
VARIABLE pi DOUBLE
Әрбір
облыстағы шамалар сипаттамада кӛрсетілген облыспен
байланыстырылады. Бұл облыс, берілген шамаға қатынас кезінде индексті
ӛрнектерде пайдаланылуы мүмкін индекс аттарын анықтайды. Индексті
ӛрнектерді кӛрсету реті маңызды емес. Облысты сипаттау кезінде
енгізілетіндіктен, индекстер үшін арнайы сипаттау талап етілмейді.
Тағы да Square облысының алдыңғы берілген сипаттамасын
пайдаланайық және соның негізінде облыстағы шамаларды енгізейік:
Square: (DirK:(k=1..15); Dirl: (l=1..9))
VARIABLE Xsum, Y DEFINED ON Square
OneDimK DEFINED ON DirK, OneDimL DEFINED ON DirL
Келтірілген сипаттаулар
Square
облысында Xsum және Y
шамаларын анықтайды. Индексті ӛрнектерде бұл екі шама да k және l
индекстеріне ие болуы мүмкін. OneDimK және OneDimL шамалары DirK
және DirL облыстарында анықталған, сондықтан олар индексті ӛрнектерде
сәйкесінше k және l индекстеріне ие болулары мүмкін.
Облысты сипаттау кезінде индексті кеңістік бағыттарының реті
бекітілмегендіктен,
Y[k-1,l+1]
және
Y[l+1,k-1]
қатынастары
эквивалентті. Егер бір индексті бағытты басқасымен байданыстыру қажет
болса, онда оны айқын түрде кӛрсету керек. Мысалы, Y матрицасының
диагоналдық элементтерін Y[k,l=k] немес жай Y[l=k] деп анықтауға
болады.
НОРМА тілінде операторлардың үш түрі ғана анықталған: скалярлық
оператор, ASSUME операторы және бӛлімді шақыру.
Скалярлық оператор скалярлардың арифметикалық мәндерін есептеуге
арналған. Жалпы алғанда бұл оператор дәстүрлі бағдарламалау тілдеріндегі
қабылдау операторының аналогы десе болады, сол жағында скаляр аты
кӛрсетіледі, ал оң жағында – скалярлық арифметикалық ӛрнек. Мысалы:
204
d = 1997
c = b+e+SQRT(d+4)
Скалярлық операторда қайта меншіктеу рұқсат етілмейді, сондықтан
k=k-1 түріндегі оператор анықтама бойынша дұрыс емес дептесептеледі.
ASSUME операторы облыста анықталған шамалардың арифметикалық
мәндерін есептеу үшін пайдаланылады. Бұл оператордың семантикасы келесі
түрде анықталады. Шартты түрде жазылған қатынасты қарастырайық:
FOR D(i
Достарыңызбен бөлісу: |