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



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


CRC Press баспасы
Taylor & Francis баспа тобы
6000 БрокенСаундПарквей NW, Сьют 300 БокаРэйтон FL 33487-2742
© 2014 ТэйлоржәнеФренсис LLC компаниясы
CRC  Press  компаниясы  арқылы  Тэйлор  және  Френсис  компанияларының 
тапсырысымен басып шығарылған.
АҚШ үкіметінің еңбектеріне деген авторлық құқыққа еш наразылық жоқ.
Қышқылсыз қағазға басып шығарылған  20140520 басылым
ISBN 13 978-1-4665-6514-2 (жұмсақ мұқаба)
Бұл кітап сенімді әрі мәртебелі деректерден құралған. Сенімді деректерді ба-
сып шығару үшін, қисынды іс-әрекеттер қабылданды, алайда автор мен басып 
шығарушы барлық деректердің дұрыстығы мен олардың қолданылу тәртібіне 
жауапты бола алмайды. Авторлар мен басып шығарушылар осы баспадағы бар-
лық деректердің авторларын іздеп табуға тырысты, осыған орай біз деректерді 
пайдалану үшін рұқсаттарын алмаған авторлардан кешірім сұраймыз. Егер қан-
дай да бір материалдардың авторлық құқықтары мақұлданбаған болса, алдағы 
уақытта осындай жағдайларды түзету және қайта басып шығаруды болдырмау 
үшін, бізбен хабарласуларыңызды өтінеміз.  
Бұл кітаптың бірде бір бөлігін қайта басып шығаруға, көшірмесін жасауға, та-
быстауға немесе басқа кез келген тәсіл арқылы қолдануға, соның ішінде элек-
тронды, механикалық, қазіргі таңда бар немесе болашақта пайда болатын қан-
дай да бір тәсілдер, оның ішінде фотокөшірме, микро түсірілім, басу, сондай-ақ 
АҚШ  авторлық  құқық  туралы  заңымен  рұқсат  етілген  жағдайларды  есепке 
алмағанда, басып шығарушылардың жазбаша түрде дайындалған рұқсатынсыз 
сақтап, көшірме жасауға қатаң тыйым салынады.
Деректерді  көшірмелеу  мен  электронды  түрде  қолдану  сұрақтары  бойын-
ша  бізбен  www.copyright.com  (http://  www.copyright.com/)  немесе  Copyright 
Clearance Center, Inc. (CCC), 222 Rosewood Drive, Danvers, MA 01923, 978-750-
8400 арқылы хабарласуыңызды өтінеміз.  Copyright Clearance Center (Авторлық 
құқықты тексеру орталығы)   - бұл пайдаланушылар топтарына лицензия мен 
тіркелуді  қамтамасыз  ететін  бейкоммерциялық  ұғым.  Фото  көшірме  жасауға 
Авторлық құқықтарды тексеру (ССС) орталығының лицензиясын алған меке-
мелер үшін төлем жасаудың жеке рәсімі ұйымдастырылған.  
Тауар белгілері жайлы ақпарат: Фирмалық белгі немемсе тіркелген тауар бел-
гісі болып табылатын өнімдер немесе атаулар авторлық құқықты бұзу мақса-
тында емес, тек белгілеу және түсіндіру мақсатында қоланылады.   
http://www.taylorandfrancis.com және http://www.crcpress.com
сілтемелері    арқылы  Taylor&Francisжәне    CRC  Press  баспаларының  сайтына 
шолу жасаңыз

5
1. Кіріспе
Компьютерлер  туралы  ғылым  өзінің  пайда  болған  уақытынан  бастап, 
яғни 1950 жылдардан бері аса қызығушылыққа ие.Өзінің пайда болған 
шағында тек күрделі ғылыми есептеу жұмыстарын жүргізуге арналып 
жасалған бұл ғылым қазіргі таңда өміріміздің барлық дерлік салаларын-
да, соның ішінде медицинада, ғарышты меңгеруде, телекоммуникация-
да, ақпарат алмасу мен алшақ қарым-қатынас орнатуда, үлгілеуде, авто-
маттандырылған үлгілеу мен навигацияда, автоматтандырылған өндірі-
сте,  операцияларда,  жобалауда,  өндірісті  жоғарылату  құралы  ретінде, 
электронды мәміле жасау мен сатуда, көлік пен электростанцияларды 
басқаруда кеңінен қолданылады. Бүгінгі таңда біз өмірімізді қондыры-
латын немесе жеке компьютерсіз көзімізге елестете алмаймыз. Компью-
терлер  автокөліктер,  ұялы  телефондар,  ұшақтар,  ғарыш  аппараттары, 
жоғары сапалы кір жуу және кептіру құрылғылары, пештер мен үй қа-
уіпсіздігі жүйелері секілді заманға сай құралдардың ішіне орнатылып 
келеді. Қазіргі кезде Ақылды Үйлер салынып жатыр. Бұл үйлерде көп 
мәселелік режимде ақпаратты өңдеу мен үйдегі күнделікті міндеттерді 
орындауға арналған компьютерлер орнатылмақ.
Барлық аталған көмпьютерлік іс-әрекеттер бағдарламашылардың терең 
білімдерінің    арқасында  орындалып  жатыр.  Бағдарламашылар  көпте-
ген  кешенді  мәселелерге  кезігіп,  жоғарғы  деңгейдегі  нұсқауларға  жү-
гіну арқылы оларды шешудің жолдарын ұсынады. Бұл нұсқаулар авто-
маттандырылған аудармашылар арқылы төмен деңгейдегі машиналық 
нұсқауларға аударылады. Осындай төмен деңгейдегі нұсқаулар компью-
терлік бағдарламаларды іске қосады. Механизмдер деңгейіндегі нұсқау-
лар өздерінің мәнерлік күшінде шектелген және талаптарды өзгертумен 
қатар жоғарғы деңгейдегі шешімдерді үлгілеу мен түрлендіруге өз үле-
стерін қоспайды. Күрделі мәселелерді шешу мен талаптардың өзгеруі-
не қарай осы шешімдерді өзгерту үшін шешімдерді жасау мақсатында 
жоғарғы деңгейдегі тілдер мен тілдік құрылымдарды әзірлеу қажет-

6
тілігі  туындайтыны  анық.  Бұл  талаптар  техникалық  үдеріс  әсерінен 
өзгерген қоғамды қайта ұйымдастыру нәтижесінде пайда бола бастай-
ды. Бұл өз кезегінде бағдарламалық қамтамасыз етудің бір бөлігінің өз-
геруі екіншісіне кері әсерін тигізбейтіндей етіп, бағдарламаны қосымша  
жетілдіру мен ретке келтіруді қажет етеді. Кері әсерлердің санын шек-
теу үшін бағдарламалық қамтамасыз ету модульді болуы тиіс: тоқтау-
сыз функционалдыққа ие және нақты анықталған түрлі модульдер. Бұл 
модульдер ішкі деректер мен операциялармен шектеулі алмасумен әлсіз 
түрде байланысты.
Қазіргі  заманғы  мәселелер  жүйелі  болып  табылады  және  олардың 
шешімін  табу  үшін  мыңдаған  нұсқаулар  тізбектері  қажет.  Осындай 
шешімдерді әзірлеу оңай тапсырма емес және көптеген адами жылдар-
ды қамтиды: жылдар уақытына көбейтілген бағдарламашылар саны.
Бұндай күш салулар ұйымдастырушылық және қаржы ресурстарының 
ірі ауқымды міндеттемелерінің бар екенін білдіреді. Бұл күш салулар 
қайталана алмайды және эволюциялық түрлендіру мен бағдарламалық 
қамтамасыз  етумен  толықтырылуы  тиіс.  Ондай  болмаған  жағдайда 
бағдарламалық  қамтамасыз  етуді  әзірлеу  кідірісі  мен  жетілдірудің  ақ-
шалай құны үлкен болмақ.
 1.1 Пәндер салаларының жиынтығы
Қазіргі заман дәуірінде компьютерлер көмегімен шешілетін мәселелер 
ғылыми есептеулер, мәтінді өңдеу, деректер қорын бағдарламалау, биз-
нес-қосымшалары, жүйелік бағдарламалау, технологиялық үдерістерді 
автоматтандыру,  зияткерлік  жүйелер,  веб-қосымшалар  және  нақты 
уақыттағы деректерді өңдеу секілді пән салалары арқылы жүзеге асы-
рылып  жатыр.  Аталған  салалар  бір  бірінен  түрлі  талаптар  бойынша 
ерекшеленеді.  
Ғылыми  есептеулердің  мысалы  ретінде  миллардтаған  жұлдыздардан 
тұратын бүкіл әлем туралы талқылауларды алуға болады. Олардың өза-
ра қарым-қатынасы  мен біздің күн жүйесімен байланысы туралы қоры-
тынды жасау үшін біз триллиондаған байт ақпаратты қабылдайтын ком-
пьютерлендірілген телескоптардан алынған деректерді өңдеп, сарапта-
уға тиіспіз. Ғылыми есептеулердің тағы бір мысалы жағалау бойындағы 
аймақтардаы қирататын торнадо секілді атмосфералық құбылыстарды 
үлгілеу  және  бақылау  болып  табылады.  Ғылыми  есептеулердің  келе-
сі мысалы – жер бетіндегі сейсмикалық  белсенділікті өңдеу, сараптау 
және бақылау. Ғылыми мәселелерді шешу жолында ғылыми деректерді 
өңдеу мен пайдалы үлгілерді әзірлеу компьютерде үлкен матрицаларды 
ерекшелеп, өңдеуді қажет етеді. Сандық мәндерді дәлме-дәл өңдеуден 

7
өткізген жөн. Мысалы, ғарыш кемесінің траекториясын есептеп шығару 
дәл есептеулер мен нақтылықты талап етеді.
Мәтінді  өңдеу  мысалдары  болып  біз  күнделікті  өмірімізде  мәтіндер 
мен  тұсаукесерлер  дайындауда  қолданылатын  мәтіндік  процессорлар 
мен аса жоғары өнімділік құралдары табылады. Бұндай мәселелер үл-
кен  көлемдегі  тармақтарды,  суреттерді,  кестелерді,  бейнежазбаларды 
және тағы басқа мультимедиялық объектілерді ұсынып, өңдеуге қажетті 
тиімді мүмкіндіктерді талап етеді. Олар да кең көлемдегі есептеулерді 
қажет  етеді,  алайда  есептеу  қажеттілігі  ғылыми  есептеулер  саласын-
да  секілді  аса  күрделі  емес.  Бұл  үдеріс  адамдарен  тығыз  байланысты 
болғандықтан, пайдаланушыға ыңғайлы болуы шарт.
Деректер қорын бағдарламалау логикалық тізбектегі кең көлемдегі де-
ректерді, олар тез арада қол жетімді болу үшін,  ұйымдастыруды, өңдеуді 
және іздестіруді қажет етеді. Нақты уақыт режиміндегі деректер қорын 
бағдарламалаудың    мысаладры:  1)  тіркеушінің  кеңсесінде  студенттің 
деректерін өңдеу және 2) жанармай құятын орында несиелік картаның 
оқылуы. Студент тіркеуші кеңсесіне келген бетте өз студенттік билетін 
ұсынады, ал есепші бұл студенттің барлық төлемдеру, адресы және оқи-
тын пәндері жайлы толық ақпаратты көруі тиіс.
Бизнес-қосымшалар тұтынушылар мен жоғары санаттағы басқарушы-
ларға  ыңғайлы  түрде  ұсынылатын  есептердің  кең  жиынтығын  талап 
етеді.  Бұдан  басқа  бизнес-қосымшалар  пайдаланушыға  ыңғайлы  есеп 
жүйесі  бар  деректер  қорларын  біріктіруді  қажет  етеді.  Алайда  биз-
нес-қосымшаларды өңдеу үдерісі пакеттік режимде жүзеге асырылуы 
мүмкін; бұл жағдайда әр қашан нақты уақытта өңдеуді жүргізу қажет 
етілмейді.  
Жүйелік бағдарламалау бір уақытта жүзеге асырылатын бірнеше үдері-
стерді өңдеуді талап етеді. Бұл бағдарламашылардың жұмыс өндірісін 
арттырып, тапсырманы орындау тиімділігін арттыру мақсатында төмен 
деңгейдегі бағдарламалаумен қарым-қатынасты қамтамасыз етеді
Жүйелік бағдарламалау үдерісте жаңылыс орын алған кезде компьютер 
жадының, қателерді өңдеудің, ескертулер жасаудың сатылы жұмысын, 
сондай-ақ пайдаланушы деңгейіндегі шақырулардың жоғары деңгейдегі 
шақырулармен байланысын талап етеді.   
Нақты уақыт режиміндегі ақпаратты өңдеу деректердің осы шақта жи-
налып, өңделуін қажет етеді. Есептеуге байланысты қандай да жұмыс 
деректерді жинау мен өңдеу үдерісін кідіртпеу қажет, сәл кідіріс орын 
алған жағдайда нақты уақытта болып жатқан іс-әрекеттер жоғалып, кері 
нәтижелерге әкелуі мүмкін. Мысалы, компьютер АЭС-мен баяу байла-
ныс орнатып, жүйені қыздырып жіберсе, онда АЭС өзіне зақым келуі 

