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



Pdf көрінісі
бет8/26
Дата20.12.2019
өлшемі6,26 Mb.
#53875
1   ...   4   5   6   7   8   9   10   11   ...   26
Байланысты:
Бағдарламалау тілдеріне кіріспе (1)


2.3.6 Бағаналар
Бағаналар  негізінен  (V,  E)  жұбы  ретінде  анықталады.  Мұндағы V  тө-
белер  жиыны,  ал  Е  қабырғалардың  мультижиыны.  Бағдарланбаған 
бағанада қабырғалар (vi, vj) жұбы ретінде моделденген, мұндағы vi, vj  

    V  төбелер болып табылады. (vi, vj) ∈ E жұбы vi  және vj төбелер 
арасындағы байланысты көрсетеді. Екі түйіннің арасында біреуден ар-
тық қабырға болуы мүмкін. Жол – бұл соңғы түйінді белгілеу түйінімен 
жалғастыратын қабырғалар тізбегі. Екі түйіннің арасында біреуден ар-
тық жолдар болады.   
Бағдарланбаған  бағанада  (vi,  vj)  қабырғаның  болуы  симметриялы  қа-
бырға  (vj, vi) бар екенін білдіреді. Қабырғалардың бағыты бар бағдар-
ланған  бағанада  қабырға  реттелген  (vi,  vj)  жұп  ретінде  моделденеді. 
Ал  (vi, vj) болуы (vj, vi) қабырғаның бар екенін білдірмейді. Өлшен-
ген  бағананың  қабырғалармен  байланысқан  салмақтық  коэффици-
енттері  бар.  Өлшенген  бағанадағы  қабырғалар  (vi,  vj,  весij)  түріндегі 
үштік ретінде моделденеді. Мұндағы  ij қабырғаның салмағы. Өлшенген 
бағдарланбаған бағанада өлшенген (vi, vj, вес ij) қабырғаның болуы (vj, 

77
vi,весij) бар екенін білдіреді; симметриялық қабырғалардың салмақтары 
бұрынғыдай қалады. Өлшенген бағдарланған бағанада  (vi, vj, весij) фор-
малы өлшенген қабырғаның болуы дәл сондай салмақты, бағыты қара-
ма-қарсы симметриялы қабырғаның бар екенін білдіреді. Байланысқан 
бағана – бұл транзитивті қатынас. Егер vi  түйіні vj –мен байланысты 
болса, ал vj  түйіні vk-мен байланысты болса, онда  (vi, vk) анық қабырға-
сы болмаса да, vi  түйіні vk түйінімен байланысты. Бұл қасиет мәлімет-
тер элементінің рекурсивті мәліметтер құрылымындағы қолжетімділігі 
тұрғысынан маңызды мәнге ие. 
2.12-мысал.
2.9  суретте  бағдарланбаған  өлшенген  бағананы  пайдаланып,  Құрама 
Штаттардағы  қалалар  арасындағы  жолдар  мен  қашықтықтардың  бай-
ланысы бейнеленген. Қалалар түйіндер арасында бірнеше қабырға алу 
үшін темір жол хабарламалары немесе әуе хабарламалары арқылы бай-
ланысуы мүмкін. Соған қарамастан, біз бұл бағанадағы тек сол сілте-
мелерін ғана пайдаланамыз.  Бағаналар бағана түйіні (немесе төбелер) 
көрсетілген  алты  қаланың  бар  екенін  көрсетеді.  Ал  олардың  арасын 
байланыстыратын жолдар төбелер арасындағы өлшенген қабырғаларды 
пайдаланып көрсетілген. Мұндағы салмақ қалалар арасындағы жолды 
миль есебімен көрсетеді. 
Бағана  кезеңденбеген  –  оның  кезеңі  жоқ;  егер  түйіннен  бастаса,  онда 
әртүрлі екі қабырғалар тізбегін пайдаланып ешкім сол түйінге жете ал-
майды. Ағаш – кезеңденбеген бағана. Бағана кезеңденген. Егер ең аз де-
генде бір түйіннен бастасақ, біз қабырға қайталанбайтын жолды пайда-
ланып дәл сол түйінге жете аламыз. Мысалы, 2.9-суретте байланысқан 
бағанадағы көптеген кезеңдер бар: <(Сиэтл, Кент), (Кент, Вашингтон 
Колумбия аймағы).
Seattle, WA – Сиэтл, штат Вашингтон; Kent, OH – Кент, штат Огайо; New 
York, NY – Нью-Йорк, штат Нью-Йорк; Washington, DC – Вашингтон, 
Дистрикт Коламбия; Dallas, TX – Даллас, штат Техас; Los Angeles, CA – 
Лос-Анджелес, штат Калифорния.
2.9-сурет. Өлшенген бағдарланбаған бағана мысалы.  

