Crc press баспасы Taylor & Francis баспа тобы



Pdf көрінісі
бет14/26
Дата20.12.2019
өлшемі6,26 Mb.
#53875
1   ...   10   11   12   13   14   15   16   17   ...   26
Байланысты:
Бағдарламалау тілдеріне кіріспе (1)


3.5.2 Аксиомалық семантика
Бағдарламалар  негізгі  сәулет  пен  абстрактілі  машинаға  тәуелсіз,  пре-
дикаттарды  есептеу  сияқты  математикалық  логика  негізінде  әзірленуі 
мүмкін. Бағдарламаның мағынасы фон Нейман үлгісіне негізделген аб-
страктілі машинаныңң есептеуіш жай-күйінің түрлену жүйелілігі ретін-
де емес, логикалық өрнек түрінде қабылданады. 
Предикаттарды  есептеуге  негізделген  аксиомалық  семантика  бірінші 
рет  Ч.  Э.  Р.  Хоар  есептеу  кезінде  есептеудің  жай-күйін  анықтауға  ар-
налған логикалық өрнектің көмегімен сипаттады Операторды орындау 
логикалық өрнектің өзгеруіне байланысты есептеудің жай-күйін өзгер-
теді. Оператор мағынасы шарттан кейін және шарт алдында арасын-
дағы  айырмашылықтан  алынады.  Шарт  алдында  бұл  –  оператордың 
орындауы алдындағы логикалық өрнек, ал шарттан кейін бұл – опе-
ратордың орындағаннан кейін дерек шындыққа айналатын логикалық 
өрнек. Тағайындау операторларндағы сияқты жаңа шартқа ауысу салда-
рынан  операторлардан  туындаған  аксиомалардың  қарама-қайшылығы 
болса, алғышарттағы аксиома жаңа алынған аксиома пайдасына түседі. 
Болжап көрелік, командаларды орындағанға дейінгі бастапқы шарттар – 
{P}, ал операторды орындағаннан кейінгі шарт – {Q}. Онда аксиомалық 
семантиканы сипаттайтын символдық жазу мына сипатқа ие: {PS{Q}, 
мұнда S– оператор.
3.16-мысал
Мысалы, тағайындау операторларн орындағаннан кейін x = 4 болса, ло-
гикалық шарт x == 4 шынайы болады. Егер алдыңғы шарт x == 10˅Y == 
9 операторды орындағанға дейін шынайы болса, онда x = 4 тағайындау 
операторларн орындағаннан кейін x == 10 логикалық өрнегін x == 4 ло-
гикалық өрнегіне ауыстырғаннан кейін, x== 4 ^y== 9 логикалық өрне-
гі шынайы болады. y = 5 операторларн орындау x== 4 ^y== 5 шынайы 
шарттан кейінгіні құруға алып келеді. y = 5 операторларның мағынасы 
шарттан кейінгі x == 4 ^y == 5 шынайы мен шарт алдындағы x == 4 ^y 
== 9 шынайы арасындағы айырмаға тең.
Бағдарламалаудың  қарапайым  тілінде  команда,  командалардың  жүй-
елілігі,  if  операторлар,  итерациялық  конструкциялар,  мысалы,  WHILE 
циклі мен процедураларды шақыру сияқты басқару абстракциялары бар. 
Командалардың  мағынасын  түсіну  және  аксиомалық  семантиканың 
көмегімен  соңғы  шарттарды  алу  үшін  біз  осы  басқару  абстракцияла-
рын орындағаннан кейінгі шарттан кейінгіні алуымыз тиіс. Тағайындау 
операторларның әсері 3.15-мысалда көрсетілген.  Операторлардың жүй-

147
елілігін орындау кезінде алдыңғы операторды орындағаннан кейін кей-
інгі шарт алдыңғы і операторы (хабарландырулар, командалар немесе 
өрнек) үшін алғышарт болып табылады. Келесі қағидада {P} символы 
алғышартты білдіреді, ал Ss символы ағымдағы операторды орындаған-
нан кейін операторлардың жүйелілігін білдіреді. 
операторларн орындағаннан кейін қалған Ss операторлары үшін жаңа 
алғышарт  бұл-  {Q},  мұнда  {Q}  –S  операторларн  орындағанға  дейін 
алғышарт {P} болса, {P} (S; Ss) →   {Q} (Ss) мұнда {P} S {Q}
If B then S1 else S2 басқару абстракциясының аксиомалық семантикасы 
{Q1} V {Q2} құрама кейінгі шарт түрінде көрсетіледі.
 {Q1}кейінгі шарт S1 операторларн орындағаннан кейін алынады, егер 
егер  логикалық  өрнек  B  логикалық  өрнегі  {P}  алғышартында  болса, 
{Q2}  кейінгі  шарты  алынады,  егер  B  логикалық  өрнегі  {P}алғышарт-
та  жалған болса. Біз шартты операторлар үшін аксиомалық семантика 
қағидасын былай жазамыз:
P} if B then Selse S{Q1 ˅Q2} мұнда {P} S{Q1}, егер шынайы болса
B,
немесе {P} S{Q2}, егер жалған B
Дизъюнкция (логикалақы немесе) then-часть және else-часть біріктіреді.
Кейінгі  шарт  іске  асырылады  немесе  шынайы  then-бөлікпен  немесе
шынайы else-бөлікпен, себебі бұл бөліктер бірін-бірі болдырмайды.
3.17-мысал
Мына бағдарламалық кодты талдайық:
x = 10; z = 4; if (x > 4) then value = x; else value = z;
Бастапқы шартқа {P} қабылдайық. x = 10 операторын орындаған соң 
{P^x== 10} кейінгі шарты шынайы болады.  Бұл кейінгі шарт келесі  z
4 тағайындау операторлар үшін алғышарт болады. z = 4 операторларн 
орындаған соң {P^x == 10 ^z == 4} кейінгі шарты шынайы болады және 
шартты оператор үшін алғышарт болып табылады.
  Шартты  оператордың  кейінгі  шарты  {P^x  ==  10  ^z==  4  ^  (((x>  4)  ^ 
(value== x)) ˅ (x ≤ 4) ^ (value== z))))}.
whileBS” басқару абстракциясының аксиомалық семантикасы күрделі 
болып табылады. Қағидада WHILE циклін орындау алдындағы {I^B
алғышарты екі бөлікке бөлінеді: I инвариантты бөлік және қалған B ло-
гикалық өрнек, ал {I^¬ B} кейінгі шарты сол I инвариантты бөліктен 
және  ¬ B терістеуден тұрады. Инвариантты шарт итерацияны орын-

148
дау уақытында өзгеріссіз қалады. 
инвариантты шартын тікелей есептеуге болмайды. WHILE цикліне ар-
налған аксиомалық семантика мынадай түрде бейнеленген:
{I^B} while BS; {I^ ¬ B} мұнда {I} S {I}% I– инвариантты шарт
Аксиомалық семантиканың негізгі басымдығы мынада:
1. Ол шын мәнінде орындамалмаған бағдарламаны  орындағаннан кей-
інгі  соңғы  шартты  алу  үшін  қолданылады.  Осы  шектеулі  деңгейдегі 
сипат бағдарламаны орындамай бағдарламаның дұрыстығын тексеруге 
көмектесуі мүмкін. Идеясы - аксиомалық семантиканың көмегімен FC 
соңғы шартын және  оны қолданыстағы FI шартымен салыстыру. Егер 
соңғы алынған шарт FCFI болса, онда бағдарламаның қатесі болмай-
ды (VII қосымшаны қараңыз), ал егер соңғы орындалған шарт FCFI 
және FIFC болса,онда бағдарлама орындалған және қатесі жоқ. Егер 
схема  кішкентай  бағдарламалар  үшін  жұмыс  істесе,  онда  ол  үлкен 
бағдарламалар үшін есептеуге тиімсіз болады, (1) баламалы логикалық 
өрнектерді салыстыруға арналған есептеу шығындарына байланысты
(2) бір  логикалық  өрнекте  сипатталған  шарт  басқа  логикалық  өрнек
шығындарымен байланысты және (3) инварианты шарттарды анықтауға
арналған шығындарға байланысты.
2. Болжамалы  FI  соңғы  шартын  біле  отырып,  бағдарлама  кері  логика-
лық қорытындының көмегімен бірнеше сатылар түрінде құрылуы мүм-
кін: бағдарлама конструкциясының кейінгі шарты мен сатылы әрекеті
шынайы алғышарттар алу үшін пайдаланылады. Алғышарттар алдыңғы
оператор үшін кейінгі шартқа айналады.бағдарламаны  осындай кері эв-
ристикалық талқылау 4-тарауда сипатталғандай сатылы құрылуы мүм-
кін.
 3.5.3 Денотациялық семантика
Денотациялық семантика басқару абстракциясы немесе деректер мәнін 
синтаксистік қағиданы математикалық функция мен семантика сала-
сындағы  семантикалық  алгебраның  көмегімен  түрлендіру  көмегімен 
алады.
Сөйлем мағынасын алу үшін синтаксистік талдаудағыдай талдау ағашы 
құрылады,  айырмашылығы  талдау  ағашының  доғасында  синтаксистік 
қағидаларға  сәйкес  семантикалық  қағидалар  қолданылады,  ал  сөйлем 
бөліктерінің мағыналары ішкі тораптар түрінде алады. Сөйлемнің то-
лық мағынасын талдау ағашының бастапқы торабынан алады. Күрделі 

149
сөйлемнің мағынасын жеке сегменттерді қызметтік құрастыру арқылы 
алады.
Операциялық  семантика  мен  денотациялық  семантиканың  айыр-
машылығы мынадай: операциялық семантика есептеуіш жай-күйіндегі 
өзгерістерді абстрактілі машинадағы абстрактілі командаларды орындау 
нәтижесі ретінде сипаттайды, ал денотациялық семантика абстрактілі 
синтаксистік ағашты және сөйлем мағынасын алу үшін математикалық 
формулалармен берілген семантикалық қағидалардың үйлесуін пайда-
ланады. Денотациялық семантикада есептеу жай-күйі мен абстрактілі 
машина ұғымы жоқ.
Денотациялық семантика мен операциялық семантиканың бірнеше ұқ-
састықтары бар:
1. Денотациялық  семантика  операциялық  семантика  сияқты  орта  мен 
жад блогын пайдаланады.
2. Операциялық  семантика  да,  денотациялыққ  семантика  да  өзінің 
анықтамаларында абстракцияны пайдаланады.
3.18-мысал
10-дық негізді жүйедегі белгісі жоқ тұтас саннан ғана тұратын қарапай-
ым грамматиканы пайдаланып, денотациялық семантика ұғымын тал-
дайық. 10-дық негізі бар тұтас санға сәйкес келетін грамматика төменде
келтірілген
Синтаксистік  қағида  #1:  <тұтас  сан>  ::=  <тұтас  сан><цифр>  | 
<цифр>
Синтаксистік қағида #2: <цифр>::= ‘0’ | ‘1’ | ‘2’ | … | ‘9
Тұтас  санды  алуға  арналған  семантика  саласы  бұл  –  10-дық  есептеу 
жүйесі бар тұтас сандар, ℤ10 ретінде белгіленеді, мұнда индекс 10-дық 
есептеу  жүйесі  негізін  көрсетеді.  Мәнді  анықтау  үшін  көбейту  және 
қосу  операциясы  қажет.  Осылайша,  семантика  саласындағы  семанти-
калық алгебра плюскөбейту белгілерімен көрсетілген: ℤ10 × ℤ10 → 
ℤ10 бұл кіру деректері болып тұтас сандар жұбы табылады, көбейту мен 
қосуды орындағанда сондай-ақ 10-дық есептеу жүйесі негізді тұтас 
сан алынады. “×” символы декартово туындыны білдіреді. Семантика-
лық қағида синтаксистік қағиданы ℤ10 семантика саласындағы тиісті 
мағынаға түрлендіретін ‘ĭ’ функциясын пайдаланады.
Семантика саласы: ℤ10

150
Семантикалық алгебра: қосу, көбейту: ℤ10 × ℤ10 →     ℤ10
Семантикалық қағида # 1: ĭ  (<тұтас сан>лч) : =ĭ (<тұтас сан>пч) 
көбейту
он плюс ĭ(<цифр>) | ĭ (<цифр>)
Семантикалық қағида # 2: ĭ  (<цифр>) : = нөл |бір | екі… |
тоғыз
бұл  біздің  он,  жүз  және  т.б.  мағыналарының  астында  не  бар  екендігі 
туралы  жасырын  көрініс.  Осыны  болжай  отырып,  біз  10-дық  есептеу 
жүйесінде  цифрдың  кез-келген  жүйелілігін  ала  аламыз.  Қанекей,  237 
үш цифрларнан тұратын жүйелілік грамматикасының көмегімен  талдап 
көрейік, содан кейін тиісті семантикалық қағидаларды қолдану арқылы 
талдау  ағашын  пайдалана  отырып,  ℤ10  семантика  саласында  екі  жүз 
отыз жеті анықтаманы белгілейік. Талдау ағашын құрастыру мен тиісті 
семантикалық қағидалар арқылы мағына алу 3.18-суретте көрсетілген.
Талдау  ағашында  көрсетілгендей  (3.18а  сурет),  әр  символ  2-синтак-
систік  қағида  бойынша  <цифрға>  бөлінеді.  1b  синтаксистік  қағидасы 
бойынша біз сол жақ шеттегі <цифр> символын <тұтас сан> ретінде 
таныстыра аламыз, ал содан кейін 1а синтаксистік қағидасын пайдалана 
отырып, <тұтас сан> анықтамасы бар басқа екі цифрды екі рет байла-
ныстыра аламыз.
Талдау ағашының негізі <тұтас сан> бастапқы символы болады.
3.18b-суретте ішкі тораптағы ағаш астындағы мағыналарды және түбір 
торабындағы сөйлем мағынасын анықтауға арналған талдау ағашы көр-
сетілген.
2-семантикалық  қағида  ‘2,’  3,’  және  ‘7’  символдарына  екі,  үш  және
жеті деген мағына береді. 1b семантикалық қағидасы цифрды екі тұтас
санына түрлендіреді. 1а семантикалық қағидасын қолдана отырып, екі
көбейту он қосу үш =жиырма үш мағынасын аламыз.
Қайтадан 1а семантикалық қағидасын қолдана отырып, жиырма үш кө-
бейту  он қосу жеті = екі жүз отыз жеті мағынасын аламыз.

151
Integer – бүтін; digit – сан; two hundred thirty seven – екі жүз отыз жеті; 
twenty three – жиырма үш; two – екі; three – үш; seven – жеті; applying 
syntax  rules  -  синтаксис  ережелерін  қолдану;  applying  corresponding 
sematic rules - тиісті семантикалық ережелерін қолдану.
3.18-сурет. Талдау ағашында семантикалық қағидаларды қолдану көме-
гімен мағыналарды алу.
3.19-мысал
Денотациялық  семантиканы  түсіну  үшін  бағдарламалау  тілдеріндегі 
санды анықтау мысалын талдайық. Натурал сан домені бұл – тұтас сан 
домені  мен  нақты  сан  доменінің  байланысты  емес  бірлігін  қамтитын 
құрама домен. Соған қарамастан тұтас сан домені егер арифметикалық 
әрекет тұтас санды, сондай-ақ нақты санды қамтыған жағдайда нақты 
сан доменіне алып келуі мүмкін.Сандарға арналған синтаксистік қағида 
3.19-суретте көрсетілген. Синтаксистік қағидалар жеңіл оқылады, мына 
тұжырымдамадан басқасы: <тұтас теріс емес сандар > мен <құбылма-
лы нүктесі бар саны> терминалды емес символдарын анықтау <цифр-
лар> жүйелілігін түзеді.
Соған  қарамастан,  семантикалық  түсіндіруді  жақсарту  үшін  оларды 
басқа  түрде  жазуға  болады:  <тұтас  теріс  емес  сан>  сол  жақ  рекур-
сивті  анықтама  арқылы  цифрлар  жүйелілігін  тудырса,  <құбылмалы 
нүктесі  бар  саны>  анықтамасы  артқы  рекурсия  анықтамасын  пайда-
ланады. Соңғы нәтиже бірдей болғанына қарамастан, екі синтаксистік 
қағидалармен  байланысты  мағынаны  беру  тәсілі  әр  түрлі.  Сол  жаққа 

152
жылжығанда <тұтас теріс емес сан> терминалды емес символының 
мағынасы онға көбейтіледі, <құбылмалы нүктесі бар саны> терминал-
ды емес символының мағынасы оң жаққа жылжығанда құбылмалы нүк-
тесімен 10-ға бөлінеді. 
 <Тұтас теріс емес сан> мағынасының тұтас сан доменінен және нақты 
сан доменінен айырмашылығы бар: тұтас сан доменінде ол тұтас сан 
ретінде қаралады; нақты сандар доменінде сан мағынасы нақты сандар 
доменіндегі тиісті санға келтіріледі.
1-қағида: <сан>::= <тұтас сан> | <нақты сан>
2-қағида:  <тұтас  сан>::=  <белгі><тұтас  теріс  емес  сан>|  <тұтас
теріс емес сан>
3-қағида:  <нақты  сан>::=  <белгі><белгісі  жоқ  нақты  сан>  |<белгісі
жоқ нақты сан>
4-қағида: <белгісі жоқ нақты сан>::= <тұтас теріс емес сан> ‘.’ <құ-
былмалы  нүктесі бар саны>|<тұтас теріс емес сан> ‘.’ <құбылмалы
нүктесі бар саны> ‘E’<тұтас сан>
5-қағида:<тұтас  теріс  емес  сан>::=<тұтас  теріс  емес  сан><циф-
р>|<цифр>
6-қағида: <құбылмалы нүктесі бар саны>::= <цифр><құбылмалы нүк-
тесі бар саны>| <цифр>
7-қағида: <цифр>::= 0’ | ‘1’ | ‘2’ | … | ‘9
8-қағида: <белгі>::= ‘ + ’ | ‘−‘
3.19-сурет.  Сандарды тексеруге арналған синтаксистік қағидалар.
Түсіндіру қағидаларына арналған семантика саласы бұл – негізі 10-ды 
құрайтын натурал сандар домені, N-мен елгіленеді. N натурал сандар 

153
домені  -бұл мен ℤ тұтас сан домені R нақты сандар доменін байланыс-
сыз біріктіру
Соған қарамастан, zεℤ әрбір элементі сондай мағынаға ие rεR бірегей 
түріне ие. Тұтас сан доменінен нақты сандар доменіне түрлену бұл – 
7-тарауда  талқыланған  ақпараттың  жоғалуынсыз  түрлену  типін  кел-
тіруге мысал.
Семантикалық алгебра тұтас сандарды қосуды (‘+I’), тұтас сандарды
көбейтуді (‘×I’), нақты сандарды қосуды (‘+R’), нақты сандарды көбей-
туді (‘×R’), нақты сандарды бөлуді (‘/R)  және деңгейге шығаруды (‘^’)
қамтиды. Қосу және көбейту операциясының қосымша функциясы бар:
қосу тұтас сандар доменінде тұтас сандарды қосу және нақты сандар
доменінде құбылмалы нүктелі сан қосу болады. Соған ұқсас, көбейту
операциясы тұтас сандар доменінде көбейту болады және нақты сандар
доменінде құбылмалы нүктелі сандарды көбейту болады.
3.20-суретте семантикалық қағида синтаксистік қағида тәртібінде көр-
сетілген.
ň функциясы N натурал сандар доменінде синтаксистік қағиданы түсін-
діруді білдіреді, ř функциясы R нақты сандар доменінде синтаксистік
қағидаларды  түсіндіруді  білдіреді,  ал  ĭ  функциясы  ′  тұтас  сандар  до-
менінде түсіндіруді білдіреді.
Қанекей,  әр  семантикалық  қағиданы  зерттейік.  1-қағида  ň(<сан>)  деп
белгіленген  сан  мағынасы  ř(<нақты  сан>)  деп  белгіленген  нақты  сан
мағынасы тең немесе ĭ(<тұтас сан>) деп белгіленген тұтас сан мағына-
сына тең. 2-қағида <тұтас сан> терминалды емес символының мағы-
насы <белгісіз тұтас сан> терминалды емес символының мағынасына
немесе <белгісіз тұтас сан> терминалды емес символының мағынасы-
на көбейтілген тұтас сан доменіндегі <белгі> терминалды емес симво-
лының мағынасы сияқты.
3-қағидада  <нақты  сан>  терминалды  емес  символының  мағынасы
нақты сандар доменіндегі <белгі> терминалды емес символының мағы-
насы <белгісі жоқ нақты сан> терминалды емес символының мағына-
сына немесе <белгісі жоқ нақты сан> терминалды емес мағыналарына
көбейту арқылы алынады.

154
Семантика саласы: тұтас сандар домені ℤ10
нақты сандар домені R10
натурал сандар домені: N10 = ℤ10 ⊎R10 % ⊎ байланыспайтын бірігуді 
білдіреді
 R10 –дегі семантикалық алгебра: нақты сандарды қосу ‘+R’; 
нақты сандарды көбейту ‘×R’ : R10 × R10 → R10
ℤ10 –дегі семантикалық алгебра: тұтас сандарды қосу ‘+I’; тұтас сан-
дарды көбейту ‘×I’ : ℤ10 × ℤ10 → ℤ10 Аралас домендегі семантика-
лық алгебра: дәрежеге  шығару ^’:  (R10 × ℤ10) →    R10
Семантикалық функциялар: ň; ř;  ĭ;
1-қағида: ň(<натурал сан>) ::= ĭ(<тұтас сан>) | ř(<нақты сан>)
2-қағида: ĭ(<тұтас сан>) ::= ĭ(<белгі>) ×Iĭ (<тұтас теріс емес сан>) |
ĭ(<тұтас теріс емес сан>)
3-қағида: ř (<нақты сан>) ::= ř(<белгі>) ×Rř(<белгісі жоқ нақты сан>)
| ř(<белгісі жоқ нақты сан>)
4-қағида: ř (<белгісі жоқ нақты сан>) ::= ř(<тұтас теріс емес бөлік>)
+Rř(<ондық  бөлшектің  бөлшек  бөлігі>)  |ř(<тұтас  теріс  емес  бөлік>)
+Rř(<ондық бөлшектің бөлшек бөлігі>)) ×(10.0 ^ ĭ(<тұтас сан>))
5a-қағида:  ř(<тұтас  теріс  емес  бөлік>1)  ::=  ř(<тұтас  теріс  емес
бөлік>2) ×I10.0 +Rř(<цифр>) | ř(<цифр>)
5b-қағида: ĭ(<тұтас теріс емес сан>1) ::= ĭ (<тұтас теріс емес сан>2)
×I десять +I ĭ(<цифр>) | ĭ (<цифр>)
6-қағида: ř(<ондық бөлшектің бөлшек бөлігі>1) :: ř(<цифр>) +R ř(<он-
дық бөлшектің бөлшек бөлігі>2)) / 10.0 | ř(<цифр>) / 10.0
7a-қағида: ř(<цифр>) ::= құбылмалы нүктелі нөл |  құбылмалы нүк-
телі бір | … |  құбылмалы нүктелі он % 1 құбылмалы нүктемен 1,0 тең
7b-қағида: ĭ(<цифр>)::= нөл | бір| екі |…| он % цифрды түсіндіру