8
мүмкін. Егер жойғыш ұшақтың борттық компьютері баяу жұмыс істесе, 
бұл ұшақ жау ракеталары арқылы соққыға ұшырауы мүмкін. Бұл мысал-
дар  оқиғаларды жинау мен өңдеу үдерісін жеңілдету мақсатында нақты 
уақытта тапсырманы орындау мен тез шешім қабылдаудың аса қажет 
екенін дәлелдейді.  
Соңғы  жылдары  зияткерлік  жүйелер  өндіріс  роботтарының  жұмысы, 
цехтарды  жобалау,  әуежай  қызметін  жоспарлау,  табиғи  тілді  немесе, 
тіпті,  гроссмейстерлерді  жеңіп,  бейнелер  анализін  жасайтын,  шахмат 
секілді  ойындарді  өңдеу  тәрізді    адам  өмірінің  көптеген  салаларында 
кең  қолданысқа  ие.  Бұл  жүйелер  өте  үлкен  кеңістік  ішінде  көптеген 
мәселелермен  жұмыс  жасап,  мәселені  логикалық  түрде  сараптау  мен 
оны шешудің дұрыс жолдарын ұсынуға мүмкіндікке ие болулары тиіс. 
Әдетте, осындай мәселелерді шешуде эвристикалық бағдарламалау кең 
қолданылады, яғни мәселені тез арада шешуге бағытталған математи-
калық  үлгілеуге  негізделеген  дыбыстық  жорамал.  Нақты  уақыт  фено-
менінің  қылығындағы белгісіздік пен ақпараттың жеткіліксіз болуынан 
мәселе одан ары қиындай түседі.
Соңғы жылдары веб-бағдарламалау мультимедиялық жүйелермен бірі-
гіп,  бағдарламалау  тілдерінде  бірқатар  талаптардың  пайда  болуына 
себепші  болады.  Бағдарламаларды  қашықтықтағы  сайттардан  іздеп 
табуға  (URLs)  және  жергілікті  машина  көмегімен  орындауға  мүмкін 
болуы  тиіс.  Ақпаратты  қашықтықтағы  машиналардан  алу  деректер 
құрылымдарын тармақтарға аударуды немесе керісінше үдерісті талап 
етсе,  тиімді  орындау  төмен  деңгейдегі  нұсқауларға  тиімді  аударуды 
қажет етеді. Өкінішке орай аудару мен веб-бағдарламаны орындау бір 
уақытта жүзеге асырылады, бұл бағдарламаның орындалуын баяулата-
ды және өңдеуді жеделдету мақсатында «бірден» компиляциялауды  (JIT 
компиляция) қажет етеді. Алдағы уақытта біз түрлі домендерді өңдеуге 
арналған пән бойынша бағытталған тілдермен танысатын боламыз.  
1.2 Мотивация
Пән  саласындағы  талаптарды  ескере  отырып,  бағдарламалар  үдерісті 
автоматтандыру үшін әзірленуі мүмкін. Осыған қарамастан, компьютер-
лерге  арналған  шешімдер  байланысы  күрделі,  себебі  адамдардың  ни-
етін түсіну үшін компьютердің зияты жеткіліксіз, сондай-ақ компьютер 
адамдардың әдейі жасамаған қателіктері мен біздің хабарламаларымы-
дың астарында жасырын түрдегі қателіктер салдарын түзете алмайды. 
Барлық ақпарат компьютерлерге қол жетімді түрде әзірленіп, жүктелуі 
тиіс. Субъектілер абстрактылы және нақты түрде әзірленіп, шешім са-
тылы түрде, еш екі мәнділіксіз жасалуы тиіс.  