78
Partially shared data structure - Ішінара ортақ деректер құрылымы.
2.10-сурет.  Жалпы  ақпараттық  түйінді  бағдарланған  кезеңденбеген 
бағананы моделдеу.  
(Вашингтон  Колумбия  аймағы,  Даллас),  (Даллас,  Лос-Анджелес), 
(Лос-Анджелес, Сиэтл)>. Дәл осындай басқа кезең<(Кент, Нью-Йорк), 
(Нью-Йорк, Вашингтон, Колумбия аймағы), (Вашингтон, Колумбия ай-
мағы, Кент)>.
Бағаналардағы  кезеңдерді  анықтау  маңызды  мәселе.  Кезеңді  анықтау 
үшін бұрын барған түйіндерді сақтау керек. Сондықтан қатыстылықты 
тексеру бұрын барған түйіндер қарастырылды ма, соны тексеруге пай-
далануылуы мүмкін. Қатыстылықты тексеру 2.3.9 бөлімде сипатталған-
дай хештеуді пайдаланып, анық емес атқарылуы мүмкін. Бағдарламалау 
тілдерінде бағаналар 2.13-мысалда келтірілгендей мәліметтердің жал-
пы құрылымын көрсету үшін пайдаланылады. Бағаналар сондай-ақ  (1) 
бағдараламалар операторларының арасындағы ақпараттық ағын моделі; 
(2) жадыны пайдалану кезінде хипте мәліметтердің қандай ұяшығы пай-
даланылғанын анықтау үшін; (3) тапсырманы шешу кеңістігін моделдеу
үшін; және (4) бағдарламалаудың функционалды тілдерін жүзеге асыру
үшін пайдаланылады.
2.13-мысал.
2.10-суретте  өз  мәліметтер  құрылымының  бөліктерін  айырбастаудың 
үш байланысқан тізімі келтірілген: бірінші байланысқан тізім A1, A2
A3, A4төрт ақпараттық түйіннен тұрады; екінші байланысқан тізім B1
B2, A3, A4 ақпараттық түйіндерден тұрады;ал үшінші байланысқан C1
A4  ақпараттық  түйіндерден  тұрады.  Бірінші  және  екінші  мәліметтер 
құрылымы  екі  ақпараттық  түйінді  бөледі:  A3  және  A4;  бірінші,  екін-
ші және үшінші мәліметтер құрылымы жалпы  A4 ақпараттық түйінді 
бөледі.

