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



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


2.4.7 Процестер және Ағындар
Тіл қойылымдары мен параллельді бағдарламалау парадигмасын қол-
дайтын заманауи бағдарламалау тілдері процестер және ағындар ұғы-
мын  қолданады.  Бағдарламаның  немесе  ішкі  бағдарламаның  белсенді 
бөлігі  процес  деп  аталады.  Процесті  орындау  жағдайын  сақтау  үшін 
бульдік жалаушалар мен басқа да процестермен қарым-қатынас жасау 
үшін процестің жеке меншік идентификаторы, хип, стек және жады са-
ласы болады. Процес жады блогында сақталады. Процеске тиісті жады 
блоктары  процесті  орындау  үшін  қатқыл  дисктен  ЖСҚ-на  жүктеледі. 
2.19-суретте  көрсетілгендей,  процесс  мынадай    бес  жағдайда  болуы 
мүмкін: құрылды, дайын, белсенді, берілді  және тоқтатылды. Белсенді 
процесс (1) жоспарлау стратегиясына сүйене отырып, процеске мүмкін-
дік беру үшін; (2) кіру/шығу аяқталғанға дейін күту үшін; немесе (3) 
орындау кезінде командаға сүйене отырып белгілі бір уақытта процеске 
тоқтау мүмкіндігін беру үшін тоқтатылады..  Тоқтатылған процесс кіру/
шығу операцияларынан деректер қол жетімді болғаннан кейін немесе 
жоспарлаушы процеске қатысты тағы бір айналымды берген кезде іске 
қосылады.

100
Created – Құрылды; Start – Басталды; Active – Белсенді; I/O request – 
I/O  сұрау;  Scheduler  suspends  –  Жоспарлаушының  тоқтауы;  Suspended 
- Тоқтата тұру; I/O received – I/O алынды; Ready – Дайын; Scheduled –
Жоспарланды; Abort – Тоқтату; Terminated – Аяқталды; Finish – Аяқтау.
2.19-сурет Белгіленген ауысуларды қамтитын процес жағдайының диа-
граммасы.
Ағын  әрекеттердің   реттілігін  білдіреді.  Процес  пен  ағын  арасындағы 
айырма мынада, яғни ағын орындауға және қайта белсендіруге арналған 
үстеме шығындардың аз мөлшерін қамтиды, себебі ол осы ағындарды 
тудыратын қолданбалы процес деректерінің ауқымды көлемін қамтиды. 
Процес бірнеше ағындарды құруы мүмкін, олар ішкі міндеттер орын-
далғаннан  кейін  құрылған  процеске  қайтадан  қайтарылады.  Ағынды 
орындау кезінде, процес іске қосылуы мүмкін немесе ағын тоқтатылды 
деген сигналды күте отырып тоқтатылуы мүмкін. Ағын ішкі міндеттер 
аяқталғаннан кейін тоқтатылады не болмаса операциялық жүйе әрекет-
терін тоқтатылады.
2.4.8 Буферлік салалар
Екі  процес  немесе  ағын  өзара  бір-бірімен  әрекеттескен  кезде  немесе 
бір-біріне  деректерді  берген  кезде  олар  мұны  әр  түрлі  жылдамдықта 
асинхронды режимде жасай алады. Жадының көп реттік көлемі дерек-
терді асинхронды түрде беруді жеңілдету үшін қажет. Жадының мұндай 
көп реттік көлемін буфер деп атайды. Буферде екі маңызды операция 
бар: (1)деректерді енгізу және (2) деректерді алу.
Буферлер айналма кезекті пайдалана отырып іске асырылады. 2.20-су-
ретте көрсетілгендей айналма кезектер деректердің жойылған элемент-
терінен босатылған жадыны үздіксіз көп мәрте пайдаланады. Айналма 

101
кезектер  ауқымдағы  жадының  соңғы  элементін  анықтағаннан  кейін, 
ауқымның  басталуына  қайтып  келу  үшін  сызықты  ауқымға  арналған 
модуль бойынша арифметикалық операцияларды пайдаланады.
Буферде төрт операция бар: (1), буфердің бос екендігін тексеру үшін, 
(2), буфердің толтырылғанын тексеру үшін, (3),бос емес буферден эле-
ментті жою үшін, және (4) бос емес буферге элементті ендіру үшін,
Rear-pointer  -  Артқы  меңзер;  Process  writing  -  Процессті  жазу;  Front-
pointer – Алдыңғы меңзер; Process reading - Процессті оқу. 
2.20-Сурет  Айналма кезек секілді буфердің схемалық жоспары.
Мысалы,  буфер  m  мөлшеріндегі  ауқым  түрінде  іске  асырылды  делік; 
онда буфердегі операциялар былайша айқындалады:
Бос буфер(буфер) ::    егер(алдыңғы көрсеткіш == артқы көрсеткіш)

