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


Өзгергіш айнымалылар өзгермейтін айнымалыларға қарсы



Pdf көрінісі
бет9/26
Дата20.12.2019
өлшемі6,26 Mb.
#53875
1   ...   5   6   7   8   9   10   11   12   ...   26
Байланысты:
Бағдарламалау тілдеріне кіріспе (1)
corel-draw-zhayly-zhalpy-tusinik, corel-draw-zhayly-zhalpy-tusinik, Jobs and professions

2.4.1 Өзгергіш айнымалылар өзгермейтін айнымалыларға қарсы
Императивті  бағдарламалау  парадигмасында  айнымалылар  өзгермелі 
болады: қолданушы меншіктеу операциясын пайдаланып, өз қалауымен 
айнымалыға  сәйкес  келетін  жады  ұяшығындағы  мәнді  бұза  отырып 
жаңарта алады. Мысалы, x = y + 4. Императивті бағдарламалау пара-
дигмасынан айырмашылығы декларативті бағдарламалау парадигмасы 
жады ұяшықтарын пайдалану деңгейінде мутациялауға мүмкіндік бер-
мейді. Айнымалы мәнмен тек бір рет қана байланыса алатын өзгермей-
тін мән болып қалады. 
Айнымалыларды өңдеудің екі әдісінің де артықшылығы мен кемшілі-
гі  бар.  Жады  ұяшығының  бүлініп  жаңаруының  негізгі  артықшылығы 
жадыны  қайтадан  пайдалану  болып  табылады.  Мысалы,  қайталап 
қолдануда  FOR циклының индексті айнымалысы қолданылады. Жады 
ұяшығының бүлініп жаңаруының негізгі кемшілігі (1) өткен мәндердің 
жоғалуы және (2) 4-тарауда сипатталғандай бағдарламаның негізгі ма-
тематикалық қасиетінің бұзылуымен пайда болған бағдарламаның қа-
жетсіз  әрекетінің  нәтижесінде  пайда  болған  жанама  әдістер.  Егер 
бұрынғы мәндерді қайта қалпына келтіру мүмкін болмаса, онда шешім 
бар болған күннің өзінде шешім алудың басқа мүмкіндіктерін байқап 
көру үшін  мәселені шешудің кез келген әдісі оны қайтара алмайды. 
Бір рет қана белгіленген өзгермейтін айнымалылардың артықшылығы: 
(1) жанама  әдістер  туындататын  бағдарламаның  қажетсіз  әрекеттерін
қысқарту  мүмкіндігі  және  (2)  9-тарауда  қарастырылған  логикалық
бағдарламалау сияқты балама шешімдерді пайдалану үшін соңғы мән-
ді пайдалану. Негізгі кемшілік, мәліметтер элементтерін мәліметердің
үлкен  құрылымының  қатысуымен  өңдеген  кезде,  әсіресе  итеративті
әдіспен,жады жарылысы нәтижесінде жады қайта пайдалану мүмкін
болмайды. Бірнеше парадигманы қолданатын қазіргі көптеген тілдер екі
қадамның да артықшылықтарын артығымен пайдалану үшін өзгеретін
және өзгермейтін айнымалыларды қатар пайдаланады.
2.4.2 Көріну облысын байланыстыру және ережесі
Байланыстыру екі элементті немесе белгілері сәйкес келетін элемент-
ті байланыстыру. Мысалы, айнымалының аты жады ұяшығына байла-
нысуы мүмкін, жады ұяшығы мәнмен, идентификатор мәнмен, ал ай-
нымалы  типппен  байланысты  болуы  мүмкін.  осылайша,  операторлар 
тобы идентификатормен байланысып, функция немесе үдеріс деп атала-
ды.  Көріну облысының ережесі айнымалыны пайдалануды және оның 
көріну  дәрежесін  анықтайды.  Айнымалы  көрінеді  және  өз  облсының 
шегінде пайдаланылады: оның облыстан тыс ешқандай мәні жоқ. Об-