79
2.3.7 Іріктеп алу әдісі
Есептеу күй кеңістігінде іздеу мәселесі сияқты моделденуі мүмкін. Күй 
кеңістігіндегі мәселенің бірнеше есептеу күйі бар және әрбір есептеу 
нұсқаулығы машинаны бір есептеу күйінен келесі есептеу күйіне ауы-
стырады. Есептеу күй кеңістігіндегі бағана ретінде моделденуі мүмкін. 
Іздеудің  әртүрлі  әдістері  негізгі  екі  категорияға  жіктелуі  мүмкін:  (1)  
Есептеу  күй  кеңістігінде  бағана  түрінде  моделденуі  мүмкін.  Іздеудің 
әртүрлі әдістері негізгі екі категорияға жіктеледі: (1) іріктеп алу әдісі 
және (2) эврастикалық іздеу. Іріктеп алу әдісінің сызбасы мақсат табыл-
майынша бағана күйінің кеңістігіндегі барлық түйіндерді іздейді. Мақ-
сатты түйін – бұл қалаулы соңғы шартқа ие күй. Іріктеп алу әдісі егер 
іздеу кезеңге кірмеген болса, шешім алуға кепіл болады. Ағаштардағы 
немесе бағаналардағы іріктеп алу әдісіне екі негізгі әдіс бар:  тереңдігін 
іздеу және енін іздеу. 
Эвристикалық іздеу ағымдағы күйдің соңғы күйге қарай қозғалысының 
күйін және бағытының қашықтығы мен жақындығын бағалау үшін ма-
тематикалық функцияларды пайдаланады. Эвристикалық іздеу іріктеп 
алу әдісіне қарағанда тиімдірек, бірақ ол шешімге кепілдік бере алмай-
ды. Бағдарламалау тілдерінің тапсырмаларының көпшілігі іріктеп алу 
әдісін қолданады. Ал жасанды интеллект эвристикалық іздеуді қолда-
нады. 
2.3.7.1 Тереңінен іздеу
Тереңдігін іздеу берілген рет бойынша ағашты түйінге айналып өтеді. 
Әдетте солдан оңға қарай. Мұндай іздеу стекті оң жақ бұтақтарға ауы-
стыруды жеңілдету үшін ақпаратты сақтау үшін пайдаланады. Іздеу түп-
кі түйіннен басталады және ойналып өту үшін соңғы сол жақ тармақты 
таңдайды. Зерттелмеген тармақтың түйінінде тамыры бар бұтақ зерт-
теліп жатқанда егер көрсеткіштер ағымдағы түйінге тағы қайтып кел-
месе көрсеткіштер үшін онда оң жақ бұтаққа қайтып оралу мүмкіндігі 
жоқ.  Керекті  бұтаққа  өтуді  жеңілдету  үшін  ағымдағы  түйіннің  адресі 
стекте  сақталады.  Стек  LIFO  режиміндегі  ақпаратты  сақтағандықтан, 
ағымдағы түйіннің аналығы айналып өткен кезде бірінші болып алына-
ды. Жапырақ түйінді айналып өткеннен кейін (бұтағы жоқ түйін) келесі 
түйін стектің жоғарғы бөлігінен алынады. Бұл стектен алу үдерісі және 
стектен зерттеу және келесі оң жақ бұтақты зерттеу алынған түйін үшін 
стек босап қалғанша және айналып өтетін тармақ қалмағанша жалғаса 
береді. Айналып өтетін бұтақ қалмаған кезде іздеу тоқтайды.  

80
2.14-мысал
2.11-суреттегі мысалды  қарастырайық. Көрсеткіш әуелі P0 түйінін ай-
налып  өтеді.  Бұл  кезде  стек  бос.  Алайда  P0    түйінінде  сол  жақ  және 
оң жақ тармақ бар. содан кейін P1 түйіні сол жақ еншілес түйін P0-дан 
айналып өтеді. Ал Р0 түйіннің адресі стекте сақталады. Бұл кейін Р2 
түйіннің айналып өтуі үшін жеңіл болады. Келесі түйін P3- P1-түйіннің 
сол жақ бұтағы айналып өтеді. Ал Р1 түйіннің адресі стекте сақталады. 
Ал стек былай болады: <адрес (P1), адрес (P0)>.  P3 түйіні жапырақты 
түйін болғандықтан, Р1 түйіні стектен P3 түйіннен айналып өткен соң 
алынады және оң жақ тармақ -  P4түйіні айналып өтеді. P1 түйінінен 
адресті алғаннан кейін стек келесі түрде болады: <адрес (P0)>.
P1 түйінінің басқа бұтақтары болмағандықтан Р4 түйінін айналып өткен 
кезде ешқандай ақпарат стеке орналаспайды. Р4 түйінін айналып өткен 
соң Р0 түйінінің адресі стектен алынып, стек бос болып қалады. Соған 
қарамастан, Р0 түйінінің оң жақ бұтағы айналып өту үшін қалады. Стек 
бос болып қалады. Өйткені Р2 түйінінің оң жақ бір деңгейлі элементі 
жоқ Р2 түйінін айналып өткен соң Р2 түйінінің адресі стекте сақталады 
ал  Р5  түйіні  айналп  өтеді.  Бұл  кезеңде  стек  мынадай  болады:  <адрес 
P2)>.
Р5 түйінін айналып өткен соң стек алынады. Р6 түйіні, Р2 түйінінің оң 
жақ бұтағы  айналып өтеді де, стек бос болып қалады. Р6 түйінін айна-
лып өткен соң стек босап қалады. Бір де бір қосымша түйін айналып 
өтуді қажет етпегендіктен іздеу тоқтатылады. 
Тереңінен  іздеудің  негізгі  артықшылығы  стектің  өлшемі  ағаштың  те-
реңдігімен шектелген, бұл уақытта ағаштың фокусталған бөлігінде ғана 
өтеді.  Соған  қарамастан,  тереңнен  егжей-тегжейлі  іздеу  цикл  кезінде 
білгілі  бір  уақытқа  тұрып  қалуы  мүмкін.  Циклді  анықтау  үшін  біраз 
уақыт кетеді және барлық барған түйіндерді сақтау үшін біраз жадының 
шығыны  болады  және  барған  түйіндердің  арасында  түйінге  тиістілік 
тексеріледі. Хэш-кесте циклдердің тиімді идентификациялау үшін пай-
даланылады. Соған қарамастан, мәліметтердің көп құрылымы үшін ай-
налып өткен түйіндерді сақтауға кеткен жадының қосымша шығындары 
өте көп.   