102
Егер  артқы  көрсеткіштің  мәні  алдыңғы  көрсеткіш  мәніне  тең  болса, 
Тізім бос (буфер) операциясы  ақиқат мәнін қайтарады. Тізім толтырыл-
ды (буфер) операциясы 1 с-қа артатын артқы көрсеткіш модуль бойын-
ша  арифметикалық  операцияларды  пайдалана  отырып,  алдыңғы  көр-
сеткіштің беретінін мәнін тексереді. Бұл артқы көрсеткіштің алдыңғы 
көрсеткішке  жетіп  алғанын  және  ешқандай  да  бос  торлар  жоқ  екенін 
білдіреді.  Ендіру  (буфер,  элемент)  операциясы  алдымен  буфердің  то-
лық болуын тексереді. Деректер элементі буфер толық болмаған кезде 
ғана  ендіріледі.  Деректер  элементі  артқы  көрсеткішпен  индекстелген 
ұяшыққа ендіріледі. Элементті ұяшыққа ендіргеннен кейін артқы көр-
сеткіш  модуль  бойынша  арифметикалық  операцияларды  пайдалана 
отырып  1-сқа  артады.  Жою    (буфер)  операциясы  егер  буфер  бос  бол-
маса, алдыңғы көрсеткішпен индекстелген жерден деректер элементін 
жояды, ал алдыңғы көрсеткіш  модуль бойынша арифметикалық опера-
цияларды пайдалана отырып бір бірлікке артады.
2.5 Қысқаша қорытынды
Бағдарламалау тілдерін әзірлеуде және іске асыруда қолданылатын не-
гізгі ұғымдар осы тарауда сипатталған. Бұл ұғымдар бағдарламалау тіл-
дерін әзірлеуде және іске асыруда маңызды рөлді ойнайды және келесі 
тарауларда өзекті болып табылады.
Бағдарламалау  тілдерін  зерттеуге  қажетті  дискреттің  құрылым  тұжы-
рымдамалары  жиынтықты  және  мультижиын  логикалық  оператор-
дарды,  функциялар  мен  қатынастарды,  соңғы  автомат  пен  жиынтық 
операцияларды қамтиды. Мұндай түрдегі теория жиынтық теориясын 
кеңінен қолданады, және бағдарламалаудың көптеген тілдері жиынтық 
хабарларын  және  жиынтықтар  негізіндегі  операцияларды  қолдайды. 
Жиынтықтарға жүргізілетін көптеген операциялар, мысалы ішкі жиын-
ның жиынтықтары, декарттық көбейтінді, түпкі бейне және байланыс-
сыз бірігу секілді операциялар талқыланды.
Бульдік  логика  бағдарламалау  негізі  болып  табылады.  Предикат  деп 
аталатын  класс функциясы (немесе логикалық бағдарламаларда пікір 
айту) бар, олар тұрақсыз мәндерге байланысты ақиқат немесе жалған 
мәндерін  қайтарады.  Күрделі  логикалық  жағдайларды  тексеру  көпте-
ген  басқару  абстракцияларында  қолданылады,  мысалы  алып  тастау 
(шартты оператор, таңдау оператор және т.б..) және белгісіз итерация-
лар (WHILEDO циклы, DOWHILE циклы), ерекшеліктерді өңдеу және 
шартты  ауысулар,  мысалы,  салынған  блоктардан  шығу  немесе  егер 
оқиға болып қойған болса, орындауды біртіндеп тоқтату. Бульдік шарт-
тар  логикалық  ЖӘНЕ,  логикалық  НЕМЕСЕ,  импликацияны  және  бо-