9
Бағдарламалау тілі компьютермен қарым-қатынасқа түсудің ұйымдасқан 
тәсілі  болып  саналады,  осылайша  компьютер    тапсырманы  бағдарла-
машы арқылы берілген нақты нұсқауларға сәйкес орындайды. Нұсқау-
ларда мәтіндік, визуалды, белгілер, ым-ишарат, аудио немесе шешімді 
табуға арналған  тағы басқа тәсілдер секілді кез келген бұқаралық ақпа-
рат көздері қолданылуы мүмкін. Алайда төменде аталған маңызды кри-
терийлер міндетті түде қоладнылады:
1. Мәселенің шешімі қарапайым әрі толық түрде көрсетілуі тиіс.
2. Шешім спецификациясының даму потенциалы болғаны жөн.
3. Бағдарламашының  ниеті  мен  компьютер  орындайтын  іс-әрекеттің 
арасында жеке бір мағыналы аударма болғаны жөн. Шешімдер жоғарғы 
деңгейде анықталғандықтан, шешімді көрсетуге арналған бір мағына-
лы құрылымдардың жеткіліксіз болуының себебінен бағдарламашы мен 
компьютер арасында түсініспеушіліктің пайда болуы бір талай.
Автоматтандыру деңгейі дамыған сайын қоғам автоматтандыру деңгей-
ін меңгеріп, сондай-ақ жаңа пән салаларын дамыта отырып, өзін қайта 
құру үстінде.  Мысалы, компьютердің ойлап табылған 1950 жылдары 
ең  басты  талаптардың  бірі  ғылыми  есептеулердің  жасалуы  болып  та-
былған. Мәтінді өңдеуге, өнімділікті арттыру құралдарына, графикалық 
дизайн  үшін,  бизнестің  автоматандырылуына,  зияткерлік  жүйелерге, 
веб-транзакцияларына  және  веб-ынтымақтастыққа  қойылатын  талап-
тардың саны жедел түрде ұлғая түсті.
Технологиялырдың жетілуі, қоғамдық қайта құрылу мен салаларының 
дамуы өзара тығыз байланысты. Технологиялардың дамуына қарай та-
лаптар да ұлғая түседі және мәселенің шешімін табу одан әрі күрделіле-
не түседі. Өзара қарым-қатынасқа түсіп, бұл шешімдер компьютерлік 
тілді  емес,  түсінікті  адамдар  тілін,  яғни  бағдарламалық  қамтамасыз 
етудің одан әрі тиімді жұмысы үшін төмен деңгейдегі нұсқауларға ав-
томатты түрде аударылатын бағдарламалау тілін қажет етеді. Ғаламтор 
негізіндегі тілдер мен веб-бағдарламалу 20 жылға жуық қолданылуда 
және дамуын жалғастырып келеді. Жаппай параллель сәулетке арналған 
жоғарғы деңгейдегі тілдер әлі де даму үстінде. Жаңа күрделі домендер 
де дамып келе жатыр. Бұл бағдарламалаудың түрлі стильдерімен байла-
ныс орнатуды талап етеді.
Бағдарламалау тілдерін әзірлеу мен дизайнды жетілдіру барысында тех-
нологиялардың  дамуы,  компьютерлік  сәулеттің  дамуы,  операциялық 
жүйелердің дамуы, ірі көлемдегі модульдік бағдарламалық қамтамасыз 
етуді әзірлеу қажеттілігі, сондай-ақ ұзақ мерзімде бағдарламалық қамта-
масыз етуді сүйемелдеу тәрізді бірқатар аспектілер басшылыққа алына-