81
Stack – Стек.
2.3.7.2 Енінен іздеу
Енінен  іздеу  (2.12.  суретті  қараңыз)  ағашты  сол  жақтан  оң  жаққа  қа-
рай деңгейден деңгейге өту арқылы жүзеге асады және баруға арналған 
бұтақ түйіндерін сақтау үшін тізімді пайдаланады. Түпкі түйін (соңғы 

82
түйін) бастапқы кезеңге кезекке тұрады. Содан кейін кезектен бір эле-
мент  жойылған  сайын  жойылған  түйіннің  барлық  бұтақтары  артқы 
бөлікке кезекке тұрады. Бүл үдеріс кезек босап қалғанша жалғаса бе-
реді. 
 2.15-мысал.
2.12-суретте енінен іздеу көрсетілген. Көрсеткіш әуелі Р0 түпкі түйінге 
барады және  P1 және P2 түйіндерінің адресларын кезекке қояды. Содан 
кейін кезектен P1 түйіннің адресі жойылады және Р3 және Р4 бұтақта-
рының  адреслары  кезекке  қойылады  және  P1  түйініне  барады.  Содан 
кейін ол P2  түйінін кезектен жойып, P5 және P6 бұтақтардың адресла-
рын кезекке қояды.
Queue – Кезек.
2.12-сурет. Енінен іздеу мысалы.

83
P3, P4, P5, және P6  түйіндері жапырақ түрінде саналғандықтан, олар 
айналып өткенде ешнәрсе қойылмайды. Соңғы P6 жапырақ алынғаннан 
кейін барлық түйіндер айналып өткен соң, кесте бос болып қалады. 
Енінен іздеудің артықшылығы ол ағашты бір деңгейді бір рет қана айна-
лып өтеді. Енінен іздеудің көптеген кемшіліктері де бар. Еніне іздеу кез-
дегі қосымша жады өте үлкен. Ағашты айналып өту кезінде ол бұрынғы 
деңгейдегі терминалдық емес түйіндердегі барлық түйіндерді қамтып 
алады. Бұл санның көп болғаны соншалық, ол ағаштың теңгерімі кезін-
дегі жапырақтарыдң жартысындай болады. Алайда, егер тізім жадысы-
ның қосымша шығындарын тиімді басқару мүмкін болса, еніне іздеуді 
бағананы  тиімді  айналып  өту  үшін  пайдалануға  және  жадыны  хипте 
пайдаланудың тиімді сызбаларында пайдалануға болады.  
Two-dimensional array - Екі өлшемді массив; Translated to the list of one-
dimensional slices - Бір өлшемді кесектерінің тізіміне аударылған.
2.13-сурет. Екіөлшемді матрицаны бір өлшемді жадыға көшіру.  
2.3.8 Бірөлшемді жадыдағы мәліметтер құрылымының бейнесі. 
Бағдарлама құрылымдарды (жолдар жиынымен кортеж) мәліметтердің 
күрделі  нысандарын  моделдеу  үшін  немесе  көпөлшемді  массивтерді 
мәліметтер нысандарының жиынын моделдеу үшін пайдалану мүмкін. 
Массивтер  статистикалық  және  динамикалық  болады.  Статисти-
калық массивтер бұл шақырту үдерісі кезінде бір рет, содан кейін көп 
жадының бөлінуін талап етпейтін бөлінген жады. Динамикалық массив-
тердің өлшемі бағдарламаның орындалуына негізделіп, атқару кезінде 
өзгереді. Массивтер мен құрылымдарға қосымша C++, Java немесе C # 
сияқты нысанды-бағдарлы тілдерде және бағдарламалаудың басқа зама-
науи тілдерінде динамикалық нысандар болады.  Осы құрылымдардың 
барлығы ОЖ-да бейнеленген. ОЖ жады адресі бойынша индекстелген 
бір өлшемді массив ретінде абстракциялануы мүмкін. 
ОЖ-да көп өлшемді массивтерді бейнелеу үшін көпөлшемді массивтер 
бірөлшемді массивке аударылуы керек, ал ОЖ-дағы адреслар мәлімет-