103
лымсыздарды пайдалана отырып,  логикалық бағдарламалау өзегін қа-
лыптастырады.
Функция  екі  жиынтық  арасындағы  бейнелерді  білдіреді:  яғни  домен 
мен өзгеріс саласы,  осылайша, доменнің әрбір элементі өзгерістің бір 
саласын ғана бейнелейді. Бейнелеу  "one-to-one" немесе "many-to-one" 
ассоциациясы арқылы орындалуға тиіс. Алайда ол әрқашанда осындай 
бола бермейді. Фнукционалдық бағдарламалау парадигмасы функция-
ларды толығымен пайдаланады, ал бағдарламалаудың өзге парадигма-
лары, мысалы императивті бағдарламалау парадигмасы  функцияларды 
бекітулермен  қатар  пайдаланады.      Функционалдық  бағдарлама  өрне-
ктерді  есептеп  шығаруды  пайдаланады.  Императивті  бағдарламалау 
парадигмасында функциялар өрнектерді есептеп шығаруға толықтыру 
ретінде бекітулерді де пайдаланады.
Қатынас екі (немесе элемент пен  атрибут арасындағы) х және у ара-
сындағы ерекшелікті анықтайды.  Қатынас қайтару, адалдық (немесе 
симметриялылыққа қарсы) немесе ауысу әрекеттері болуы мүмкін. Қа-
тынас ерекшелігі логикалық бағдарламалау, бір мезетте іске қосу үшін 
бағдарламаны  көшіруге  арналған  деректерге  байланысты  талдауды 
және  тұрақсыз  бағдарламаларды  алмастыру  секілді  бағдарламаларды 
пайдаланады.
Рекурсия  анықтамалардың  екі  түрімен  сипатталады:  базалық  оқиға 
және  рекурсивті анықтау. Бағдарламалау тілдерінде рекурсия рәсім-
дерді анықтауда және деректер құрылымын анықтауда да жүргізіледі. 
Рекурсивті функциялар бағдарламалауда басты рөл ойнайды. Соңғы ре-
курсивті функция итеративті бағдарламаларды пайдалана отырып мо-
дельденуі мүмкін. Сызықты рекурсивті бағдарламалар класы итерация 
және жинақтаушы ұғымдарды пайдалану кезінде іске асырылуы мүмкін.  
Рекурсияны өңдеуді  орындау кезінде жадының өсімі үшін тағайында-
уды қажетсінеді, себебі деректердің рекурсивті құрылымы мен рекур-
сивті рәсімдер жадысына қойылатын талаптар компиляциялау кезінде 
белгіленуі мүмкін. Рекурсивті бағдарламалаудың кейбір үстеме шығын-
дары тиісті итерациялық бағдарламалар үшін соңғы және сызықты ре-
курсияға айналу жолымен оңтайландырылуы мүмкін.
Соңғы автоматтар – бұл 3-тарауда талқыланатын компиляция кезінде-
гі лексикалық талдау-сөз орамы кезінде бағдарламалау тілдерінде қол-
данылатын және жағдайлармен анықталатын әр түрлі оқиғалар арасын-
дағы модельдік ауысу болып табылады.
Стек және кезектер (тізімдер) – бұл әр түрлі ерекшеліктері бар дерек-
тердің абстрактілі түрлері: стек LIFO сипатын (тәртіппен, келіп түсудің 
кері  тәртібімен)  қамтиды,  ал  кезек  FIFO  сипатын  (тікелей  тәртіппен) 