90
лысқа байланысты байланысу уақытша немесе тұрақты болады.  
Көріну облысы ережесінің екі түрі бар: статистикалық және динами-
калық. Аттары айтып тұрғандай, көрінудің статисткалық облысы блок 
шегі,  ішкі  бағдарлама  немесе  функция  (немесе  бағдарламалау  нысан-
ды-бағдарлы  тілдердені  әдіс)  шегі,  класс  шектері  сияқты  бағдарлама 
құрылымдарына негізделеді. Ол ішкі бағдарламаның шақырту шабло-
нымен өзгермейді. Көрінудің динамикалық облысы ішкі бағдарламаның 
шақырту  шаблонына  негізделген  айнымлының  масштабын  өзгертеді. 
Көрінудің статистикалық облысының мысалы 2.18-мысалда, көрінудің 
динамикалық облысының мысалы 2.19- мысалды келтірілген.  
Бүтін сандар x, y, z;
main ( )
{x = 4; y = 10; z = 12;
{бүтін сандар temp, z;
temp = x; x = y; y = temp; z = 5;}
print(x, y, z);
}
2.15-сурет.  Айнымалылардың  көріну  аймағындағы  статистикалық  об-
лыс мысалы.   
2.18-мысал
2.15-суреттегі бағдарламаның ішкі блокта үш  x, y, және z жаһандық ай-
нымалысы және ішкі блокта екі жергілікті temp және z айнымалылары 
бар. Жаһандық айнымалылар бүкіл бағдарламаны алып жатыр, ал жер-
гілікті айнымалылардың көлемі олар жарияланған блокпен шектелген.  
z  айнымалысының  атау  қайшылығы  пайлануға  жақын  айнымалыға 
басымдық  беру  арқылы  шешіледі.  Басып  шығару  операторындағы  z 
айнымалысы z жаһандық айнымалысына жатады, ал ішкі блоктағы  z 
айнымалысы  z  жергілікті  айнымалыға  жатады.  Осы  екі  айнымалы  да 
мәліметтердің бөлек нысандары болып табылады және жадының әртүр-
лі жерінде көрініс тауып, қызмет ету мерзімері де әртүрлі болады. z ай-
нымалысы ішкі блоктың облысынан тыс жерде басылып жатқанда z = 12 
жаһандық айнымалының мәні де басылып жатады. Осы айнымалылар-
дың  масштабтары  туралы  ақпарат  бағдарламаның  құрылымына  қарау 
арқылы анықталады және оның бағдарламаның шақырту шаблонымен 
ортақ ешнәрсесі жоқ. 
2.19-мысал
2.16-  суреттегі  бағдарлама  динамикалық  облыстың  ережесін  қолдана-

91
ды. Бағдармада екі айнымалысы бар sum функциясы бар: х айнымалы-
сы sum функциясының шегінде жарияланған, ал у айнымалысы – еркін 
кіру, яғни у айнымалысы  sum функциясында жарияланбаған. Х айныма-
лысы мәнін параметрлерді беру механизмінен алады. Соған қарамастан, 
у айнымалысы байланыстырудың сәйкес мәнін анықтау үшін шақырту 
үдерісінің тізбегі үшін бөлінген жады облысында дәл сондай атты із-
дейді. 
Негізгі бағдарлама екі блоктан тұрады. Бірінші блоктың у және z, екі 
жергілікті айнымалылары бар және у айнымалысын пайдаланып,  sum 
функциясын дәлелмен шақырады. Екінші блок w, y, және z үш жергілікті 
айнымалылардан тұрады және sum функциясын z нақты параметрімен 
шақырады.
2.16-сурет.  Айнымалылардың  көрінуінің  динамикалық  облысына  мы-
сал.  
sum(y)  функциясының бірінші шақыртылымы 8 мәнін қайтарады. Өйт-
кені х формалды параметрі у нақты параметрінің мәніне ие болады, ал 
у еркін айнымалысы sum функциясында негізгі бағдарламаның бірінші 
блогында  жарияланған  у  айнымалысымен  динамикалық  байланыста. 
sum функциясын екінші рет шақырту 11 мәнін қайтарады. Өйткені, sum 
функциясындағы х формалды параметрі негізгі бағдарламадағы негізгі 
z параметрінің мәнін алады. Ал у еркін айнымалысы негізгі бағдарлама-
ның екінші блогында жарияланған у айнымалысымен байланысты sum 
функциясында 5 мәнін алады. Еркін айнымалыларды осылай байланы-
стыру және оны ішкі бағдарламаның шақырылған шаблонындағы тіз-
бектегі соңғы жарияланымға байланыстыру айнымалылыардың көріну 
аймағын динамикалық етеді. 
2.4.3 Айнымалылар типі
Айнымалылар көріну ережесі мен өмір сүру уақытының негізінде олар-
дың көрінуіне байланысты жіктелген. Қызмет ету мерзімі бар айныма-
лы жаһандық айнымалы деп аталады; қызмет ету мерзімі және үдеріс 