84
тер құрылымының жалпы адресіне (бастапқы адреске) қосылуы мүмкін 
салыстырмалы адреске элементтің индекс мерзімін аударатын теңдеу-
дің көмегімен есептелуі мүмкін. Екі өлшемді массивті аудару үдерісін 
түсіну үшін біз әрбір қатарды (бағананы) жеке-жеке бірінен кейін бірін 
алып,  оларды  бірінен  кейін  бірін  2.13-суретте  көрсетілгендей  бір  өл-
шемдегі жолаққа орналастырамыз.   
Өлшемдері M × N екі өлшемді массив үшін a(i, j) элементінің адресін 
білу  тапсырмасы  2.1  теңдеуде  берілген.  Мұнда  массив  индексі  0-ден 
басталады. Оң жақтағы бірінші қосылғыш негізгі адрес - [0, 0] адрес   
болып табылады. Ал екінші қосылғыш орныны ауыстырады. Екінші қо-
сылғыштың бірінші элементі  i- қатар ағымдағы қатарға дейін болады, 
ал екінші қосылғыштың екінші элементі ағымдағы қатардың элемент-
терінің орын ауыстыруын көрсетеді. 
Address- Мекен-жай; Bytes in one element-Бір бөлшектегі бит.
2.16 мысал
M бүтін санның екі өлшемді матрицасын көрсетеміз. Оның өлшемі 5×6 
(5 қатар және 6 бағана). Біз  m[2, 4] облысында, №2 қатардағы, №4 
баға-надағы элементтің адресін табуымыз керек. Индекс 0-ден 
басталады деп есептейміз, ал  негізгі адрес m [0, 0] - 1000, және 32-
биттік бүтін санға төрт байт керек. 2.1 теңдеуді пайдаланып, m[2, 4] 
орналасқан жері 1000 + (2 × 6 + 4) * 4 = 1064. m[2, 4] элементе 
сақталған бүтін сан 1064 адресдан басталып, 4 байтқа тең болады. 
Бұл тұжырымдама бір өлшемді матрицаға келгенше аз екі өлшемді ма-
трицалардың тізбегі түрінде көп өлшемді матрицалар көрінісі ретінде 
біртіндеп кез келген туынды екі өлшемді матрицалардың 
элементтерінің картасына жалпылануы мүмкін. 
Мекен-жай=мекен-жай(m[0,…,0])+((i
1
*D
2
*…*D
N
)+…+(i
N-1
*D
N
)+i
N
)*
*бір элементтегі байттар
Бірнеше жолағы бар (жолақ 1, жолақ 2,…, жолақN) «құрылым» сияқты
композициялық құрылым алу үшін әр жолақтың орын ауысуы компиля-
ция кезінде есептеледі. Бұл жылжыту "i"-жолаққа қолжетімді болу үшін
негізгі адреске қосылады.