10
ды. Жаңа пән салалары дамыған сайын жаңа талаптар пайда болады, 
осылайша  жаңа  бағдарламалау  тілдерін  жетілдіруге  деген  қажеттілік 
туындай түседі. 
1.3 Оқыту нәтижелері
Бұл курсты меңгерудің нәтижесі төмендегілер болып табылады:
1. Жаңа тілдер үшін өнімділіктің арту қисығының қысқаруы:
Талаптар  автоматтандыру  арқылы  ұсынылатын  қоғамдық  ин-
фрақұрылымды  жақсарту  жолымен  жасалады.    Болашақтағы  бағдар-
ламалау  тілі  жоғары  деңгейде  болады,  өзінде  көптеген  бағдарламалау
парадигмаларын  қамтып,  күрделі  бағдарламалық  қамтамасыз  етуді
әзірлеуде  қолданылмақ.  Бағдарламашылар  бағдарламалау  тілдерінің
жаңа парадигмаларын меңгеруге тиіс. Бағдарламалау парадигмаларын,
құрылымдарды бағдарламалау  мен тағы басқа күтпеген жағдайларды
терең және абстрактылы деңгейде түсінбей, қайта жабдықтауды жүзеге
асыру  мүмкін  емес.  Бағдарламалау  парадигмаларын  терең  әрі  абстар-
ктылы деңгейде түсіну бағдарламашыларға жаңа тілдер арқылы бағдар-
ламалау  абстракциясына  жаңа  тілдер  синтаксисін  орнатуға  мүмкіндік
береді.
1. Бағдарламашылар  төмен  деңгейдегі  қылықтардың  жүзеге  асы-
рылуын  меңгереді:  Бұлкурс  абстрактылы  машиналардың  төмен  дең-
гейінде  жоғарғы  деңгейдегі  конструкциялардың  төмен  деңгейдегі
нұсқауларға  аударылуы  арқылы  әсерін  сипаттайды.  Төмен  деңгейдегі
қылықтарды түсіну бағдарламалау барысында орын алатын бірқатар қа-
теліктердің алдын алуға септігін тигізеді.
Бұл  тиімді  бағдарламалау  мен  жанама  әсерлер  курсымен  таныстыра
отырып, бағдарламалаудың студенттік стилін жақсартуға септігін тигі-
зеді. Жанама  әсерлерге есептеудің абстрактілі үлгілерінің нәтижесінде
пайда  болған  қажетсіз  есептеу  әсерлері  жатады.  Олар  бағдарламаның
жұмысында жаңылыстардың пайда болуына әкеліп соғуы мүмкін.
2. Бағдарламашы компиляторды дамытуға үлесін қоса алады: Жаңа пән
бойынша бағытталған тілдердің дамуына орай жаңа компиляторларды
жетілдіру қажеттігі туындап отыр. Бағдарламалау тілдерінің қылығын
төменгі деңгейде түсіну тиімді орындауға қажетті кодты әзірлеудің не-
гізі болып табылады.
3. Бағдарламалау стилін жақсарту:  Студенттер бағдарламалау стилін
қолдану  аясын  кеңейтетін  түрлі  бағдарламалау  тілдері  класстарында
бірқатар  құрылымдармен  танысады.  Бұған  қоса  сйкес  деректер  мен
басқару абстракцияларын таңдау арқылы өз шешімдерін тиімді түрде
білдіре алады. Әдетте бағдарламашылар C++, Java, PHP немесе C# секіл-