104
қамтиды. Элементтер стектің  бір  ұшынан итеріп шығарылады және 
алынады, ал деректердің элементтері кезектегі бір ұшынан кіргізіледі 
және басқа ұшынан шығарылады. Стек ағашты тереңдігімен айналып 
зерттеуде,  рекурсивті  рәсімдерді  орындауда  және  бағдарламалау  тіл-
дерін іске асыруда маңызды рөл ойнайды.  Кезек ағашты енімен айна-
лып зерттеуде FIFO сипаты талап етілетін жерде қолданылады. Тереңді-
гімен  айналып  зерттеу  ағашқа  тереңірек  енеді,  себебі  зерттеу  оң  жақ 
ішкі ағашты айналып шығудан бұрын сол жақ ішкі ағаштың түпкілік-
ті түйініне жетеді. Енін зерттеуде ағашты деңгей деңгейімен айналып 
өтеді. Енімен зерттеу 6-тарауда айтылғандай, хиппен басқарудың кейбір 
тиімді   әдістерінде қолданылды.
Хэш-кестелер  тиімді  енгузі  үшін  және  хэш-фукнциясын  пайдалана 
отырып,  индекске  бастапқы  кілтті  салыстыру  жолымен  динамикалық 
деректерді зерттеу үшін қолданылады. Хештеу функциясын пайдалану 
индекстің  жақын  арадағы  тұрақты  уақытта  теңестірілетініне  кепілдік 
береді. Хэш-кестелер бағдарламалау тілдерін іске асыруда және басқару 
процестерінде маңызды рөл ойнайды, себебі  ақпарат тұрақты уақытта 
алынуы мүмкін.
Тұрақсыз шама бағдарламада ақпараттың басты қолданушысы болып 
табылады. Тұрақсыз шама негізгі алты атрибуты қамтиды:атауытүрі, 
көлемі, өмір сүру мерзімі, жадыда орналасқан жері,  сондай-ақ беріл-
ген мәніӘрекет ету саласы бағдарлама бөлігі болып табылады, мұнда 
тұрақсыз шама оқылуы немесе жазылуы мүмкін, ал өмір сүру уақыты 
– бұл тұрақсыз шама пайдаланылуы мүмкін кезең. Ғаламдық тұрақсық
шамалар өмір сүру уақыты мен бағдарлама секілді бірдей көлемге ие, ал
жергілікті тұрақсыз шамалар олар жария етілген рәсімнің көлемімен
шектелген.  Статикалық  тұрақсыз  шамалар  компиляциялау  кезінде
тіркелген  мекенжаймен  бөлінеді  және  жадыға  тікелей  қол  жетімділік
арқылы  қол  жетімді  болып  табылады.  Өзгергіш  тұрақсыз  шамалар
деструктивті түрде жаңартылуы мүмкін және мән бергіш операторлар
үшін императивтік бағдарламалау парадигмасында қолданылуы мүмкін.
Бағдарламаны  орындау  кезінде,  маңызды  үш  ұғым  бар:  хабарламалар
есебінен  өзгеретін  қабықша;    мән  бергіш  операторлардың  есебінен
өзгеретін қойма; және дамп – қабықша стегі және туындайтын рәсім-
дердің реттілік қоймасы. Бағдарламаны орындау айрықша сипатталған
есептеуіш  жағдайлар  арасындағы  тұрақсыз  шама  реттілігімен  немесе
үштік түр ретінде (қабықша, қойма және дамп) не болмаса, конъюнкци-
яны, дизъюнкцияны және отрицания бульдік предикаттарды терістеуді
қамтитын логикалық мәндер түрінде модельденуі мүмкін. Екінші тәсіл
Нейманның  фон  машинасын  есептеу  жағдайын  анықтаудан  босатады

105
және бағдарламаның нақтылығын талқылау үшін қолданылады.
Процесс компьютерде іске қосылған бағдарламаның немесе ішкі бағдар-
ламаның белсенді бөлігі болып табылады және ЖСҚ жадысын қамтиды. 
Ағын  процес  ретінде  қолданылатын  әрекеттердің  реттілігін  білдіреді, 
яғни ағын процеске қарағанда жадыны бөлудің азғантай үстеме шығын-
дарын  қамтиды  және  аталық  процестің  жады кеңістігін  пайдаланады
Буферлер екі процес арасындағы, ағындар, кіру/шығу екі құрылығысы 
арасындағы немесе процессор мен кіру/шығу құрылығысы арасындағы 
деректерді  беру  үшін  қолданылатын  жады  кеңістігін  білдіреді.  Буфер 
айналма  буфер  ретінде  модельденеді,  ол  деректер  элементтерін  жою 
арқылы  босатылған  буферден  жады  кеңістігін  қайта  пайдалану  үшін 
модуль бойынша арифметикалық операцияларды қолданады.
2.6 Бағалау
2.6.1 «Тұжырымдамалар мен анықтамалар» деп өзгерту
Жинақтаушы; ациклдық граф; симметриялылыққа қарсы; байланысты-
ру; Бульдік логика; енімен зерттеу; буфер; Декарттық көбейтінді; айнал-
ма кезек; команда; есептеу жағдайы; цикл; циклдық граф; тереңдігімен 
зертеу; ациклдық графқа бағытталған; графқа бағытталған; дамп; дина-
микалық сала ережесі; қабықша; қолданбалы кванторларды пайдалану; 
өрнек; соңғы бейне; түпкілікті автомат; бірінші реттің предикаттарды 
есептеу; функция; граф; хэш-функция; хэш-кесте; өзгермейтін; нәтиже; 
индексация; сызықты рекурсия; логикалық ЖӘНЕ; логикалық НЕМЕ-
СЕ; бейне; мультижиын; өзгеретін; терістеу; бір мекенжайлық есепте-
уіш машина; реттелген жиынтық; көрсеткіш; көрсетім жиыны; преди-
каттарды санау; процесс; өрнектерді есептеу; кванторлар; кезек (тізім), 
рекурсия; деректердің рекурсивті құрылымы; рекурсивті функция; сіл-
теме; қайтарымдылық; байланыс; көру ережесі; реттілік; стек; көрудің 
статикалық    саласы;  қойма;  жол;  симметриялылық;  соңғы  рекурсия; 
ағын; үш мекенжайлы машина; транзитивтік, ағаш; кортеж; екі мекен-
жайлы  машина; тұрақсыз шама түрі; ортақ кванторларды пайдалану; 
тұрақсыз шама; көреріну, Нейманның фон машинасы; өлшенген граф; 
нөлді мекенжайы бар машина.
2.6.2 Тапсырма Шығару.
1. . Екі жиынтықты декарттық көбейтіндімен жазу: {"таң", "кеш", "түн",
"күн"} және { "күн", "жарық", "жаңбыр"}.
2. . {"күн", "жарық", "жаңбыр"} деп берілген жиын жиынтығының көр-
сеткішін жазу. Көрсеткіш жиынының мөлшерін түсіндіру.
3. . "азайту"-5 функциясы берілген, ол зат құрамының сандарынан бес

106
санды азайтады және 10, 0, 3, 7 және 8 элементтерін бейнелей отырып 
заттық сандардың кеңейтілген саласында элементтерді бөледі. Кеңей-
тілген сала да төменгі ⊥ символын қамтитынына назар аудар. Мән сала-
сында тұрақты элементтер үшін бейнеленбейтіндердің барлығы төменгі 
символ үшін бейнеленеді.
4. . Мынадай тұжырым үшін предикаттарды есептеу шешімін ұсынуды
жазу: "әр бір  N саны үшін осындай N>1, саны бар, ол бұл санға қараған-
да 1-ге кем"
5. . Мынадай тұжырым үшін предикаттарды есептеу шешімін ұсынуды
жазу: "Бұл әлемде әрбір адам үшін осы адамды осы әлемдегі кемінде бір
адаммен қосатын байланыс бар."
6. . [0..4, 0..7, 0..9]  өлшем бірліктерін қамтитын үш өлшемді ауқым және
10,000 базалық мекенжай берілген, яғни әрбір элемент жадының 2 байт
көлемін қамтитын жағдайда (3, 4, 2) индексінде орналасқан бастапқы
мекенжайды тап. Есептеу нәтижесін түсіндір.
7. . Төрт түр (4-кортеж) берілген  (бүтінсан, символ, жылжымалы нүкте,
бүтін сан), ескі мекенжай 5000 екенін ескере отырып, үшінші алаңның
жылжуын көрсет. Мысалы, бүтін сан төрт байтты қамтиды делік, онда
жылжымалы нүкте сегіз байт, ал символ бір байты иеленеді.
8. . Операцияның келесідей реттілігіне байланысты бос стектен бастай
отырып,  әрбір  операциядан  кейін  стектің  жағдайын  суреттеп  көрсет:
жылдамдату (стек, 4), жылдамдату (стек, 5), итеріп шағыру (стек); жыл-
дамдату (стек, 6). Стекті мынадай жүйелі түрде елестет < элемент N, ...,
элемент 1>, мұндағы элементN, ..., элемент1–бұл LIFO тәртібінде стекке
жылдамдатылған  элементтер,  және    алдыңғы  ұшынан  қосылған  және
қойылған элементтер.
9. . Операцияның келесідей реттілігіне байланысты бос кезектен бастай
отырып, әрбір операциядан кейін кезектің жағдайын суреттеп көрсет:
енгізу (кезек, 4), енгізу (кезек, 5), жою(кезек); енгізу (кезек, 6). Кезекті
мынадай жүйелі түрде елестет < элемент 1, …, элемент N >, мұндағы
элемент1, …, элементN> бұл тізімдегі элементтер. Элементтер реттілік-
тің соңғы ұшынан бастап қойылады және реттіліктің алдыңғы ұшынан
бастап жойылады.
10. Кезекті пайдалана отырып, енімен зертеу үшін және стекті пайда-
лана отырып, тереңдігімен зерттеу үшін бағдарлама әзірле және стеке
қарсы кезекте сақталған деректер элементінің орташа санын салыстыр.
Векторды  пайдаланып  кезекті  іске  асыр.  Статистикалық  талдау  үшін
кездейсоқ сандардың генераторын пайдалана отырып, орындау кезінде
кемінде10 ағашты құрастыр.
11. Кемінде бес тұрақсыз шаманы пайдалана отырып  қарапайым бағдар-