92
әрекетінің  облысы  бар  айнымалы  жергілікті  айнымалы  деп  аталады; 
ал салыынған үдерістік құрылымның сыртқы көріну деңгейінде жари-
яланған, бірақ салынған үдерістердің бірінде пайдаланылатын айныма-
лы жергілікті емес айнымалы деп аталады. Блок операторлар түрінде 
ұйымдастырылған бағдарлама талаптарын орындайтын блок-құрылым-
дық  тілдерде  айнымалылар  блокқа  қатысты  жергілікті  болуы  мүмкін. 
Айнымалылалырдың әрекет ету облысы олар жарияланған блок шегінде 
шектелген. 
Жергілікті  және  жергілікті  емес  айнымалылар  немесе  жаһандық 
және  жергілікті  айнымалылардың  аттары  арасында  біраз  қарама-қай-
шылықтар болуы мүмкін. Бұл қайшылық егер жергілікті айнымалы дәл 
сол  атаумен  аталған  болса,  жергілікті  немесе  жаһандық  айнымалыны 
көлеңкелеу (көрсетпеу) әдісімен шешіледі. Көлеңкелеу тұжырымы егер 
олар салымның әртүрлі деңгейінде жарияланған болса, жергілікті емес 
айнымалылардың көріну  аймағын өңдеуге жатады. Мұндай жағдайда 
салым деңгейінде жарияланған айнымалы айнымалының дәл сола ата-
уымен  аталған  жақын  ағымдағы  үдерісте  көрінеді,  ал  бірдей  атаумен 
аталған айнымалылар көлеңкеленеді.  
Айнымалылар  статистикалық  немесе  динамикалық  болады.  Ста-
тистикалық  айнымалылар  компиляция  кезінде  тіркелген  жадымен 
бөлінеді  және  бұл  жады  ұяшығы  бағдарламаны  орындау  барысында 
өзгермейді,  5-тарауда  сипатталғандай,  статистикалық  таралудың  ар-
тықшылығы ол қандай да бір көрсеткішсіз жадыға тез қолжетімді. Ста-
тистикалық айнымалылар- статистикалық айнымалылар облысы бар-
лық бағдарлама болған кезде жаһандық айнымалылар статистикасы 
немесе бағдарлама облысы ол жарияланған облыс шегімен шектелген 
болса,  статистикалық  жергілікті  айнымалы  болады.  Соған  қара-
мастан,  айнымалылардың  көріну  шегіндегі  жергілікті  облысқа  байла-
нысты мән үдеріс шегінен тыс жерде қолжетімді емес және үдерістің 
келесі шақыртылымында ғана қолжетімді болуы мүмкін. Динамикалық 
айнымалылар  –  орны  бағдарлама  орындалып  жатқанда  анықталатын 
және басқару стекына орналасатын айнымалылар. Жергілікті айныма-
лылардың көптеген жарияланымдары динамикалық жергілікті айныма-
лылар болып табылады және 5-тарауда сипатталғандай соның негзініде 
тілдерді қолдану үшін стеке орналасады. 
Жаһандық  айнымалылар  да  статистикалық  айнымалылар  сияқты  жа-
дыға тиімді қолжетімді орналасқан. Қалған айнымалылардың барлығы 
бағдарламалық блоктардың массивтеріне салынған, сондай-ақ блокта-
рынан  алынған  жағдайға  байланысты  шекті  көріну  аймағы  бар.  Жер-
гілікті айнымалылар олар жарияланған блок шегінде ғана көрінеді. Жер-