11
ді бағдарламалау тілдерінің шектелген санымен танысып, бағдарлама-
лаудың белгілі бір стилдерінің әсеріне тап болады. Бағдарламалаудың 
түрлі парадигмаларында қолданылатын бағдарламалық құрылымдарды 
білу тікелей бағдарламалаудың өзін жақсартады.
4. 
Бағдарламашы  сәйкес  бағдарламалау  тілдері  мен  парадигмаларды
таңдау мүмкіндігіне ие болады: Студенттер нақты бағдарламалау пара-
дигмаларын қолдану арқылы пән салаларын құрастырып, бағдарлама-
ларды әзірлеуге қажетті сәйкес тілдерді таңдай алады.
1.4 Компоненттер мен бағдарламалар
Үдерісті автоматтандыру мен мәселені шешудің арасында біреуін таңдау 
сұрағы туындаған жағдайда, жүйелік талдаушы жүйенің үлгісін жасап, 
қосу мен өшірудің қылығын параметрлеуі тиіс, сондай-ақ блок-сызбаны 
қолдана отырып, түрлі модульдерді қосуы қажет. Бұл модульдер нақты 
болып жатқан үдерісті түйіндейді.    Бағдарламалар деректерді өңдеуге 
және осы модульдер арасында деректер ағынын басқаруға бағытталған 
шешімдерге арналған техникалық талаптар болып табылады.   
Нақты мәселерді шешуге арналған техникалық талаптар адам түсіне ала-
тындай етіп, жоғарғы деңгейде сипатталады, ал компьютердің іс-әрекет-
тері  төмен  деңгейдегі  машиналық  командаларға  негізделеді.  Жоғарғы 
деңгейдегі нұсқауларды баламалы түрде төмен деңгейлерге (ешбір екі 
ұштылықсыз) тасымалдайтын аударманы жүзеге асыру қажеттігі туын-
дайды. Екі ұштылықты болдырмау мақсатында нұсқаулар нақты бірегей 
мағынаға ие болулары тиіс.
Кешенді  тапсырманың  шешімін  ресми  түрде  көрсету  мақсатында 
бағдарлама мәнді таңбалар жүйесі болып табылады (1.1-сурет). Бағдар-
лама  үш  негізгі  компоненттен  тұрады:  логика+абстракция+  бақылау.
Логика  мәселені  шешуге  қажетті  жоғарғы  деңгейдегі  техникалық  та-
лаптардың  пайда  болуын  білдіреді.  Бұл  қарапайым  тапсырмалардың 
құрылымданған  әдісінде  күрделі  мәселені  шешуді,  сондай-ақ  соңғы 
шешімді есептеп шығару мақсатында қатаң түрде белгіленген операци-
яларға жүгіне отырып, осы шешімдерді үйлестіруді қажет етеді.  
Абстракция мәселені шешуге қажетті талап етілетін атрибуттармен үл-
гілеуді білдіреді. Объектінің бірнеше атрибуттары болуы мүмкін. Алай-
да барлық атрибуттар мәселені шешуге қажет емес. Абстракцияның ар-
тықшылығы бағдарламаларды оңай түсіну мен бағдарламаның қарапай-
ым қызметіне жеңіл түрлендіру болып табылады.