155
8a-қағида: ř(<белгі>) ::= плюс бір құбылмалы нүктесі бар сан минус 
бір құбылмалы нүктесі бар сан % + 1.0 or −1.0 
8b-қағида: ĭ(<белгі>)::= плюс бір| минус бір 
3.20-сурет.  Синтаксистік  қағидаларға  сәйкес  келетін  семантикалық 
қағидалар.
1. 4-қағида <белгісі жоқ нақты сан>-‘int’, ‘float’, ‘char’, ‘Bool’, and ‘;’, 
резервтелген сөздерді, сандар мен идентификаторларды енгізетін соңғы 
автоматты  жасаңыз,  резервтелген  сөздер,  сандар  мен  идентификатор-
лар бір реттік бос орындар бөлінуі мүмкін, ал қалған барлық басқа бос 
орындар жойылуы тиіс. 
2. Сегіздік  санды  қабылдайтын  грамматиканың  қарапайым  БНП 
көрінісін жазыңыз. Грамматиканы кеңейтілген БНП-ге түрлендіріңіз.
3. Келесі синтаксистік қағидаларға арналған синтаксистік диаграмманы 
құрыңыз:
<блок>::{‘ <хабарландыру><операторлар>  ‘}
<операторлар>::= <оператор>‘;’<операторлар>  |
<оператор>   ‘‘| ε 
<оператор>::= <шарт операторы>  | <WHILE циклі>|
<тағайындау> |
<FOR циклі>  | <процедураны шақыру>  | return
(<өрнек>)
<WHILE циклі>::= while<логикалық өрнек>do<операторлар>
<шартты оператор>::= if<логикалық өрнек>then<оператор>else
<оператор> 
<тағайындау>::=<идентификатор>  = <өрнек>
<логикалық  өрнек>::=  <логикалық  өрнек><l-операция><логикалық  өр-
нек>  | <предикат>   |
truefalse
<l-операция>::= ‘&&’ ‘||’ ‘not’
<предикат>::= <идентификатор><c-операция><идентификатор>
<c-операция>::= ‘==’ >’ >’ >=’ | ‘=<
<өрнек>::= <өрнек><a-операция><өрнек>
<a-операция>::= ‘ ’ ‘−‘ ‘*’ ‘/’
<хабарландыру>::=  <тип><идентификаторлар  жүйелілігі>;  <хабар-
ландыру>  | ε
<тип>::= intfloatBoolstring
<идентификаторлар  жүйелілігі>::=  <идентификатор>’,’<идентифи-