93
гілікті айнымалылар үдеріс деңгейінде үдеріс шегінде ғана көрінеді. 
Нысанды-бағдарлы  тілдерде  айнымалылар  кластарға  бөліне  алмайды, 
олар класстың барлық түрінің арасында таралады. Мұндай айнымалы-
лар айнымалы класстар деп аталады. Айнымалы кластардан өзге жа-
салған нысан үшін мүмкіндігі шектелген нұсқа айнымалылары бар. 
Айнмалылардың  басқа  жіктелуі  алдында  айтылғандай  өзгергіштікке 
негізделген.  Өзгергіш  айнымалы  қанша  рет  болса  да  қайта  құрылып, 
жаңара  береді.  Ал  өзгермейтін  айнымалының  тек  бір  рет  белгілен-
ген қасиеті бар. ол мәнмен байланған екен, ешқашан өзгермейді және 
бағдарламалау  жолымен  шешіп  алынбайды.  Соған  қарамастан,  өзгер-
мейтін айнымалылар қайтарумен іздеу, логикалық бағдарламалау пара-
дигмасын қолдану сияқты қолдану механизмдерімен шешіліп алынуы 
мүмкін. 
2.4.4 Қабықша және Сақтаушы
Бағдарламаны  орындауда  екі  абстарктылы  құраушы  пайдаланылады: 
қабықша және сақтаушы. Қабықша – бұл есептеу жүретін аймақ.  Қа-
бықша түрлер жұбының жиынтығы (жады ұяшықтарындағы айнымалы-
лар аты ↦айнымалылар атрибуты) немесе константаны жариялау (аттар 
идентификаторы↦мән) жағдайында анықталады. Жаңа жарияланымдар 
қабықшаны  (1)  түр  идентификаторының  жаңа  байланыстырғышын 
құру↦ жады ұяшығы немесе мән идентификаторы және (2) жергілік-
ті  айнымалылармен  қайшылықты  атауы  бар  жергілікті  емес  немесе 
жаһандық айнымалылардың байланысын көлеңкелеу арқылы өзгертеді. 
Ішкі  бағдарламаны  шақырғаннан  кейін  қабықша  өзгереді.  2.17-сурет-
те  көрсетілгендей  ішкі  бағдарламаның  ағымдағы  қабықшасы  (1)жер-
гілікті айнымалыларды жады ұяшықтарына байланыстырудан  (2) жер-
гілікті емес айнымалыларды жады ұяшықтарына байланыстырудан (3) 
жаһандық айнымалыларды жады ұяшықтарына байланыстырудан және 
(4) сілтеме  параметрлерін  пайдалана  отырып  қолжетімді  шақырғыш
бағдарламалармен  тізбектегі  жады  ұяшығынан  тұрады.  Шақырылған
ішкі бағдарлама аяқталғаннан кейін қабықша оларды құрған шақырғыш
ішкі  бағдарламаның  шегінен  тыс  өмір  сүре  алатын  динамикалық  ны-
сандар мен рекурсивті мәліметтердің құрылымынан жасалған қосымша
қабықшалы ішкі бағдарламаны шақырылған ішкі бағдарлама аяқталған
соң, қабықша оларды құрған ішкі бағдарлааның өмір сүру уақытының
шегінен артық мерзімі бар динамикалық нысандар мен мәліметтердің
рекурсивті құрылымдарымен жасалған қабықшамен толтырылған ішкі
бағдарламаны шақыруға болатын ортаға қайтып келеді.
Сақтаушы – түрлердің байланған жиыны (жады ұяшығы ↦ мән) және