85
2.3.9 Хэш-кестелер 
Компиляция кезінде және бағдарламаны орындау барысында мәлімет-
терді  алу  өте  маңызды.  Статистикалық  массивтер  мәліметтер  эле-
менттерін алу үшін тұрақты әрекет етіп тұрғандықтан іздеу үшін кіріс 
мәліметтер  берілген  кезде  мәліметтер  элементін  алуға  жарамайды. 
Мәліметтер элементі индекс болып табылмайды бірақ жазба кілті бо-
лады. Хэш-таблицалар тұрақты уақытта кілт негізіндегі іздеуді қолда-
нады. Ол кезде индекс мәніне  <кілт>  кілтті көрсететін f хэш-функци-
ясын пайдаланады: f(<кілт>)  мәліметтер элементі сақталатын  сақтау 
индексіне тең. Хэш-кестелер бағдарламалау тілдерін моделдеу кезінде 
іздеуге тиімді болғандықтан пайдаланылады. 
Хэштеуге  негізделген  іздеу  кезіндегі  ең  басты  шектеу  кілттердің 
соқтығысу үдерісі  - екі кілттің индекстің бір мәнінде көрініс табуы бо-
лып табылады. Соқтығысу индексін өңдеу үшін кейбір әйгілі әдістер: 
(1) кесте өлшемін жай сан ретінде алу және осы жай санды индексті алу
үшін  хэш-функцияда  қолдану.  Хэш-функцияларды  жай  сандарға  бөлу
кілттерді хэш-кестелерге соқтығысу ықтималдығын төмендете отырып
біркелкі таратады; (2), бірнеше соқтығысатын кілттерді өңдеу үшін бел-
гілі  бір  индекске  бекітілген  байланысқан  тізімді  пайдалану;  және  (3)
соқтығысу кезінде хэш-кестелерді кеңейту және қайта хэштеу немесе
хэш-кестеде элементтердің жинақталуы шектік мәннен асып кетеді.
2.17 мысал
2.14 сурет 6 айнымалыдан және олардың белгілерінен тұратын жиынды 
сақтау үшін пайдаланылатын өлшемі 11 хэш-кестенің мысалын көрсе-
теді.  Үш процедура бар: p0, p1, және p2p0 процедурасының х айны-
малысы  бар;  p1  процедурасының  s,  i,  және  j  айнымалылары  бар;    р2 
процедурасының a және i айнымалылары бар. Атаулардың сәйкеспей 
қалуын болдырмау үшін прцедураның атауы префикс ретінде айныма-
лымен бірге жазылады. Мысалы, р0 –дегі х айнымалысының кілті p0x
p1 –дегі si, және айнымалылары үшін кілт p1s, p1i,  және p1j сәйкесін-
ше; р2-дегі а және i айнымалылар үшін кілт p2a және p2i. Енді барлық 
кілттер сәйкеспейтін аттары бар айнымалылар үшін де бірегей болды. 
Мәліметтердің  әрбір  элементі  осы  үштікте  көрініп  тұр  (идентифика-
тор, типі, жады ұяшығы). Алты үштік мыналар: {(p0x, int, L1), (p1s, 
Bool, L2), (p1i, int, L3), (p1j, int, L4), (p2a, int, L5), және (p2i, int, L6)}.
Кілтті  бейнелейтін функция бізге (1) кілттегі 'а' -дан 'z' –ке дейінгі таң-
басыдардың реттік мәндерін солдан оңға дейін суммалау үшін керек; (2) 
кілтке цифрлар мәнін қосу; (3) жай сан болып табылатын кестенің 11 
өлшеміне суммаларды бөлу үшін керек. Байланысқан кілттер кілттердің 