107
лама әзірле және бес қарапайым операторлар мен бірге қарапайым кодты 
жаз, және әрбір бекітуден кейін және әрбір оператордың орындауынан 
кейін қабықшамен қойманың қалай өзгеретінін көрсет.
12. Возьмите программу с, по крайней мере, пятью различными проце-
дурами, с, по крайней мере, двумя процедурами
13. Бағанда түйінді белгілей отырып, әрбір рәсімді көрсет. Шақырыла-
тын рәсімнен шақырушы рәсімге бағытталған қырды көрсет. Қырдың
салмағы  шақыру  рәсімдерінің  санымен  анықталады.  Егер  рәсім  өзін
шақыратын болса, онда циклды көрсете отырып, түйіннен өзіне қарай
қырды сипаттап бер. Алынған бағанды сипатта.
2.6.3 Толық жауап
13. Предикаттарды есептеу дегенді қалай түсінесіз? Түсіндір. Предикат-
тарды есептейтін әртүрлі компоненттер қандай? Қарапайым мысалдың
көмегімен олардың әрқайсысын түсіндір.
14. Алғашқы тәртіп пен жоғарғы тәртіп предикаттарын есептеу арасын-
дағы айырма қандай? Түсіндір.
15. Стек пен кезектің арасындағы айырманы түсіндір.
16. Ациклдық бағандардың бағытымен дегенді қалай түсінесіз? Олар-
дың  ағаштардан  қандай  айырмасы  бар?  Ағаштардың  көмегімен  емес,
керісінше бағытталған ациклдық бағандардың көмегімен модельденуі
мүмкін, тапсырманың нақты мысалын келтір.
17. Бағдарламалау тілдеріндегі көрсеткіштерді пайдалану артықшылығы
мен кемшіліктері қандай? Түсіндір. Бағдарламалау тілдеріндегі көрсет-
кіштердің кемшілігін азайтуға мүмкіндік беретін үш жобалық шешімді
талқыла.
18. Енімен, тереңдігімен зерттеу және олардың айырмасын түсіндір. Үй-
лестірілген N-тәрізді ағаштың көрнекі мысалын келтір (n≥ 2).
19. Кітапта  берілмеген  қарапайым  мысалды  пайдалана  отырып,
көрімділіктің статикалық және динамикалық саласын түсіндір.
20. Қабықша  мен  қойма  арасындағы  айырманы  түсіндір.  Өрнектерді
есептеуді, рәсімдерді шақыртуды, мән беретін операторларды, хабарла-
маларды пайдалану кезінде қабықша мен қойманың қалай өзгеретінін
көрсет.
21. Тиімді зерттеу үшін және кітапта берілмеген, бірақ толық мысалды
пайдалана  отырып,  мұрағат  деректерінен  деректерді  алу  үшін  хэштеу
тетігінің қалай жұмыс жасайтынын түсіндір.
Қосымша әдебиет

108
Давендер С. Малик және Мридул К. Сен. Дискреттік  математикалық 
құрылым: Теория және Практика.
Thomson Course Technology. 2004.
ДавендерС.  Малик.  C++қолданатын  деректер  құрылымы,  екінші  ба-
сылым.CourseTechnologyCengageLearning.
2009.
ДэвидА.  Паттерсонжәне  ДжонЛ.  Хеннесси  компьютердің  құрылы-
мы  және  компьютерлік  жүйелерді  жобалау,  бесінші  басылым. 
MorganKaufmann. 2012.
Зильбершатц, Абрахам, Галвин, Петер Б., и Гайне, Грег. Операциялық 
жүйелердің тұжырымдамасы, тоғызыншы басылым.
John Wiley and Sons. 2010.