94
ол меншіктеу операторы мәнді жады ұяшығына жазып, мән жүктелген 
кезде немесе мән параметрлер берілісінен өзгерген кезде өзгереді.  
Environment due to global variables – Қоршаған орта жаһандық айныма-
лыларға  байланысты;  Environment  due  to  reference  parameters  pointing 
to locations in the calling procedures – Қоршаған орта шақырушы рәсім-
дердегі орындарға көрсететін анықтамалық параметрлерге байланысты; 
Environment due to nonlocal variables – Қоршаған орта жергілікті емес 
айнымалыларға  байланысты;  Environment  due  to  local  variables  -  Қор-
шаған орта жергілікті айнымалыларға байланысты.
2.17-сурет. Ішкі бағдарламада атқаруға арналған қабықша.  
Иелену операциясы келесіде сақталған мәндерді жаңартуы мүмкін: 
1. Жергілікті, жергілікті емес немесе жаһандық айнымалылармен бай-
ланысты жады ұяшықтары.
2. Параметр  сілтеме  параметрі  ретінде  берілген  кездегі  шақырылған
ішкі бағдарламалардағы айнамалылардың жады ұяшықтары.
3. Шақырылған бағдарламадағы жүктемедегі формалды параметрлердің
жады ұяшықтары.
4. Шақырылған ішкі бағдарламаларда есептелген нәтижелерді беру жо-
лымен өзекті параметрлердің жады ұяшықтары.
5. Мәліметтердің рекурсивті құрылымдары немесе мәліметтердің дина-
микалық нысандарының жады ұяшықтары.
Үдеріс  шақырылғаннан  кейін,  қабықша  да,  сақтауыш  да  шақырылған 

95
үдерістің ішінен өзгеріс алады. Сақтауыш (1) параметрлер мәнінің өтуі-
нен немесе (2) жергілікті айнымалылардың жүктелуі себепті өзгереді. 
Шақырылған  үдеріс  аяқталған  соң  жергілікті  айнымалылар  (шақы-
рылған  ішкі  бағдарламада)  құрған  орта  жоғалады;  шақырыған  ішкі 
бағдарламаның мұрағат ортасы қалпына келіп және шақырылған ішкі 
бағдарламаның қызмет ету мерзімінің шегінен тыс мерзімі бар мәлімет-
тердің  рекурсивті  құрылымдары  мен  динамикалық  нысандар  үшін 
құрылған жалпы айнымалылардың қабықшаларымен және жаңа қабық-
шалармен толықтырылады. 
Сақтаушы сілтеме параметрі ретінде берілу кезінде жаһандық айныма-
лылардың, жергілікті емес айнымалылардың және шақырту үдерісінде-
гі айнымалылардың  жойылып жаңаруы себепті осы айнымалылардың 
жаңа мәнді меншіктеуі шақырылған үдерістің сақтаушысын жаңартып 
отырады және бұл өзгерістер шақырылған үдеріс аяқталғаннан кейін де 
сақталып қалады. Әрі қарай біз сақтаушыдағы қандай өзгеріс бағдарала-
маның қарастырылмаған бұзу әрекеттерін тудыратынын қарастырамыз. 
2.4.5 Функциялар мен Үдерістер
Әрі қарай біз өрнек пен командатар, сондай-ақ функциялар мен үдері-
стердің арасындағы айырмашылықтарды қарастырамыз. Өрнек жады-
дағы бір немесе бірнеше мәнді оқып, оны бағалайды. Соған қарамастан, 
ол  есептеу  мәнін  кері  жадыға  жазбайды.  Бұл  дегеніміз,  өрнекті  есеп-
теу  кезде  сақтаушы  өзгеріссіз  қалады  деген  сөз.  Сақтаушыдан  айыр-
машылығы  команда  мәліметтерді  сақтаушыны  өзгерте  отырып  жады 
ұяшығына жазады. Мысалы, x+y+ 4 өрнек болып табылады, ал меншік-
теу нұсқаулығы zxy+ 4 команда болып табылады. x+y4 өрнегінде 
процессор жадыдағы  х және у айнымалыларының мәнін есептейді. Со-
дан кейін өрнекті есептейді. Салыстыру үшін z=x+y+4 меншіктеу нұсқа-
улығы xyөрнегінің есептеу нәтижесін  z айнымалысына сәйкес ке-
летін жады ұяшығына жазады.
Функцияның төрт құраушысы бар:  (1) функцияның аты, (2) кіріс па-
раметрлер, (3) айнымалыларды жариялау және (4) шығыс дабыллдары-
ның мәнін кіріс мәндерде көрсету үшін байланысқан өрнектер жиыны. 
Функцияның бағдарламаның сақтаушысына кері жазба жазатын «мен-
шіктеу» нұсқаулығы жоқ. Салыстыру үшін үдерістің бір немесе бірнеше 
меншіктеу нұсқаулығы болады. 
Императивті  бағдарламалау  парадигмасында  бағдараламалау  үдерісін 
меншіктеу операторларын пайдаланбай жүргізу мүмкін емес. Меншік-
теу операторы бар функция – бұл функция әсерін беретін нақты үдеріс.