86
соқтығысуын болдыру үшін пайдаланылады. 
2.14-сурет.  Сәйкессіздіктерді  шешу  үшін  байланысқан  тізімді  хэш-ке-
стенің мысалы.  
Мысалы, p0x атауында үш таңбасы бар. Ол реттік мәні 16 болатын  'р', 
цифры, мәні 0 болатын  '0' цифры және  реттік саны 24 болатын 'х' таңба-
сы. Осы мәндерді қоссақ 40 мәнін аламыз, ал өлшемі бойынша 11 кесте-
ге бөлсек, 7 индексінің мәнін аламыз. p1s кілті 3 индексінің мәнін бей-
нелейді. p1i кілті 4 индексінің мәнін бейнелейді. p1j кілті 5 индексінің 
мәнін бейнелейді. p2a кілті 8 индексінің мәнін бейнелейді. Ал p2i кілті 5 
индексінің кілтін бейнелейді. p1j және p2i кілттерінің соқтығысуы бай-
ланысқан тізімдерді пайдаланып шешіледі. 
2.4 ЕСЕПТЕУ БАРЫСЫНДА АБСТРАКТІЛІ ҰҒЫМДАР ҚОЛДА-
НУ
Бұл  тарауда  бағдарламалау  тілдерін  жасауда  пайдаланылатын  кейбір 
анықтамалық  түсініктер  сипатталады.  Бұл  түсініктердің  көп  бөлігі 
мәліметтер құрылымы және дискретті құрылымдар сияқты негіздер мен 
бағдарламалау курсының алдыңғы әртүрлі мәнмәтіндерінде кездескен. 
Осы негізгі түсініктер курс бойында көп рет қолданылды және бағдар-
ламалау тілдерін жасауда және болашақта пайдалануда нақты түсіндір-
мелерді қажет етеді. 

87
Бағдарлама  –  бұл  мәндік  нұсқаулықтардың  тізбегі.  Әрбір  осындай 
нұсқаулық сөйлем немесе өрнек деп аталады. Әрбір өрнек көп тілдер-
ге бөлушімен немесе жолдарды кейбір тілдерге аударумен аяқталады. 
Жадыға сақталған сөз кәдімгі ауызекі телге ұқсас бағдарламала тілінің 
бір бөлігі болып табылады. Жадыға сақталған өзіндік мәні бар екі сөз 
немесе екі айнымалы немесе кез келген екі нысан  бір-бірінен бос орын, 
үтір, нүктелі үтір, екі нүкте, бір қатарда тұру немесе жадыға сақталған 
сөздермен алшақ тұрады. Бұл сепараторлар бөлгіштер деп аталады.
Бағдарламаларда    литералдар,  r-мән,  l-мән,  идентификаторлар, 
анықтауыштар,  айнымалылар,  меншіктеу  операторлары,  нұсқау-
лықтар,  командалар,  өрнектер,  таңбалар  қатары,  типтерді  мәлім-
деу,  операторлар,  шақырту  үдерістері,  параметрлер,  белгілер  және 
секвенсорлар болады. Литерал – бұл өте кіші бөліктерге қосымша бөлі-
не  алмайтын  және  қайта  қаралмайтын  қарапайым  жазба.  Литералдар 
есептелген константалар, константалар және дескрипторлар ретінде 
де  белгілі.  Мысалы,  сан  литерал,  таңба  литерал,  тырнақшадағы  «Ар-
винд» есімі литерал. Алайда, қатарлар литерал емес: қатарлар таңбалар-
дың тізбегі болады; арнайы ақиқат және жалған мәндері литерал емес. 
Өйткені, оларды қайта қарастыруға болады. 
R-мән – бұл меншіктеу нұсқаулығының оң жағына пайдалануға рұхсат
берілген мән. L-мән – бұл айнымалымен немесе массив элементімен не-
месе құрылым ішіндегі жолақпен байланысқан жады облысы. Иденти-
фикатор басқа нысанмен байланыста болуы мүмкін бағдарламада қол-
данылатын таңбалы атау. Мысалы, бағдараламалар атауы, функциялар
атауы, айнымалылар атауы, константа атауы, қолданушы типі – бұлар
идентификаторлар. Анықтама блок шегіндегі немесе үдерістегі сәйкес
мәнді білдіреді. Анықтама компиляция кезінде сәйкес мәнмен алмасты-
рылады.
Айнымалы ақпараттық блокпен байланысты. Ақпараттық блок облы-
стық тип сияқты нақты облыстағы жай мәнмен, күрделі нысанмен
немесе  мәнммен  абстрактылы  облыста  болуы  мүмкін.  Нақты  мән
бағдарлама  жұмыс  істейтін  негізгі  мән.  Айнымалы  тип  типі  туралы
ақпаратты қамтиды. Мысалы, айнымалы тип абстрактылы доменнің то-
лық есептелген айнымалымен байланысуы мүмкін. Айнымалы типтің
түсінігі  полиморфты  –тарауда  түсіндіріледі.  Осы  сәттен  бастап,  және
әрі  қарай  біз  айнымалы  ретінде  нақты  мәндердің  мәнін  алып  жүруші
және ақпараттық типті алып жүруші тілдердегі айнымалы типін түсі-
неміз. Ішкі айнымалы компиляция кезінде жады ұяшығында бейнеле-
неді. Сәйкес жады ұяшықтары нақты мәнді немесе хип нысанындағы
көрсеткішті алып жүре алады.