12
1.1-сурет  Бағдарламаларды абстрактілі түрде анықтау.
Бақылау фон Нейман машинасының жұмысына негізделген мәселенің 
шешімін  көрсетуді  білдіреді.  Бұл  жағдайда  шешімді  қамтитын  соңғы 
есептеуді шығару үшін компьютер жады әрдайым өзгеріп отырады. Әр 
нұсқау есептеу жағдайын жаңа бір жағдайға өзгертіп отырады. Бағдар-
ламада  анық  басқаруды  қодану  бағдарламашыға  компьютер  жадын 
нақты түрде өзгертуге мүмкіндік береді. Логиканы жүзеге асыру үшін 
компьютер  жадының  түрленуі  бір  бағдарламашыдан  екінші  бағдарла-
машыға өзгеріп отырады. Бұл өз кезегінде бағдарламаны түсіну үдерісін 
қиындатады.  
1.1-мысал
Бұл мысал ретке келтірілмеген сандарды сұрыптаудан өткізетін (көпір-
шік арқылы сұрыптау) қарапайым алмасу арқылы сұрыптау арқылы үш 
компонентті көрсетеді. Қарапайым аламасулар арқылы сұрыптау ұсақ 
ауқымша  элементтеріне  арналған  «қайталанатын  максималды  ауқым 
элементі»  стратегиясын  қолданады.    Қарапайым  алмасулар  арқылы 
сұрыптау бағдарламасы үш негізгі компоненттен тұрады:
• Абстракция:Индекстелетін жүйе ретіндегі сандар жиынтығы болып
табылады.
• Логика:  Іргелес  сандарды  салыстырып,  жүйе  аяқталғанша,  егер
сан  көршілес  саннан  кіші  болса,  олардың  орындарын  ауыстырады.
Ағымдағы жүйедегі сандарды салыстыру максималды ағымдағы жүй-
елілікке қол жеткізуге мүмкіндік береді. Бұл элемент алдағы салыстыру-
ларда кездеспейді және бір де бір элемент қалмайынша, қалған элемент-
тер арасында қайталанады.