96
2.4.6 Бағдарламаны орындауды дерексіздендіру. 
Бағдарламаны  атқару  бағдарлама  соңғы  шартты  қанағаттандыратын 
соңғы  күйге  жеткенше  бір  есептеу  күйінен  екінші  есептеу  күйіне  өт-
кен сияқты дерексізденуі мүмкін. Есептеу күйінің моделіне екі әдіс бар. 
Есептеу күйінің моделінің бірінші әдісі σ мына белгілердің үштігі си-
яқты көрінеді (σE, σS, σD), мұндағы σE таңбасы қабықша, σS таңбасы 
сақтаушы ал σD таңбасы шақыртудың түсу ретіне кері шақырту ішкі 
бағдарламасы тізбегінің жұбындағы стек (шақырған үдерісте шақырған 
үдеріс талап етілмейтін (немесе созылатын) қабықша бөлігі, шақырушы 
ішкі бағдарламадағы сақтау бөлігі шақырған үдерісті бөлмейді). Есеп-
теу күйінің екінші әдісі логикалық НЕМЕСЕ, логикалық ЖӘНЕ, тері-
стеу  және  импликация  сияқты  логикалық  операторларды  пайдаланып 
логикалық  аксиомаларды  біріктіретін  бульдік  өрнек  ретінде  көрінеді. 
Бульдік өрнек меншіктеу операторы орындалған сайын өзгеріп тұрады. 
Екінші әдіс фон Нейман машинасына тәуелді емес және 3-тарауда кел-
тірілгендей бағдарламаның дұрыстығын талқылау және 4-тарауда көр-
сетілгендей соңғы күйден бастап бағдарламаны сатылап қайта құруда  
пайдаланылады. 
2.4.6.1 Үштік сияқты есептеу күйі (Қабықша, Сақтаушы, Дамп)
Есептеу  күйінің  бірінші  әдісінде  σ  нұсқаулықты  орындаған  соң  өзге-
реді: (1) шақырылған мәлімдеудегі  σE, қабықша өзгереді; (2) меншіктеу 
операторымен  немесе  инициализациямен  шақыртылған  σSбелгілен-
ген сақтаушының өзгеруімен; немесе  (3) функцияны немесе үдерісті 
шақырту себепті σD белгіленген дамптың өзгеруімен.  Мәлімдеу опе-
раторынан кейін ағымдағы σE қабықшасы σ'Eболады, ал есептеу күйі 
өзгереді. Меншіктеудің жаңа операторынан кейін  σS сақтаушысы жаңа 
σ’S сақтаушыға өзгереді және есептеу күйі де өзгереді. 
Үдерісті шақырғаннан кейін түр жұбы жаңа  (σ’E, σ’S, σ’D) есептеу күйін 
беру үшін (шақыртушы үдерістегі қабықшаның бөлігі және шақыртушы 
ішкі бағдарламадағы сақтаушы бөлігі шақырылған үдеріспен бөлінбей-
ді) σD дампқа итеріледі. Функциядан немесе үдерістен қайтқаннан кей-
ін қабықша шақырылған үдерістегі жергілікті айнымалылармен жаңару 
жолымен  лақтырылып,  ал  қабықшаның  басқа  және  итерілген  бөлігін 
біріктіру σEnew қабықшаны береді. Шақырту үдерісінің жаңа қабықша-
сы σEnew егер шақырылған ішкі бағдарламаның өмір сүру уақытынан  
артық  өмір  сүру  уақыты  бар  құрылым  болмаса  ескі    σEтүрінде  қала 
береді. Сақтаушымен де дәл осылай болады. Шақыртылған үдерістегі 
жергілікті айнымалымен байланысқан сақтаушы лақтырады, ал шақы-
ртылған үдерістегі сақтаушының қалған бөлігі және дамптан алынған 