109
3. Синтаксис және Семантика
Базалық тұжырымдама
Есептеудегі  абстракттілік  ұғымдар  (2.4-бөлім);  Бульдік  логика 
(2.2.2-бөлім); Басқару ағынының диаграммасы (1-бөлім); Дискреттік 
құрылым (2.2-бөлім); Қабықша және қойма (2.4.4-бөлім); Соңғы авто-
маттар  (2.2.5-бөлім);  Рекурсия  (2.2.4-бөлім);  Ағаштар  (2.3.5-бөлім); 
Бағандар (2.3.6-бөлім); Нейманның фон машинасы (2.1-бөлім).
Бағдарламалау тілінің құрылымын ұғынуға арналған екі негізгі компо-
нент бар: синтаксис және семантика. Синтаксис бағдарламалау тілін-
дегі оператордың рұқсат беретін құрылымын тексеруден құралады, ал 
семантика бағдарламалау тіліндегі сөйлемдердің нақты мәнін ұғынуды 
білдіреді.  Бұл  тұжырымдаманың  екеуі  де    бағдарламаны  ұғыну,  ком-
пиляторды әзірлеу, және бағдарламалық қамтамасыз етуге қызмет ету 
үшін  өте  маңызды.  Синтаксистің  маңызы  зор,  себебі  сөйлемдердің 
құрылымы  тиісті  үлгіде  расталмаса,  ол  бағдарламалау  тілінің  бөлігі 
болып  табылмайды,  және  дұрыс  мәнмен  байланысты  бола  алмайды. 
Семантиканың  да  маңызы  зор,  себебі  бағдарламалау  тілінің  құрылы-
мында және бағдарламада пайдаланатын біз әрбір сөздің беркелкі мағы-
насын бергенше және салыстырып қарағанша бағдарламадағы сөйлемді 
ұғыну мүмкін болмайды және  орындау үшін аралық деңгей коды дұрыс 
аударылмайды.
3.1. Синтаксис және семантиканы енгізу
Графикалық  тілдерді  қоспағанда,  қытай  тілі  секілді  табиғи  тілдердің 
көбісі  синтаксистің  негізгі  төрт  компонентін  қамтиды:  сөйлемдерді 
құрау және негіздеу үшін символдардың, сөздердің, сөз орамының және 
грамматикалық  ережелердің  соңғы  жинағы  (сондай-ақ  өнімдік  ере-
желер  ретінде  танымал).  Символдар  дауысты  және  дауыссыз  болып 
бөлінеді.  Дауысты  символдар    дауыссыз  симолдарды  байланыстыру 
үшін қолданылады және сөздерді айтуға көмектеседі. Сөздер мағына-

110
ларды байланыстыруға арналған негізгі бірлік болып табылады; символ 
деңгейінде ешқандай  мағыналар байланыспаған. Бұл сөздер сөйлемді 
қалыптастыру  үшін  грамматикалық  ережелердің  (өнімдік  ережелер) 
көмегімен қосымша біріктірілген. Егер жеке сөздердің мағынасы біре-
гей болып табылса, ол аталмыш сөйлем үшін бірегей мағына алынуы 
мүмкін.
Аталмыш  сөйлемнің  мағынасын  алу  үшін,  біріншіден,  сөйлемнің 
құрылымын  келісу  үшін  грамматикалық  ережелерді  бірнеше  мәрте 
қолдануға қажет. Грамматикада өнімдік ережелерді пайдалана отырып, 
сөйлемнің  грамматикалық  дұрыстығын  растау  процесі  синтаксистік 
талдау деп аталадыРастау процесінде сөйлемдер өнімдік ережелерді 
пайдалана отырып, аралық нысандар жиынына дейін барынша қысқа-
рады.
::=
  -  <сөйлем>::=<пән><  преди-
кат>;  
::=  -  <  предикат>::=<  етістік><  зат>; 
::=I|We|You  -  <пән>::=Мен|Біз|Сіз;  ::=play|dance  -  < 
етістік>::=ойнау|билеу; ::=soccer|basketball - < зат>::=футбол|ба-
скетбол
3.1 Сурет Қарапайым ағылшын грамматикасы және синтаксистік талқы-
лаудың тиісті ағашы.
Аралық нысан бастапқы сивол болып табылған жағдайда процес аяқта-
лады.  Өнімдік  ережелерді  прогрессивті  қолданудың  графикалық  ұғы-
мы ағаш болып табылатын сөйлемнен бастап бастапқы символға дейін 
жетуге көмектеседі және синтаксистік талқылау ағашы деп аталады. 
Синтаксистік  талдау  және  синтаксистік  талқылау  ағашы  3.2-тарауда 
берілген.


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




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

    Басты бет