88
Меншіктеу операторы х = у + 4 өрнектегі пайымдаудың оң жағында ай-
нымалының жады ұяшығындағы сақталған мәнді есептеген, алгебралық 
өрнекті  бағалаған  және  алынған  мәнді  пайымдаудың  сол  жағындағы 
айнымалының  жады  ұяшығына  сақталған  мәнді  жазатын  бағдарлама-
лаушының  пайымы.  Жоғарыда  келтірілген  операторда  айнымалының 
мәні сақтауыштан саналады, value-of(у) + 4 өрнегі есептеледі және өр-
некті есептеуді мәні х идентификаторына сай келетін жады ұяшығына 
сақталады. 
Команда дегеніміз кем дегенде соған құрылған бір меншіктеу операто-
ры бар басқару абстракциясы. Меншіктеу операторын пайдалану жаңа 
мән  кем  дегенде  командадағы  бір  жады  ұяшығына  жазылады  дегенді 
білдіреді. Командадан айырмашылығы көрініс өзіне тапсырма алмайды; 
көрініс жады ұяшығындағы мәнді есептеп, оны бағалайды.  
Қатар дегеніміз таңбалар тізбегі. Бос қатарда бір де бір таңба болмай-
ды. Типті жариялау нысандарды шынайы мәселелерде моделдеу үшін 
мәліметтер  қолданушы  көрсеткен  әдіспен  сақтала  алатындай  қолда-
нушы  анықтаған мәліметтер абстракциясын құру үшін пайдаланады. 
Соған қарамастан типті жариялау өздігінен жады ұяшығын құрмайды. 
Жады ұяшықтары тек айнымалы жарияланғанда ғана құрылады. 
Оператор арифметикалық немесе логикалық оператор болады. Опера-
тор унарлы (бір орынды) немесе бинарлы (екі орынды) болады. Унарлы 
операторларда  бір  операнды  бар,  ал  бинарлы  операторда  екі  операн-
ды  бар.  Арифметикалық  операторлар    '<'  (кем),  '>'  (артық),  '=  <'  (кем 
немесе тең), '> =' (артық немесе тең), '==' (тең), '<>' (тең емес), '= / =' 
(Прологтағыдай тең) болуы мүмкін. Сонымен қатар, қатардағы белгіні 
қамтамасыз ету үшін "+" және "-" унарлы операторлары бар. Логика-
лық ЖӘНЕ(∧), логикалық НЕМЕСЕ (∨), шығарушы НЕМЕСЕ (⊕) және 
шығыс операторлары сияқты бинарлы логикалық операторлар екі Буль 
өрнектерін жоғарыда айтылғандай ақиқат мәнін пайдаланып біріктіреді, 
ал  унарлы  оператор  аргумент  ретінде  бір  Буль  өрнегін  қабылдамай, 
ақиқат немесе жалған деген пікірді қайтарады.
Арифметикалық және Буль операторларының оператор артықшылығы 
бар: көріністі алғаннан кейін кейбір операторлар бірінші болып оңай-
ланады. Унарлы операторлардың бинарлы операторларға қарағанда ар-
тықшылығы көп; бинарлы операторда көбейту мен бөлу, қосу мен алуға 
қарағанда жоғары артықшылыққа ие. Дәл солай, «жоқ» (-) Буль унарлы 
операторның артықшылығы жоғары, одан кейін  логикалық «және» (∧), 
содан кейін логикалық НЕМЕСЕ (∨), содан кейін салдар (→).

89

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




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

    Басты бет