97
шақырылған  үдерістің  сақтаушысының  бөлігі  шақырту  үдерісіндегі 
жаңа   σSnew сақтаушы болады. Назар аударыңыздар, σSnew σSсақта-
ушысы сияқты бола алмайды. Әрине, бұл күй бағдаралама сәтті орын-
далғанда алынады.  
2.20-мысал
2.18-суреттегі мысалды қарастырайық. Бағдарламаның үш айнымалысы 
бар: x,y,zx және y айнымалыларының жаһандық көріну облысы бар, ал 
z айнымалысы негізгі бөлікке қатысты жергілікті болады. негізгі бөлік 
барлық үш айнымалының мәнін иемденеді және x  және y айнымалыла-
рының сілтемелерін беру арқылы Swap (айырбас) функциясын шақыра-
ды. Айырбас денесіндегі ‘*’ дескриптор адресті қайта атап және сәйкес 
х және у жаһандық айнымалысын қамтамасыз ететін жады ұяшығында 
оқиды  (немесе жазады). Айырбас үдерісі x және y жаһандық айныма-
лылардың мәндерінің орнын ауыстырады. 
Бастапқы  есептеу  күйі  {<>,  <>,  <>}:  қабықша,  сақтаушы  және  бос 
дамптар. х және у жаһандық айнымалыларын жариялағаннан кейін  х 
идентификаторы л-мән1 адресда көрінеді, ал у идентификаторы л-мән2 
адресінда көрініс табады. Ал қабықша . Жаңа 
есептелген күй:
{, <>, <>}. Негізгі бөліктің ішіндегі z бүтін саны 
айнымалысын жариялау қабықшаны өзгертеді: 
<(x↦л-мән1,y↦л-мән2,z↦л-мән3>  Жаңа  есетелген  күй:  {<(x↦л-
мән1,y↦л-мән2,z↦л-мән3>, <>, <>}.  Меншіктеудің  әрбір  үш  опера-
торын  орындағаннан  кейін  сақтаушы  есептеу  күйінің  өзгерісін  өзгер-
теді. х = 4 меншіктеу операторы орындалғаннан кейін  жаңа сақтаушы 
<л-мән1↦4>,  ал  жаңа  есептеу  күйі:    {<(x↦л-мән1,  y↦л-мән2,  z↦л-
мән3>,  <л-мән1  ↦4>,  <>}.  y  =  10  және  z  =  12  операторларын  орын-
дағаннан  кейін  есептеу  күйі:    {<(x↦л-мән1,y↦л-мән2,z↦л-мән3>,<л-
мән1↦4,л-мән2↦10,
л-мән 3 ↦12>, <>}.
Айырбас  үдерісін  шақырту  негізгі  бағдарламаның  жергілікті  бөлігін 
дампқа  итереді,  ал  m  және  n  идентификаторлары  сәйкесінше    л-мән4 
және л-мән5 адрестерінде көрініс табады. л-мән4 орны сілтемеге сәйкес 
л-мән1 орнында көрініс табады: л-мән5 орны сілтемеге сәйкес л-мән2 
орнында көрініс табады. х және у жаһандық айнымалылар үшін қабық-
ша және сақтаушы сақталады. Ал негізгі бөліктің жұптары (сақтаушыға 
сәйкес  жергілікті  айнымалыларға  арналған  қабықша)  дампқа  орна-
ласады.  Айырбас  үдерісіндегі  жариялаудың  алдындағы  есептеу  күйі: 
{

98
2.18 сурет. Есептеу күйінің бейнесінің бағдарламасы.  
y  l  -мәні2,m↦  l  -мәні4,n↦  l  -мәні5>,  <  l  -мәні14,  l  -мәні210,  l 
-мәні4л-мәні1, l -мәні5↦ l -мәні2>, < (<z l -мәні3>, < l -мәні312>)>}.
Үлгі "integer temp" хабарламасы түрін өзгертеді, және оның жаңа түрі
мынадай: <x l -з мәні1,y l -мәні2,m l -мәні4,n l -мәні5, үлгі
l -мәні6> Есептеу жағдайы тиісті үлгіде өзгереді. temp= *m мәнін бе-
ретін оператор мекенжай бойынша тұрақсыз мәнді қосады: l -мәні6  есте
сақтау ұяшығы l -мәні1 есте сақтау ұяшығында сақталған мәнмен салы-
стырылады  және  жаңа қойма < l - мәні1 → 4, l - мәні2 → 10, l - мәні4 
l - мәні 1, l - мәні 5→ l - мәні2, l - мәні6 4> түріне  айналады.  Тұрақсыз
мән 4-мәніне қолжеткізу үшін l -мәнімен 4→ l -мәні1 және l -мәні1
4 арасындағы функцияның транзитивтігін пайдаланады. *m= *n  мәнін
беретін оператор l -мәнінің1,  орналасқан жеріне n тұрақсыз мәнін жа-
зады және жаңа қойманың түрі мынадай < l- мәні1 → 10, l - мәні2 → 10,
l - мәні4 → l - мәні1, l - мәні5 → l - мәні 2, l - мәні6 → 4>. *ntemp  мәнін
беретін оператор  l -мәнінің2 тұрақсыз орналасқан жеріндегі үлгі мәнін
жазып отырады.  Жаңа қойма < l - мәні1 → 10, l - мәні2 → 4, l - мәні4
→ l - мәні1, l - мәні5 → l - мәні2, l - мәні6 → 4> мәніне айналады. Мән-
дермен алмасу ішкі бағдарламасына кері қайтарылғанға дейінгі есептеу
жағдайы: {<x l- мәні1, y l- мәні2,m l- мәні4,n→ l- мәні5, үлгі 
l- мәні6>, < l-з мәні1 → 10, l - мәні2 → 4, l - мәні 4 → l- мәні1, l- мәні 5
→ l - мәні2, l- мәні64>, < (<z l- мәні3>, < l- мәні312>)>}. Мәндер-
мен алмасу рәсімінен кері қайтарылғаннан кейін, жергілікті қабықшасы
және  мәндермен  алмасу  рәсімнен  арналған  тиісті  қойма  қабықшадан
және  қоймадан  жойылады,  ал  негізгі  бөлігінің  жергілікті  қабықшасы

99
мен қоймасы дамптан алынып таслады, яғни дамп қайтадан бос күйін-
де қалады. Мәндермен алмасу рәсімінен қайтарылғаннан кейінгі жаңа 
есептеу жағдайы мынадай  {<x→ l- мәні1,y→ l- мәні2, z l- мәні3>, < 
l- мәні110, l- мәні24, l - мәні312>, <>}.
2.4.6.2 Булев предикат ретінде есептеу жағдайы
Екінші  әдісте  есептеу  жағдайын  білдіретін  логикалық  мәні  мән  беру 
операторы  орындағаннан  кейін  өзгереді.  x=  5  мәнін  беретін  оператор 
x== 5 баяндауышын ақиқат мәнге айналдырады. y= 6 операторын орын-
дағаннан  кейін  конъюнктивті  баяндауыш    x==5^y==6  ақиқат  мәніне 
айналады.  Мұндай  әдіс  оны  қандай  да  бір  нақты  құрылымнан  босата 
отырып, бағдарламаның орындалуын көру үшін қажет, және олардың 
дұрыстығына арналған бағдарламаларды талдау үшін қолданылады.

Достарыңызбен бөлісу:
1   ...   5   6   7   8   9   10   11   12   ...   26




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

    Басты бет