13
• Бақылау:  Бақылау  кезінде  айнымалылармен  байланысты  түрлі  жад
торларында мәндермен алмасу және оларды жаңарту қолданылады.
Бағдарлама  бірнеше  блоктардың  қолданылуымен  ұйымдастырылған: 
(1) бағдарламаның атауы, (2) осыдан бұрын әзірленген, бағдарламалық
қамтамасыз  ету  кітапханасынан  немесе  модульдерден  импортталған
бағдарламалар, (3) логиканы білдіруге қажетті тип және айнымалылар
туралы  ақпараттың  мәлімдемесі,  (4)  түрлі  бағдарлама  модульдерінің
арасында ақпарат алмасу параметрлері және (5)   жарияланған айныма-
лыларды басқаруға арналған командалар жүйесі.
1.4.1 Бағдарламалардағы абстракциялар
Бағдарламада қолданылатын абстракциялардың екі түрі бар: деректер 
абстракциясы  және  абстракцияны  бақылау.    Деректер  абстракция-
сы  орыналған  мәселені  шешуге  қажетті  нақты  атрибуттарды  анықтау 
арқылы объектілерді үлгілеуде қолданылады.  Мысалы, мақсатты клас-
сификациялау классын үлгілеу үшін, класс студенттер жиынтығы ретін-
де үлгіленеді. Бұл жерде әрбір студент үш формалардың бірігуі ретінде 
үлгіленеді (студент идентификаторы, студенттің есімі, әріптік бағалар). 
Студенттердің  жынысы,  бойы,  салмағы,  адресі,  спорттық  қы-
зығушылықтары және тағы басқа сипаттамалары қолданылмайды, се-
бебі осы секілді ақпарат орын алған мәселені шешуге көмектеспейді. 
Деректер  абстракциясы  деректерді  ұсынудың  түрлі  тәсілдері  арқылы 
жүзеге асырылуы мүмкін. Мысалы, студенттердің реттілігі  студенттер 
массиві түрінде, ал үш форманың жиынтығы үш шегі бар «құрылым» 
ретінде берілуі мүмкін.  


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




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

    Басты бет