156
каторлар жүйелілігі>  |
<идентификатор>
4.  Логикалық өрнек пен операторды қамтитын WHILE циклі үшін қа-
рапайым  БНП-ні  жазыңыз  және  тиісті  синтаксистік  диаграмманы  са-
лыңыз.
5. C++ -дегі параметрлердің берілуін зерттеңіз және тиісті синтаксистік 
қағиданы жазыңыз. Синтаксистік қағиданы синтаксистік диаграммаға 
түрлендіріңіз және синтаксистік диаграмманы оңтайландырыңыз.
6. if  шартты  операторының  конструкциясына  арналған  БНКП-ге  қара-
пайым  бір  мәнді  грамматиканы,  оған  толық  логикалық  өрнекті  қоса 
алғанда, C++ -ге немесе Java-ға жазыңыз және тиісті синтаксистік диа-
грамманы сызыңыз.
7. Синтаксистік  грамматиканы  (3.14-сурет)  және  сан  мәнін  табу  үшін 
семантикалық қағидаларды (3.15-сурет) пайдалана отырып, құбылмалы 
нүктесі 23,416 санға арналған талдау ағашын құрыңыз.
8.  “Анықталмаған” жай-күйден бастап кодтың келесі фрагментіне ар-
налған алғышарттар мен кейінгі шарттарды жазыңыз.
x = 4; y = 6; z = 7;
if (x >   y) then max = x else max = y;
9. Орта σE = [x→ 1, y→ 2, z→ 3], ал жад блогы σS = [1 → 43, 2 → 5, 3 → 
10] және дамп σD= [] болған жағдайда, есептеу жай-күйі (σE, σS, σD)
үштік ретінде ұсынылғанын болжай отырып, “intw = 5;” хабарланды-
рудан кейін есептеу жай-күйін жазыңыз, одан кейін “x = x + 4; y = z;”
командасы орындалады.
10. Он алтылық санды қабылдайтын грамматиканы жазыңыз және тұтас
сандар саласында тиісті денотациялық семантиканы жазыңыз. Саланы,
семантикалық алгебраны және бағалау функциясын анықтаңыз.
3.7.3 Толық жауап
11. Грамматиканың  үш  түрін:  тұрақты  грамматиканы,  мәтіндік  еркін
грамматиканы және мәтіндік тәуелді грамматиканы салыстырыңыз.
12. Лексикалық талдау үшін грамматиканың басқа түрлерімен салысты-
рғанда тұрақты грамматика дұрысырақ? Түсіндіріңіз.
13. Символдар кестесінің лексикалық талдаудағы рөлі қандай? Қарапай-
ым мысалда көрсетіңіз.
14. Абстрактылы  синтаксис  пен  нақты  синтаксис  арасындағы  айыр-
машылық қандай? Қарапайым мысалда түсіндіріңіз.
15. Шартты оператордағы бір мәнді еместіліктің ықтимал көзін және бір

157
мәнді еместілікті жою тәсілдерін қараңыз.
16. Операциялық семантика мен денотациялық семантика арасындағы
айырмашылық қандай? Түсіндіріңіз.
17. Неге логикалық семантика аксиомалық семантикаға кіреді? Қара-
пайым мысалда түсіндіріңіз.
18. Әрекеттер семантикасын семантиканың басқа түрлерімен салысты-
рыңыз және әрекеттер семантикасының басымдығын көрсетіңіз.
19. Мінез-құлықтық  семантика  бағдарламалау  тілдерінде  не  үшін  қа-
жет? Түсіндіріңіз.

158

Достарыңызбен бөлісу:
1   ...   10   11   12   13   14   15   16   17   ...   26




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет