Аппараттық және бағдарламалық қамтамасыз етуді орнату

Бағдарламалауға құрылымдық көзқарас. Құрылымдық бағдарламалау технологиясы

Құрылымдық бағдарламалау- логикалық қарапайым және түсінікті бағдарламаларды құруға бағытталған бағдарламалау әдістемесі. Құрылымдық бағдарламалау бағдарламаның логикасы мен түсініктілігі оны әзірлеуге, дұрыстығын дәлелдеуге және кейіннен техникалық қызмет көрсетуді жеңілдетеді, сонымен қатар оның сенімділігін қамтамасыз етеді деген болжамға негізделген.

Құрылымдық бағдарламалаудың сипатты принциптері:

· жоғарыдан төмен бағдарламалаубағдарламалау жалпыдан егжей-тегжейге дейін «жоғарыдан төмен» әдісі арқылы жүзеге асырылатын бағдарламаларды әзірлеу әдісі;

· модульдік бағдарламалау, онда салыстырмалы тәуелсіз ішкі тапсырмалар жеке бағдарлама модульдері ретінде бағдарламаланады;

· бағдарламалауда үш басқару құрылымын қолдану (іздену, таңдау, қайталау). Келесі құрылым операторларды орындаудың табиғи тізбегін болжайды. Таңдау құрылымы «if-then-else» схемасымен (if операторы) беріледі. Цикл операторы қайталау құрылымымен байланысты;

· Басқарудың сөзсіз берілуінен бас тарту және жаһандық айнымалыларды шектеулі пайдалану.

Құрылымдық бағдарламалау бағдарламалау теориясында қатаң дәлелденген теоремаға негізделген. Оның мәні кез келген логикалық есепті шешу алгоритмі тек келесі құрылымдардан құралуы мүмкін. , тармақталу, цикл. Олар негізгі алгоритмдік құрылымдар деп аталады. Шындығында, біз және бұрын қарастырылған бағдарламалардың барлық мысалдарында құрылымдық бағдарламалау принциптерін ұстандық.

Төменде әрекеттердің сызықтық тізбегі берілген (2.6-сурет):

Күріш. 2.6. келесі

Әрбір блокта қарапайым команда да, күрделі құрылым да болуы мүмкін, бірақ оның бір кірісі мен бір шығысы болуы керек.

тармақталу алгоритмдік балама. Басқару шарттың ақиқаттығына немесе жалғандығына байланысты екі блоктың біріне ауыстырылады. Содан кейін жалпы жалғастыруға шығу бар (2.7-сурет):

Күріш. 2.7. тармақталу

Цикл белгілі бір іс-әрекеттер тобын шарт бойынша қайталау. Циклдің екі түрі бар. Бірінші алғы шарты бар цикл (2.8-сурет):

Күріш. 2.8. Алғы шарты бар цикл

Шарт ақиқат болғанда, цикл денесін құрайтын қатар орындалады.

Циклдік құрылымның екінші түрі кейінгі шарты бар цикл (2.9-сурет):

Күріш. 2.9. Постшартпен цикл

Мұнда цикл денесі цикл шартының алдында тұрады. Егер шарт жалған болса, цикл денесі оның орындалуын қайталайды. Қайталау шарт ақиқат болған кезде аяқталады.

Теориялық тұрғыдан алғанда, циклдің бірінші түрі ғана қажет және жеткілікті. алғы шарты бар цикл. Кез келген айналымонымен салуға болады. Ол аяқталды жалпы нұсқациклге қарағанда цикл. Шынында да, дейін циклінің денесі кем дегенде бір рет орындалады, өйткені шарт ол аяқталғаннан кейін тексеріледі. Ал цикл үшін мұндай опция цикл денесі бір рет орындалмайтын кезде мүмкін болады. Сондықтан кез келген бағдарламалау тілінде тек while циклімен шектелуге болады. Дегенмен, кейбір жағдайларда циклді пайдалану ыңғайлырақ, сондықтан ол қолданылады.

Құрылымдық бағдарламалауды әдебиетте кейде бағдарламалаусыз бағдарламалау деп те атайды. Шынында да, бұл тәсілмен сөзсіз ауысуға орын жоқ. Бағдарламаларда goto операторын негізсіз пайдалану оны құрылымынан, демек, онымен байланысты барлық жағымды қасиеттерден: алгоритмнің ашықтығы мен сенімділігінен айырады. Бұл оператор барлық процедуралық бағдарламалау тілдерінде бар болса да, құрылымдық тәсілге сүйене отырып, оны пайдаланудан аулақ болу керек.

Күрделі алгоритм өзара байланысты негізгі құрылымдардан тұрады. Бұл құрылымдарды екі жолмен қосуға болады: дәйектіжәне салынған.Бұл жағдай кез келген ерікті түрде күрделі болатын электротехникада байқағанымызға ұқсас электр тізбегітізбектей және параллель қосылған секцияларға ыдырауға болады.

Кірістірілген алгоритмдік құрылымдар параллель қосылған өткізгіштерге ұқсас емес. Мұнда бір-бірінің ішіне орналастырылған ұя салатын қуыршақтардың ұқсастығы қолайлы. Егер цикл денесін құрайтын блоктың өзі циклдік құрылым болса, онда бұл кірістірілген циклдердің бар екенін білдіреді. Өз кезегінде, ішкі цикл оның ішінде басқа цикл болуы мүмкін және т.б. Осыған байланысты ілмектердің ұя салу тереңдігі туралы түсінік енгізілген. Сол сияқты, бұтақтарды бір-біріне салуға болады.

Құрылымдық тәсіл алгоритмдердің блок-схемаларының кескініндегі стандартты сақтауды талап етеді. Сіз оларды барлық келтірілген мысалдардағыдай салуыңыз керек. Әрбір негізгі құрылымның бір кірісі және бір шығысы болуы керек. Стандартты емес блок-схема нашар оқылады, алгоритмнің көрінуі жоғалады.

Паскаль және Си программалау тілдері құрылымдық программалау тілдері деп аталады. Олар үшін барлық қажетті басқару құрылымдары бар құрылымдық құрылысбағдарламалар. Бағдарлама мәтінінің сыртқы түрін құрылымдау бұл конструкцияға нақтылық береді. Бұл үшін қолданылатын негізгі техника келесі ережелерге бағынуы тиіс сызықтардың ауысуы:

Бірдей ұяшық деңгейіндегі конструкциялар бір тік деңгейде жазылады (жолдағы бірдей позициядан басталады);

Кірістірілген құрылыс сызық бойымен оның сыртқы құрылысына қатысты оңға бірнеше позицияға жылжытылып жазылады.

Алгоритмдеудің құрылымдық әдісі бұл алгоритмді сипаттау формасы ғана емес, сонымен бірге ол бағдарламашының ойлау тәсілі . Алгоритмді құру кезінде оны стандартты құрылымдардан құрастыруға ұмтылу керек. Ғимарат ұқсастығын пайдалана отырып, алгоритмді құрудың құрылымдық әдісі кірпішті кірпішпен бүктеуге қарағанда, стандартты секциялардан ғимаратты құрастыруға ұқсас деп айта аламыз.

Құрылымдық бағдарламалаудың тағы бір маңызды технологиялық әдістемесі шешілетін мәселені ішкі тапсырмаларға ыдырату болып табылады. бастапқы есептің бағдарламалау тұрғысынан қарағанда қарапайым бөліктері. Мұндай ішкі есептерді шешуге арналған алгоритмдер көмекші алгоритмдер деп аталады. Осыған байланысты алгоритмді құрудың екі мүмкін жолы бар:

«жоғарыдан төменге»: алдымен негізгі алгоритм құрастырылады, содан кейін көмекші алгоритмдер;

«төменнен жоғары»: алдымен көмекші алгоритмдер құрастырылады, содан кейін негізгі.

Бірінші тәсіл дәйекті детальдау әдісі деп те аталады, екіншісі құрастыру әдісі.

Құрастыру әдісі бағдарламалау тілдерінде ішкі бағдарламалар, процедуралар және функциялар түрінде жүзеге асырылатын көмекші алгоритмдердің кітапханаларын жинақтауды және пайдалануды қамтиды. Тізбектелген детализациямен алдымен негізгі алгоритм құрастырылады, содан кейін оған бірінші деңгейдегі көмекші алгоритмдерге шақырулар енгізіледі. Осыдан кейін бірінші деңгейдің көмекші алгоритмдері құрастырылады, оларда екінші деңгейдегі көмекші алгоритмдерге шақырулар болуы мүмкін және т.б. Төменгі деңгейдегі көмекші алгоритмдер тек қарапайым командалардан тұрады.

Кез келген күрделі объектілерді жобалауда дәйекті детальдау әдісі қолданылады. Бұл дизайнердің ойлауының табиғи логикалық тізбегі: бөлшектерге біртіндеп тереңдету. Біздің жағдайда дизайн туралы да айтамыз, бірақ олай емес техникалық құрылғылар, бірақ алгоритмдер. Басқа жолмен біршама күрделі алгоритмді құру іс жүзінде мүмкін емес.

Тізбектелген детальдау әдісінде алдымен бастапқы мәселе талданады. Оның қосалқы тапсырмалары бар. Мұндай қосалқы тапсырмалардың иерархиясы құрастырылған. Содан кейін қарапайым командалардан тұратын алгоритмдер алынғанға дейін негізгі алгоритмнен (негізгі программадан), одан кейін деңгейді дәйекті тереңдетумен көмекші алгоритмдер (ішкі бағдарламалар) бастап алгоритмдер (немесе бағдарламалар) құрастырылады.

Бөлшектеудің бірінші қадамы. Біріншіден, біз тек олардың тақырыптарын (спецификацияларын) көрсете отырып, барлық қажетті ішкі бағдарламаларды сипаттаймыз. Ішкі бағдарламалардың денесінің орнына түсіндірме түсініктемелер жазамыз (ішкі бағдарламаның бұл түрі «stub» деп аталады). Бағдарламаның негізгі бөлімін жазайық. Содан кейін біз процедуралар мен функцияларды егжей-тегжейлі бағдарламалауға ораламыз. Бағдарламалаудың бірінші кезеңінде ішкі программаның денесінің орнына оның мақсатын түсініктеме түрінде сипаттаймыз.

Ақпараттық кезеңнің басталуы

Адамзаттың дамуы ең үлкен ақыл-ойды белгілі бір процестерді автоматтандыру туралы ойлауға көбірек итермеледі. Бағдарламалау кезеңінің басталуы әртүрлі дереккөздер бойынша 19-шы ғасырдың басынан 20-шы ғасырдың ортасына дейінгі аралықтағы бірнеше кезеңдерге жатқызылады. Ондаған жылдар ішінде көптеген жазу әдістері пайда болды. бастапқы код. Олардың әрқайсысы өз ұстанымдары мен идеяларымен түбегейлі ерекшеленеді. Өткен ғасырдың 70-жылдарында пайда болған құрылымдық бағдарламалауды қарастырайық.

Біраз тарих

Бұл техника пайда болғанға дейін ассемблер өте кең таралған - ең қарапайым командалармен жұмыс істейтін тіл, содан кейін олар компьютерге тікелей түсінікті машиналық кодқа аударылды. Бұл әдіс салыстырмалы түрде шағын бағдарламаларды жазу үшін ғана қолданылған. Бұған қоса, басқа біреудің кодын түсіну өте қиын, тіпті мүмкін емес еді. Бірақ жаңа әдістеменің пайда болуымен даму процесі әлдеқайда жылдам болды.

Құрылымдық бағдарламалаудың негізгі принциптері

Құрылымдық тәсілдің негізгі тұстарын егжей-тегжейлі қарастырайық.

1. Бастапқы кодта бар модульдік құрылым. Бұл бағдарлама шын мәнінде кішірек бірліктерге – функциялар мен процедураларға бөлінгенін білдіреді. Бұл процедураларды әзірлеудің кез келген жерінен шақыруға болады. Процедуралар – аты бар және алгоритммен көрсетілген арнайы әрекеттерді орындайтын кодтың таңдалған бөлімдері. Осы мүмкіндіктерге қосымша функциялар кейбір айнымалыларды есептеуді жүзеге асырады, сонымен қатар бағдарламаның негізгі бөлігінде пайдалануға болатын қайтарылатын мәнге ие. Сонымен қатар, кейбір тілдер рекурсияны қолдайды - «өзінен» шақыру. Мәселені шешу үшін бұл тиімді болуы мүмкін, бірақ көбінесе циклге әкеледі.

2. Жоғарыдан төменге немесе төменнен жоғарыға. Құрылымдық бағдарламалау бірнеше бағытты қолдайды. Бастапқы код барысында мақсаттарды, міндеттерді дәйекті анықтау және оларды жүзеге асыру – «жоғарыдан төменге» көзқарас. Бұл әдістеме жазбаша бағдарламаны зерттеу және «тар жолдарды» анықтау тұрғысынан ең түсінікті. Дегенмен, тағы бір жағы бар - төменнен жоғары қарай. Ол әдетте бағдарламаның нақты алгоритмі әлі жасалмаған кезде қолданылады, бірақ қазірдің өзінде нақты әрекеттерді жүзеге асыратын бөлек ішкі бағдарламаларды жазуға болады.

3. Басқару элементтері. Құрылымдық бағдарламалау кейбір «ассемблер» тәсілдерінен құтылды. Төмен деңгейлі тілдерде шартсыз секіру (goto) жиі қолданылады, оны бақылау және басқару өте қиын. Бағдарламалаудың құрылымдық тәсілі оның орнына келесі элементтерді пайдаланады: цикл, шарт және реттілік.

Бағдарламалау тілдері

Бұл әдістеменің дамуымен бағдарламалау тілдері пайда болып, дами бастады. Құрылымдық тәсілді Паскаль (Паскаль), С (Ci), сондай-ақ ескіргені - Алгол (Алгол) сияқты танымал әдістер жүзеге асырады.

Эпилог

Кезінде құрылымдық бағдарламалау ақпараттық технология ортасында айтарлықтай кең тараған және сол кезеңдегі ең күрделі міндеттерді шешуге көмектесті. Дегенмен, өмір бір орында тұрмайды, ал технологиялық прогресс тың идеяларды қажет етеді.

Құрылымдық бағдарламалау -бұл сөзсіз жалпы принциптержәне оларды құру және тестілеу процестерін жеңілдету, бағдарламалаушылардың өнімділігін арттыру және нәтижелі бағдарламаның оқылуын жақсарту мақсатында бағдарламаларды жобалау, әзірлеу және пішімдеу ережелері. Бағдарламаның құрылымы мен есепті шешу алгоритмі түсінікті, дұрыстығын дәлелдеуге және өзгертуге оңай болуы керек. Негізінде құрылымдық тәсіл алгоритмдеу және бағдарламалаудағы беймаза стильден бас тарту (атап айтқанда, goto операторын қабылдамау) және оқуға оңай алгоритмдер мен бағдарламаларды құрудың шектеулі стандартты әдістерін анықтау болып табылады. үлкен даму кезінде әсіресе маңызды болып табылатын нақты анықталған құрылым бағдарламалық жүйелер.

Құрылымдық бағдарламалау әдістерін, мысалы, бірқатар күрделі операциялық жүйелерді әзірлеуде қолдану тәжірибесі көрсеткендей, бұл жағдайда жүйенің логикалық құрылымының дұрыстығы оңай дәлелденеді, ал жүйенің өзі жеткілікті түрде толық тестілеуге мүмкіндік береді. Бағдарламаларды жөндеу және тестілеу қиындықтарын азайту бағдарламалаушының өнімділігін арттыруға әкеледі, өйткені әзірлеу уақытының үштен жартысы бағдарламаны тестілеуге жұмсалады. Бағдарламалаушының өнімділігі әдетте бір күнде жаза алатын жөндеуден өткен мәлімдемелер санымен өлшенеді. Шамамен есептер құрылымдық бағдарламалау әдістерін қолдану бұл санды 5-6 есеге арттыруға болатынын көрсетеді. Сондай-ақ, құрылымдық бағдарламалау бағдарламалау процесінің өзін белгілі бір ұйымдастыруды және бағдарламаларды жобалаудың белгілі бір технологиясын қамтиды, бұл да бағдарламашылардың өнімділігіне оң әсер етеді.

Құрылымдық бағдарламалау негіздері.Құрылымдық бағдарламалаудың теориялық негізі болып табылады құрылымдау теоремасы, одан кез келген практикалық есептелетін есепті шешу алгоритмін (бағдарламасын) үш элементарлық негізгі басқару құрылымын қолдану арқылы көрсетуге болатыны шығады: реттілік құрылымы (тізбегі); тармақталу құрылымдары, цикл құрылымдары күріш. 6,5-6,7, тиісінше, мұндағы P - шарт, S - оператор.

Тізбек құрылымыалгоритмнің табиғи ағынын білдіреді - бірінен соң бірі орындалатын операторлардың кез келген тізбегі (6.5-суретті қараңыз). Бағдарламалау тілінде бұл енгізу, шығару және тағайындау мәлімдемелерінің тізбегіне сәйкес келеді.

Шешім факторын білдіреді, кейбір логикалық P шартын тексеруді және осы тексерудің нәтижелеріне байланысты S1 операторын немесе S2 операторын орындауды қамтиды. Бағдарламалау тілдерінде (мысалы, Паскаль) егер P, содан кейін SI басқа S2 операторы арқылы жүзеге асырылады (6.6-суретті қараңыз).

Цикл құрылымы (алғы шарты бар цикл)есептеудің қайталану коэффициентін білдіреді, S операторының орындалуы (шын) логикалық болған кезде бірнеше рет қайталануын қамтамасыз етеді.

Күріш. 6.5.Тізбек құрылымы

Күріш. 6.6.

P шарты. Бағдарламалау тілдерінде (мысалы, Паскаль) оны P do S кезінде оператор орындайды (6.7-суретті қараңыз).

Басқару құрылымдарының негізгі жиынтығы функционалды түрде толық, яғни. оның көмегімен кез келген ерікті күрделі алгоритмді құруға болады, алайда, неғұрлым ықшам және көрнекі алгоритмдер мен бағдарламаларды жасау үшін қосымша басқару құрылымдары қолданылады: қысқартылған тармақталу құрылымы; опцияның немесе бірнеше таңдаудың құрылымы; параметрі бар цикл құрылымы; постшартпен цикл құрылымы. Әртүрлі бағдарламалау тілдерінде негізгі басқару құрылымдарының орындалуы әртүрлі болуы мүмкін, мысалы, барлық ұсынылған құрылымдар Паскаль тілінде жүзеге асырылады.

Кез келген программаны негізгі құрылымдардың композициясы арқылы құруға болады: не оларды тізбектей қосу арқылы – бірізді құрылымдарды құра отырып, немесе бір-біріне ұя салу арқылы – кірістірілген құрылымдарды қалыптастыру.

Құрылымдардың әрқайсысы бір кіріс және бір шығысы бар бір функционалды блок ретінде қарастырылуы мүмкін. Негізгі басқару құрылымдарының бөлігі болып табылатын S, SI, S2 блоктары өздері солардың бірі бола алады, сондықтан ұялы конструкциялар мүмкін. Дегенмен, «ұя салудың» дәрежесі мен тереңдігі қандай болса да, кез келген дизайн, сайып келгенде, бір кіріс пен бір шығысқа ие болуы маңызды. Сондықтан кез келген күрделі құрылымды бір кіріс және бір шығысы бар «қара жәшік» ретінде қарастыруға болады. Осылайша, кез келген құрылымды функциялық блокқа түрлендіруді енгізуге болады. Сонда стандартты құрылымдардан тұратын кез келген алгоритм бір функционалды блокқа ретті түрлендіруге мүмкіндік береді және бұл түрлендірулер тізбегі алгоритмді түсіну және оның дұрыстығын дәлелдеу құралы ретінде пайдаланылуы мүмкін. Трансформациялардың кері тізбегі бірте-бірте ашылған алгоритмді жобалау процесінде қолданылуы мүмкін. функционалдық блокнегізгі элементтердің күрделі құрылымына айналады.

Үлкен бағдарламаларды құрылымдау және түсіну үшін PS әзірлеудің модульдік принципін қолдайтын қосымша құрылымдық құралдар да қолданылады: бұл ішкі бағдарламалар мен модульдер. Машинаны пайдалану ішкі бағдарламалар (процедуралар мен функциялар) -бұл бөлек (жиі қайталанатын) код бөлімдерін бағдарламаның әртүрлі нүктелерінен және басқа ішкі бағдарламалардан кейінгі бірнеше рет шақыру үшін өздерінің кіріс және шығыс деректері бар тәуелсіз бағдарлама бірліктеріне бөлу мүмкіндігі. Модульқұрылымдық бағдарламалаудың негізгі принциптерінің біріне - үлкен тапсырмаларды ішкі тапсырмаларға бөлуге сәйкес деректер мен ішкі бағдарламалардың сипаттамаларын олардың функциялары мен мақсатына қарай топтастыруға мүмкіндік беретін типтердің, деректердің, процедуралар мен функциялардың сипаттамаларының дербес жинақталған кітапханасы болып табылады.

Бағдарламаны әзірлеу әдістемесі.Құрылымдық бағдарламалауға байланысты бағдарлама жасаудың екі әдісі (стратегиясы) кең тараған: жоғарыдан төмен бағдарламалау; төменнен жоғары бағдарламалау.

Жоғарыдан төмен бағдарламалау немесе жоғарыдан төмен бағдарламаны жобалау, бұл бағдарламаны әзірлеу әдістемесі, онда әзірлеу мәселені шешу мақсаттарын анықтаудан басталады, содан кейін егжей-тегжейлі бағдарламамен аяқталады. Біріншіден, шешімін көрсетуге болатын бірнеше жаһандық міндеттер бөлінеді жалпы құрылымфункционалдық тәуелсіз блоктар. Әрбір осындай блоктың логикалық құрылымын әзірлеу және оны өзгерту басқа блоктарға тәуелсіз жүзеге асырылуы мүмкін. Жобаның осы бірінші кезеңінде ең маңызды және маңызды байланыстар ашылады, әрбір блоктың функционалдық мақсаты, оның кіріс және шығыс деректері анықталады. Жобалаудың кейінгі кезеңдерінде жалпы схеманың жеке функционалды блоктарының логикалық құрылымы нақтыланады (детализацияланады), оны қарапайым нұсқауларға дейін детализациялаудың бірнеше кезеңдерінде де жүзеге асыруға болады. Жобаның әр кезеңінде бірнеше тексерулер мен түзетулер орындалады.

Бұл тәсіл өте ұтымды, ол күрделі бағдарламалық жобаларды әзірлеу процесін айтарлықтай жылдамдатады және қате шешімдерді үлкен дәрежеде болдырмайды. Сонымен қатар, кейбір ішкі бағдарламаларды (модульдерді) дереу жүзеге асырмай, басқа бөліктері аяқталғанша оларды әзірлеуді уақытша кейінге қалдыру мүмкін болады. Мысалы, күрделі математикалық функцияны есептеу қажеттілігі туындаса, онда мұндай есептеудің жеке ішкі бағдарламасы бөлінеді, оны бір оператор уақытша жүзеге асырады, ол жай ғана қажетті мәнді тағайындайды. Бүкіл қолданба жазылып, жөндеуден өткен кезде, сіз осы күрделі мүмкіндікті енгізуді бастай аласыз.

Бағдарламалау төменнен жоғарыға немесе төменнен жоғарыға бағдарламалық жасақтаманың дизайныбұл жалпы схеманы әзірлеу аяқталмаған ішкі бағдарламаларды (процедураларды, функцияларды) әзірлеуден басталатын бағдарлама әзірлеу әдістемесі. Бұл әдіс жоғарыдан төмен дизайнға қарағанда азырақ ұнайды, өйткені ол жиі жағымсыз нәтижелерге, кодты қайта жазуға және әзірлеу уақытының ұлғаюына әкеледі. Жаңа жоба белгілі меншік шешімдерін пайдаланған кезде оны пайдалану орынды болуы мүмкін.

Бағдарламалық қамтамасыз ету жобаларын әзірлеудің жалпы принциптері.Күрделі бағдарламалық жобаларды әзірлеуде құрылымдық бағдарламалау технологиясын пайдалану келесі принциптерге негізделген:

  • бағдарламалау «жоғарыдан төменге» жүргізілуі керек;
  • бүкіл жоба бір кіріс және бір шығысы бар модульдерге/ішкі бағдарламаларға бөлінуі керек;
  • кез келген ішкі бағдарлама тек үш негізгі құрылымға мүмкіндік беруі керек: операторлардың дәйекті орындалуы, тармақталу және цикл;
  • goto басқару операторын сөзсіз беруге рұқсат етілмейді;
  • құжаттама бағдарламалаумен бір уақытта, ішінара бағдарламаға түсініктемелер түрінде жасалуы керек. Құрылымдық бағдарламалаудың принциптері мен әдістерін қолдану бағдарламалардың сенімділігін (жобалау кезінде жақсы құрылымдалғандықтан, бағдарламаны тексеру және жөндеу оңай) және олардың тиімділігін (бағдарламаны құрылымдау оңай табу мен түзетуді жеңілдетеді) арттыруға мүмкіндік береді. қателерді және жеке ішкі бағдарламаларды басқаларға тәуелсіз қайта жасауға / өзгертуге болады), уақыт пен шығынды азайтады бағдарламалық қамтамасыз етуді әзірлеу, бағдарламалардың оқылуын жақсарту.

Дәріс 1. Объектіге бағытталған программалау.

Объектіге бағытталған бағдарламалау (OOP) үлкен бағдарламаларды құрудың басым стилі болып табылады. Бағдарламалаудағы құрылымдық тәсіл эволюциясының негізгі кезеңдері қарым-қатынасты жақсырақ түсінуге көмектеседі құрылымдық көзқарас, модульдік бағдарламалаужәне OOP.

Бағдарламаларды жасау бірлігінің құны соңғы уақытқа дейін аз өзгерді. Бағдарлама көлемінің өсуімен оны құру бірлігінің құны сызықты емес түрде өсуі мүмкін. Күрделі бағдарламаларды жасауға кететін уақыт бағдарламалар санының квадратына немесе тіпті текшесіне пропорционал. Сондықтан бағдарламалау технологиясының дамуын анықтайтын негізгі факторлардың бірі бағдарламалық өнімдерді (БҚ) жобалау мен құруға кететін шығындарды азайту немесе бағдарламалаудың күрделілігімен күресу болып табылады.

ПХД дизайны мен құрылыс әдістерінің эволюциясына әсер ететін басқа факторлар:

Архитектураларды өзгерту есептеуіш құралдар(Күн) ұлғайту мүддесінде
өнімділік, сенімділік;

Пайдаланушының ұшақпен әрекеттесуін жеңілдету және әуе кемесін интеллектуалдандыру.
Соңғы екі фактордың әрекеті ұшақты бағдарламалық қамтамасыз етудің күрделілігінің артуына байланысты. Күрделілігібағдарламалау мен бағдарламалардың өзіне тән қасиетін білдіреді пайда боладыбағдарламаларды құру уақыты мен құнында, бағдарлама мәтінінің көлемінде немесе ұзындығында, оның логикалық құрылымының сипаттамаларында, басқаруды тасымалдау операторларымен (тармақталу, циклдар, ішкі бағдарлама шақырулары) көрсетілген.

Бағдарламалау күрделілігінің 5 көзі бар:

Шешілетін мәселе;

Бағдарламалау тілі;

Бағдарламаның орындалу ортасы;

Бағдарламалық қамтамасыз етуді ұжымдық өңдеу және құрудың технологиялық процесі;

Алгоритмдер мен деректер түрлерінің әмбебаптығы мен тиімділігіне ұмтылу.

Күрделілік қасиетін жою мүмкін емес, бірақ оның көрінісінің сипаттамаларын басшылық немесе ұйым өзгертуі мүмкін.

Бағдарламалауда кеңінен қолданылады негізгі принципадамға ерте заманнан белгілі күрделі жүйелерді басқару - devide et impera(бөліп ал және жең, лат.) және кез келген күрделі техникалық жүйелерді әзірлеуде және жобалауда қолданылады. Осы принциптің бірінші бөліміне сәйкес, күрделі бағдарламалық жүйені жобалау кезінде, алгоритмдік декомпозиция мәселе шешілуде.

Декомпозицияның мақсаты әзірленетін жүйені өзара әрекеттесетін шағын ішкі жүйелер (модульдер немесе блоктар) түрінде көрсету болып табылады, олардың әрқайсысы болуы мүмкін. жөндеубасқаларға қарамастан. Ішкі жүйелерге бөлінген жүйені жобалау кезінде мұндай бөлімнің жоқтығына қарағанда бөлшектердің әлдеқайда аз саны туралы ақпаратты есте сақтау қажет.


Терминмен бірге ыдырау , термині де қолданылады құрылымдау мәселелер, тапсырмалар немесе бағдарламалар. Бағдарламаларды белгілі бір процедуралар мен функцияларды жүзеге асыратын және қарым-қатынастардың белгілі бір иерархиясын құрайтын салыстырмалы түрде тәуелсіз үлкен бөліктерге бөлу идеялары көрсетілген. құрылымдық көзқарас дамытуға және жасауға бағдарламалық құралдар. Бағдарламалауда құрылымдық тәсіл алғашқы ішкі бағдарламалар мен функциялардың пайда болуымен пайда болды. процедуралық стиль. Бұл стиль ережеге негізделген: компьютер жадында сақталуы қажет айнымалылар мен тұрақтыларды анықтау және оларды өңдеу алгоритмін сипаттау.

Құрылымдық тәсілдің теориялық тұжырымы 70-ші жылдардың басында программалаудың теоретиктері мен практиктерінің (А.П.Ершов, Э. Йодан, Н. Вирт) еңбектерінде болды. Құрылымдық бағдарламалаудың пайда болуын атап өту керек, онда бағдарлама құрылымына тапсырыс беру идеясы белгілі бір дәрежеде көрініс тапты. Құрылымдық бағдарламалау құрылымы операторлар немесе блоктар «ағашына» жақын бағдарламаларды құрастыруға назар аударады. Ағаш типті құрылымды стандарттың бір түрі ретінде пайдалану оның талдау және енгізу үшін қарапайым құрылым болуымен түсіндіріледі.

Құрылымдық көзқарастың одан әрі дамуы әкелді модульдік бағдарламалау. Ол өзара әрекеттесетін модульдер немесе бағдарламалар иерархиясы түріндегі қолданбалы тапсырманың декомпозициясын қарастырады. Деректер мен өңдеу процедуралары бар модуль офлайн режимде әзірлеу және жасау үшін ыңғайлы. Өңдеу түрлері бойынша модульдердің мамандануы және оларда белгілі бір типтегі деректердің болуы модульдік бағдарламалау мен OOP арасындағы байланысты көрсететін қасиеттер болып табылады.

Эволюцияның барлық дерлік аспектілерін көрсететін ПХД өндірушілерінің ең маңызды құралдары болып табылады бағдарламалау тілдері.

Бағдарламалау тілі бастапқыда компьютерге бағытталған және компьютердің аппараттық және бағдарламалық құралдарын басқаруға арналған командаларға оңай аударылатын деректер түрлерінің, операторлардың, операциялардың, функциялардың жиынтығын қамтиды. Сонымен қатар қажетті жадты, бағдарламаның орындалу уақытын және аудармашыны құруға кететін шығынды азайту тұрғысынан тілдік сөйлемдерді машиналық кодтарға аударудың тиімділігін барынша арттырған жөн. Сонымен қатар программалау тілі программистке бағытталған және белгілі бір пәндік саладағы қолданбалы есептерді программалар түрінде шешу кезінде объектілерді, олардың қасиеттерін және мінез-құлқын модельдеуге арналған құралдарды ұсынады.

Қолданбалы бағдарламаларды құрастыру тиімділігін арттыру бағытында тілдердің дамуы тілдердің келесі деңгейлерге бөлінуіне әкелді:

Төмен деңгей (машинаға бағытталған тілдер – ассемблер тілдері),

Жоғары деңгей (процедуралық бағытталған тілдер: FORTRAN, ALGOL,

Шешілетін тапсырманың деңгейі (проблемаға бағытталған тілдер – SQL).

Кіріспе деректер түрлерітехно-логияны дамытудың тағы бір бағытын белгіледі.
программалау логикасы. Деректерді теру екеуін де жеңілдетуге арналған
бағдарламалау және қолдану арқылы қателерді анықтауды автоматтандыру
функцияларды шақыру кезінде операндтар және нақты параметрлер түріндегі деректер.
Қолданылуы құрылымдық түрлерідеректербіріншіден, қолданбалы тапсырманың деректер құрылымдарын және программалық модульдердің функцияларымен өңделетін мәліметтерді салыстыру кезінде алгоритмист жұмысын жеңілдетуге, екіншіден, өңдеу алгоритмін кодтау кезінде программисттің күнделікті жұмысының көлемін азайтуға мүмкіндік береді.

«Мәліметтер түрі» ұғымын жалпылау нәтижесі болып табылады сыныптаробъектілер (C++), олар элементтер ретінде белгілі бір типтегі деректерді ғана емес, сонымен қатар оларды өңдеу әдістерін де (функциялар) қамтуы мүмкін.

Осылайша, бағдарламалау технологиясының дамуымен бағдарламаларда да, деректер түрлерінде де, шешілетін қолданбалы мәселенің құрылымы барған сайын адекватты түрде көрсетілді және модульдерде деректер мен бағдарламалардың сәйкес интеграциясы жүзеге асырылды. Сонымен қатар, бағдарламалау тілдері толықтырылды білдіредіүшін қажет сипаттамаларұқсас құрылымдар. Абстракциялық және модульдік идеялардың дамуы программалауда пайда болуына әкелді объектілік тәсіл .

Адам бейнелерде немесе заттарда ойлайды, олардың қасиеттерін біледі және оларды белгілі бір оқиғаларға сәйкес басқарады. Ежелгі гректер дүниені заттар мен оқиғалар түрінде көруге болады деген идеяға ие болды. Адамдар әдетте бар объектіге бағытталғанәлемге көзқарас. Сонымен, телефон туралы ойлай отырып, адам оның пішіні мен түсін ғана емес, сонымен қатар қоңырау шалу мүмкіндігін, қоңырау дыбысының сипатын және басқа да бірқатар қасиеттерді (техникалық біліміне, қиялына байланысты) елестете алады. .

Бағдарламалау тілі шешілетін мәселенің шарттарына сәйкес имитацияланған объектілердің қасиеттерін және объектілермен манипуляциялау тәртібін немесе олардың өзара әрекеттесу тәртібін сипаттауға мүмкіндік береді. Алғашқы бағдарламалау тілдері математикалық объектілерге, калькулятордың белгілі бір моделіне бағытталған. Сондықтан оларда айнымалы, тұрақты, функциялық, формалды және нақты параметрлер сияқты конструкциялар болды. Бағдарламашылар өз бағдарламаларын өзара әрекеттесетін функциялар мен модульдер ретінде көрсетті. Бағдарламалау сипаты процедуралық бағытта болды, өйткені деректермен әрекеттер тізбегіне басымдық берілді. Сәйкесінше, FORTRAN, PL-1, C сияқты бағдарламалау тілдері аталады процедуралық бағытта.

Мәліметтер мен ішкі бағдарламалар оларды қолданудың нақты аймақтары үшін күрделі бағдарламалық жүйелерді жасайтын дизайнерлердің логикасына сәйкес модульдерге біріктірілді. Модульдерге біріктіру логикасы бірқатар факторлармен анықталды, олардың арасында атап өту керек домен сипаттары: пәндік облыс объектілерінің белгілі бір класына сәйкес келетін деректер мен оларды өңдеудің ішкі бағдарламалары модульге біріктірілді. Сонымен, жолды өңдеу модулінде жолдармен негізгі операцияларды орындауға арналған функциялар болды: біріктіру, салыстыру, көшіру, жол ұзындығын есептеу.

Модульдік бағдарламалау идеясының дамуы пәндік облыстың объектілерін (модельдік объектілер) бағдарламалық құрылымдармен салыстыру болып табылады. объектілер, объект түрлерінемесе сыныптар (объектілерді модельдеу). Модельдеу объектілерінде модельденетін объектілердің қасиеттерін сипаттайтын деректер мен функциялар болады. Сонымен, деректер индикативті немесе сандық қасиеттерді (масса, ұзындық, қуат, баға) көрсете алады, ал функциялар мінез-құлықты немесе операциялық қасиеттері(массасын өзгерту, қуатты есептеу, бағаны орнату). Сонымен, объектілік тәсілмен мәліметтерді және оларды өңдеу функцияларын біріктіру пәндік аймақтың құрылымымен, яғни модельденетін объектілердің жиынтығымен, олардың шешілетін мәселе шеңберіндегі өзара әрекетімен анықталады.

Модельделген объект әрқашан адамға біртұтас, интегралды нәрсе ретінде ұсынылады, бірақ ол бөліктерден немесе басқа объектілерден тұруы мүмкін. Объектінің оның қасиеттерінің немесе құрамдас бөліктерінің өзара байланысты жиынтығы түріндегі тұтас бейнеленуі болып табылады негізгі принципобъектілік тәсіл.

Объектілік тәсіл бағдарламалауда 70-ші жылдардан бастап дами бастады (Smalltalk, CLOS, Ada). Бұл тілдер деп аталады мақсат. Иерархиялық классификациянысандар және мұрагерлікқасиеттері 80-жылдары пайда болған объектілі-бағытталған тәсілдің бастапқы идеялары болып табылады. Бағдарламалаудың объектілі-бағытталған стилінің салыстырмалы түрде баяу дамуының себептерінің бірі оның процедуралық стильден айтарлықтай айырмашылығы болып табылады.

Жақсы жұмысыңызды білім қорына жіберу оңай. Төмендегі пішінді пайдаланыңыз

Білім қорын оқу мен жұмыста пайдаланатын студенттер, аспиранттар, жас ғалымдар сізге алғыстары шексіз.

http://www.allbest.ru/ сайтында орналасқан.

Курстық жұмыс

Жобалау мен бағдарламалаудың модульдік, құрылымдық және объективті тәсілдері

Кіріспе

2.1.2 Құрылымдық көзқарас

2.2.2 Модульдік тәсіл

Қорытынды

бағдарламалауды басқару дизайны

Кіріспе

Бағдарламалау ғылым мен техниканың салыстырмалы түрде жас және қарқынды дамып келе жатқан саласы. Нақты әзірлемелерді жүргізу және қолданыстағы бағдарламалық-аппараттық қамтамасыз етуді жетілдіру тәжірибесі үнемі қайта қаралуда, нәтижесінде жаңа әдістер, әдістемелер мен технологиялар пайда болады, бұл өз кезегінде бағдарламалық жасақтаманы әзірлеудің неғұрлым заманауи құралдарының негізі болып табылады. Жаңа технологияларды құру процестерін зерттеп, олардың негізгі тенденцияларын осы технологияларды бағдарламалаудың даму деңгейімен және бағдарламашыларға қолжетімді бағдарламалық және техникалық құралдардың мүмкіндіктерімен салыстыру арқылы анықтаған жөн.

Бағдарламалау технологиялары ақпараттық қорлармен, жоба процедураларының және жобалық операциялардың сипаттамасымен әдістер түрінде ұсынылған бағдарламаларды құрудың дәлелденген стратегиялары болып табылады. Құрылымдық программалау технологиясы, мәліметтердің рационалды құрылымы бар бағдарламаларды жобалау технологиясы, объектіге бағытталған бағдарламалау технологиясы, визуалды бағдарламалау технологиясы бар.

Бұл технологиялардың әрқайсысы бір немесе бірнеше бағдарламалау парадигмаларын (концепциялар, сенім жүйелері) пайдаланады. Соңғысы бағдарламаларды жазудың әртүрлі тәсілдерін білдіреді. Олардың әрқайсысы талап етеді: өзіндік ойлау түрі, арнайы оқыту мектебі, қолданылатын тілмен анықталатын бағдарламалау әдістері мен әдістері.

Бұл арада программалық қамтамасыз етудің эволюциясы, ЭЕМ эволюциясы эволюция заңдары, иерархия заңдары дәл осы салада айқын көрінетінін анық көрсетеді. Бағдарламалаушылардың алдыңғы буыны тікелей бағдарламалау арқылы бағдарламалауды үйренді. Бағдарламашылар абстрактілі категорияларда ойлады (машинаның екілік кодтары). Пайдаланушы нәтижені мәселені шешу курсын (жолын) білмей-ақ алды. Тығырықтан шығу жолы алдымен құрылымдық (модульдік) бағдарламалау жолында табылды, онда тапсырма блоктарға (модульдерге) бөлінді, содан кейін осы немесе басқа бағдарлама құрылды. Типтік бағдарламалардың кітапханалары қалыптасты, олардан кірпіш сияқты басқа бағдарламалар құрастырылды. Мұнда қазірдің өзінде (бағдарламалауда, бірақ математикада және басқа ғылымдарда емес) мүлдем жаңа механизм пайда бола бастады, онда кеңістіктік «бейнелердің» шексіз саны белгілі бір стандартты кірпіштер жиынтығында көрсетіледі. Белгілі бір негізгі элементтердің белгілі бір жиынтығын пайдалана отырып, бағдарламаның белгілі бір «бейнесінің» ағашын дәйекті түрде өту нақты нәтижеге әкелді. Бағдарламалауда табиғи механизм дами бастады, оны өз мүмкіндіктері бойынша, мүмкін, тек адам миымен салыстыруға болады. Сонымен қатар, сол кірпіштерді бір кескіннің шеңберінде ғана емес, басқа компьютерлік кескіндерді жасау кезінде де бірнеше рет қолдануға болатын. Кірпіштердің өзі нақты «бейнелердің» жапырақтары болды. Сонымен қатар, кескіндері бар ағаштар желісі неғұрлым күрделі болса, соғұрлым «ұқсас» бейнелерді табу және анықтау мүмкіндігі күшті болады, компьютердің «интеллектуалдық» мүмкіндіктері соғұрлым көп болады.

Сонымен, компьютерлік технологияның дамуы, ең алдымен, адамның ол туралы білмей, иерархиялық жүйені ұйымдастырудың ең оңтайлы әдісін табиғаттан көшіруімен байланысты. Жұмыстың мақсаты – программа құрудың әртүрлі стратегияларын, олардың әдістерін, артықшылықтары мен кемшіліктерін (Паскаль тілінде программалау мысалында) қарастыру. Зерттеу объектісі – бағдарламаларды құру стратегиясы. Осы мақсатқа жету үшін келесі міндеттерді шешу қажет:

Әр түрлі бағдарламалау және дизайн тәсілдерін қарастырыңыз;

Қолданбалы тапсырманы орындауда тәсілдердің әрқайсысын қолданыңыз.

1. Технологиялар және бағдарламалау парадигмалары

1.1 Бағдарламалау парадигмасының эволюциясы

Иерархия заңдарының идеяларының салтанат құруының айқын мысалдарының бірі компьютерлік техниканың және ең алдымен компьютерлік бағдарламалық қамтамасыз етудің эволюциясы болуы мүмкін.

Компьютерлік бағдарламалық қамтамасыз ету аппараттық құралдарға қарағанда кейінірек пайда болды. Аппараттық құралдардың күрделілігі артқан сайын бағдарламалық қамтамасыз етудің мүмкіндіктері де өсті. Ассемблер, компиляторлар, операциялық жүйелер және мәліметтер қорын басқару жүйелері құрылды. байланысты бірқатар пәндердің өзегінде болса да компьютерлік технология, мысалы, математикалық логика, лингвистика, автоматтар теориясы және т.б., математика жатыр, мамандардың көпшілігінде бағдарламалық жасақтаманы әзірлеуге теориялық емес, прагматикалық көзқарас әлі де болған және әлі де бар.

Қазіргі бағдарламалау әдістерінің көпшілігін сипаттайтын төрт негізгі парадигма бар: императивті, қолданбалы, ережеге негізделген және объектіге бағытталған.

Императивті парадигма (құрылымдық, модульдік тәсіл негізінде жатыр). Бұл модель аппараттық құралдың мүмкіндіктерінен туындайды стандартты компьютер, нұсқауларды (командаларды) ретімен орындау. Алгоритмдер осы парадигмада қолданылатын абстракцияның негізгі түрі болып табылады. Оның негізінде көптеген операторға бағытталған бағдарламалау тілдері жасалды. Мұндай тілдегі бағдарлама операторлар тізбегінен тұрады, олардың әрқайсысының орындалуы бір немесе бірнеше жады ұяшықтарындағы мәннің өзгеруіне әкеп соғады. Жалпы, мұндай тілдің синтаксисі:

Оператор_1:

Оператор_2:

Бұл модель әдетте бағдарламалау тұжырымдамаларымен алғаш рет таныстырылған кезде кездеседі және көптеген кеңінен қолданылатын тілдер оны қолдайды (мысалы, C, C++, FORTRAN, ALGOL, PL/I, Pascal, Ada, Smalltalk және COBOL).

қолданбалы парадигма. Бағдарламалау тілі арқылы орындалатын есептеулердің басқа көрінісін білдіреді. Бұл парадигма бағдарлама орындайтын функцияны қарастыруға негізделген. Ол компьютер өтуі керек күйлердің ретін қарастырмайды. Сұрақ басқаша қойылады: қажетті нәтиже алу үшін машинаның бастапқы күйіне қандай функцияны қолдану керек (айнымалылардың бастапқы жиынын таңдап, оларды белгілі бір жолмен біріктіру арқылы)?

Есептеудің осы нақты көрінісін көрсететін тілдер қолданбалы немесе функционалды тілдер деп аталады. Мұндай тілдің синтаксисі әдетте келесідей болады:

Функция_n (...функция_2 (функция_1 (деректер))...)

Мұндай модельге ML және LISP сияқты тілдер қолдау көрсетеді.

Ережелер жүйесіне негізделген парадигма. Осы парадигмаға негізделген тілдер қажетті рұқсат ету шартының бар-жоғын тексереді және егер ол табылса, тиісті әрекетті орындайды. Ең танымал ережеге негізделген тіл - Prolog. Оны логикалық бағдарламалау тілі деп те атайды.

Мұндай тілде программаны орындау императивті тілде жазылған программаны орындауға ұқсайды. Бірақ операторлар бағдарламада анықталған реттілікпен орындалмайды. Орындау тәртібі рұқсат ету шарттарымен анықталады. Мұндай тілдердің синтаксисі келесідей:

қосу шарты_1 --> әрекет_1 қосу шарты_2 --> әрекет__2

шарт_n --> әрекет _n қосу

Кейде ережелер «егер әрекетке рұқсат беретін шарт» ретінде жазылады, сол жақта орындалатын әрекет жазылады.

Объектіге бағытталған парадигма (объектілік тәсіл негізінде). Бұл модель күрделі деректер нысандарын құрастырады. Олардағы операциялар үшін әдістердің белгілі бір шектеулі жиынтығы анықталады. Құрылған нысандар қарапайым нысандардың қасиеттерін иелене алады. Осы мүмкіндіктің арқасында объектілі-бағытталған бағдарламалар императивті тілдерде жазылған бағдарламаларға тән жоғары тиімділікке ие. Деректер нысандарының шектеулі жиынтығын пайдаланатын әртүрлі сыныптарды әзірлеу мүмкіндігі қолданбалы тілге тән икемділік пен сенімділікті қамтамасыз етеді.

Басқа да парадигмалар бар, олар әртүрлі мәселелерді шешу қажеттілігімен түсіндіріледі. Кез келген парадигманы практикалық қолданудың барлық салаларында ең жақсы деп санау мүмкін емес. Мысалы, есептеу тапсырмалары үшін императивті парадигма қолайлырақ, ал интеллектуалды жүйелерді жобалау үшін ережеге бағытталған парадигма қолданылады. Соңғы жылдары визуалды бағдарламалау парадигмасы ерекше танымалдыққа ие болды.

1.2 Басқару құрылымдары және ішкі бағдарламалар

Бастапқы бағдарлама теориясын Маддукс блок-схемалардың бір-бір иерархиялық декомпозициясын анықтау үшін құрылымдық бағдарламалау әдіснамасын жалпылау ретінде ұсынған. Бұл теория бағдарлама графиктері түйіндердің үш класын қамтуы мүмкін деп болжайды (1-сурет):

а) функционалдық түйіндер – программамен орындалатын есептеулерді көрсетеді және осы түйінге бір доға кіретін және бір шығыс доғасы бар тіктөртбұрыштармен бейнеленеді. Функция түйіндері орындалуы виртуалды машина күйінің өзгеруіне әкелетін тағайындау мәлімдемелерін білдіреді;

б) шешім түйіндері – бір кіретін және екі шығатын (шын және жалған) ромб түрінде бейнеленген. Бұл түйіндер предикаттарды білдіреді және шешім түйінінен басқару шын тармаққа немесе жалған тармаққа беріледі;

в) қосылыс түйіні – екі график доғасының бір шығыс доғасын құрайтын түйісетін нүктесі ретінде көрсетіледі.

1-сурет Бағдарлама графигіндегі түйіндер

Кез келген блок-схема тек осы үш құрамдас бөліктен тұрады.

Дұрыс бағдарлама блок-схема болып табылады, ол басқару құрылымының қандай да бір формальды моделі болып табылады, оның: бір кіріс доғасы; бір шығатын доға; кіріс доғасынан кез келген түйінге және кез келген түйіннен шығыс доғаға дейінгі жол.

Бастапқы бағдарлама қарапайым бағдарлама, оны кішігірім тұрақты бағдарламаларға бөлуге болмайды. Бұл ережеден ерекшелік бір негізгі бағдарлама болып саналатын функционалдық бірліктердің тізбегі болып табылады.

2. Жобалау және бағдарламалау тәсілдерінің эволюциясы

2.1 Жобалау мен бағдарламалауға құрылымдық көзқарас

2.1.1 Құрылымдық бағдарламалау түсінігі

Тарихи түрде императивті тілдер қазіргі уақытта бағдарламалауда басым. Дегенмен, 1970 және 1980 жылдары жүргізілген зерттеулер қолданбалы әдіс бағдарламаларды тексерудің және олардың дұрыстығын дәлелдеудің тиімді жолдарын қамтамасыз ететінін көрсетті. Мұны 2-суретте көрсетілген блок-схемадан көруге болады.

2-сурет 60-жылдардағы типтік бағдарлама блок-схемасы

Өткен ғасырдың 60-шы жылдары «стихиялық» бағдарламалау кезеңі ретінде сипатталады. Бұл кезеңде бағдарлама құрылымы, деректер типтері және т.б. Нәтижесінде код түсініксіз, сәйкес келмейтін болып шықты. Ол жылдары бағдарламалау өнер деп саналды. 60-жылдардың соңы бағдарламалаудағы дағдарыс.

Бұл дағдарыстан шығудың жолы – құрылымдық бағдарламалау парадигмасына көшу. 2-суретте 1960 жылдардағы бағдарламаларға тән блок-схема көрсетілген. Оның нақты құрылымы жоқ. Мұндай бағдарламаларды спагетти бағдарламалары деп атайды. Басқарудың алға-артқа қисынсыз берілістерінің көптігіне байланысты бағдарламаның орындалу уақытының әр сәтінде оның күйі қандай болатынын түсіну қиын.

3-суретте құрылымды дизайн көрсетілген. Бұл блок-схеманың әрбір сегментін нүктелі қорапқа салуға болады. Осы диаграммадағы осы төртбұрыштардың әрқайсысының бір кіру нүктесі және бір шығу нүктесі болады. Бұл бағдарламаны төрт ішкі бағдарлама функциясының құрамы ретінде қарастыруға болады, ал бағдарламаның әрекетін нүктелі тіктөртбұрыштың кірісі ретінде берілген күйді қабылдайтын және оны шығысында нәтижелі күйге түрлендіретін функция ретінде анықтауға болады. . Күрделі бағдарламаларды тәуелсіз фрагменттерге бөлмей, мыңдаған және он мыңдаған жолдармен жазыңыз, т.б. құрылымсыз бұл жай ғана мүмкін емес.

Құрылымдық бағдарламалау - бұл бағдарламада басқаруды беру үшін тек үш құрылым пайдаланылатын тәсіл, басқаруды дәйекті, шартты және итеративті тасымалдауға мүмкіндік береді.

Бұл жағдайда басқаруды сөзсіз беруге, мысалы, goto операторына тыйым салынады.

Нәтижесінде жүйелі, шартты және комбинациясы болып табылатын бағдарламадағы әрбір күрделі нұсқау циклдік операторлар, бағдарламаны салыстырмалы түрде тәуелсіз фрагменттерге бөлуге мүмкіндік беретін бір ғана кіру және бір шығу нүктесі бар.

3-сурет Құрылымдық жобалау бағдарламасының блок-схемасы

Құрылымдық бағдарламалау императивті бағдарламаларға қолданбалы әдістерді қолданудың нәтижесі болып табылады. Ол үшін бағдарламаны процедуралар жиынтығы ретінде сипаттауға болатын процедуралық-бағытталған тілдер қолданылады. Процедуралар бірін-бірі шақыра алады және әрқайсысы негізгі бағдарлама арқылы шақырылуы мүмкін, оны процедура ретінде де қарастыруға болады.

2.1.2 Құрылымдық көзқарас

Бағдарламалаудың құрылымдық тәсілі бағдарламалық қамтамасыз етуді әзірлеудің барлық кезеңдерін жүзеге асыруды қамтитын ұсынылатын әдістердің жиынтығы болып табылады. Оны жүзеге асыру мыналарды қамтамасыз етеді:

а) бағдарламаларды жазу және бақылау кезінде программисттердің өнімділігін арттыру;

б) техникалық қызмет көрсетуге неғұрлым қолайлы бағдарламаларды алу, өйткені олар жеке модульдерден тұрады;

в) әзірлеушілер тобының бағдарламаларын құру;

г) белгіленген мерзімде бағдарламаларды құруды аяқтау.

Құрылымдық бағдарламалар әдетте орындалатын қарапайым алгоритмге ие, жөндеу оңайырақ және бағдарламалау қателеріне азырақ сезімтал. Бұл қасиеттер ішкі бағдарламалардың маңызды ерекшелігінің салдары болып табылады, олардың әрқайсысы көп жағынан программаның дербес фрагменті болып табылады, негізгі бағдарламамен бірнеше параметрлердің көмегімен ғана байланысты. Ішкі бағдарламалардың мұндай тәуелсіздігі оларда бір немесе басқа алгоритмдік әрекетті бағдарламалық қамтамасыз етуді жүзеге асырудың барлық мәліметтерін локализациялауға мүмкіндік береді, сондықтан бұл мәліметтерді өзгерту, мысалы, жөндеу кезінде, әдетте негізгі бағдарламаның өзгеруіне әкелмейді.

Құрылымдық бағдарламалау тұжырымдамасы ақпаратты жасыру принципі бойынша бағдарламаны бөлек компоненттерге бөлуді қамтиды.

Ақпаратты жасыру принципі мынада: жергілікті объектілердің идентификаторлары (тұрақтылар, типтер, айнымалылар, процедуралар, функциялар, белгілер және айнымалы жазбалардағы өрістер), яғни берілген нұсқаулар тізбегі шегінде ғана қолданылатындар. осы нұсқаулардан тыс мағынасы бар.

Процедуралар мен функциялар табиғи мәтін бірліктері ретінде әрекет етеді, олардың көмегімен жергілікті идентификаторлардың өмір сүру аясы шектеледі.

Идентификатор – сәйкестендіру үшін пайдаланылатын немесе аталған таңбалар тізбегі (әріптен немесе астын сызудан басталатын және бос орындарды қамтымайтын әріптер, сандар және астын сызу тізбегі).

Идентификатордың қолданылу аясы (әрекеті) бағдарламаның оны пайдалануға болатын бөлігі болып табылады.

Идентификаторлардың қолданылу аясы олардың қай жерде жарияланғанымен анықталады. Егер идентификаторларды тек бір процедура немесе функция ішінде қолдануға болатын болса, онда мұндай идентификаторлар жергілікті деп аталады. Егер идентификаторлардың әрекеті бірнеше кірістірілген (кем дегенде бір) процедураларға және/немесе функцияларға таралса, онда мұндай идентификаторлар ғаламдық деп аталады. Идентификаторлардың ауқымын анықтау ережелері келесідей:

а) процедура/функция ішінде анықталған барлық идентификаторлар жарамды;

б) қоршаған контексттің барлық идентификаторлары, егер олардың атаулары процедура/функция ішінде жарияланған атаулардан өзгеше болса, жарамды болады;

в) жергілікті процедура/функция идентификаторлары ешқашан сыртқы ортада әрекет етпейді;

г) егер ғаламдық және жергілікті идентификаторлардың атаулары сәйкес келсе, олардың түрі бойынша сәйкес келетініне немесе сәйкес келмейтініне қарамастан тек ішкі, жергілікті идентификатор жарамды болады.

2.1.3 Құрылымдық жобалау әдістері

Кез келген өнімді, соның ішінде алгоритмді жобалау кезінде бастапқы кезеңде ең маңызды мәселелерге назар аударылады және көптеген жеке бөлшектер жасанды түрде еленбейді. Сондықтан ең көп таралған дизайн тактикасы - процесті бөлек қадамдарға бөлу. Құрылымдық тәсіл кейіннен жеке шағын ішкі бағдарламалар түрінде іске асыру мақсатында күрделі жүйелерді ыдыратуға (бөлуге) негізделген. Декомпозицияның басқа принциптерінің (объективті, логикалық және т.б.) пайда болуымен бұл әдіс процедуралық декомпозиция деп аталды. Әрбір осындай ыдырау қадамында мыналарға көз жеткізу керек:

а) белгілі бір мәселелерді шешу жалпы мәселені шешуге әкеледі;

б) жеке әрекеттердің бұл тізбегі ең ұтымды;

в) жүргізілген декомпозиция кейіннен бағдарлама жазылатын тілге мағынасы жағынан жақын нұсқауларды алуға мүмкіндік береді.

Бағдарламалық жүйелерді жобалаудағы жоғарыдан төменге көзқарас. Осы әдіске сәйкес бағдарламаны құру жоғарыдан басталады, яғни. ең маңызды, жалпы алгоритмді жасаудан. Жоғары деңгейде бағдарламаның бір немесе басқа бөлігін іске асырудың егжей-тегжейлері әдетте әлі анық болмағандықтан, бұл бөліктерді уақытша стендтермен ауыстыру керек.

Аяқталмаған бағдарламаны іске қосу (тұжырымдарды нақты жұмыс процедураларымен алмастырмас бұрын) төменгі деңгейлі алгоритмдерді құрастыру және енгізу алдында біршама сенімділік береді. Түпнұсқада іске асырылған алгоритм жеткілікті түрде күрделі болса, ол негізгі алгоритмді ерекшелеп, жаңа түйреуіштерді қолдана отырып, қайтадан құрылымдалады және т.б. (Stub - бұл компонент дұрыс пішінде жасалған уақытқа дейін оны әзірлеуді, яғни құрастыруды немесе сынауды жалғастыру үшін бағдарламада уақытша пайдаланылатын ауыстыру құрамдас бөлігі). Процесс бағдарламаның толық жұмыс істейтін нұсқасы жасалғанша жалғасады.

Іс жүзінде «таза» жоғарыдан төмен даму мүмкін емес. Кейінгі кезеңдердің бірінде бұрын жасалған таңдаудың адекватты болмағаны жиі кездеседі және бұл қайталанатын даму қажеттілігіне әкеледі.

Бағдарламалық қамтамасыз етуді әзірлеуде төменнен жоғарыға бағытталған тәсіл. Бұл жағдайда бағдарлама таңдалған бағдарламалау тілімен қамтамасыз етілген примитивтерден бастап бар элементтерден дәйекті түрде құрастырылады. Бұл процесс қажетті дайын бағдарламаны алумен аяқталады. Әрбір кезеңде бар элементтерден күштірек элементтер құрастырылады. Бұл элементтер одан да күшті элементтерді құру үшін келесі қадамда пайдаланылады және қажет бағдарламаны тікелей құрастыруға болатын элементтер алынғанша осылай жалғасады.

Тәжірибеде таза түрде жоғары қарай даму да, төмен қарай даму да мүмкін емес. Әрбір жаңа элементтің құрылысы оның әзірленіп жатқан бағдарламаға қойылатын талаптарға сәйкестігін тексеру үшін болашаққа шолумен бірге жүруі керек; бірақ бұл тәсілмен де, кейінгі кезеңде бұрын қолданылған құрылыс реті дұрыс таңдалмаған және жаңа итерация қажет екендігі жиі кездеседі.

Жаңа алгоритмдерді құру кезінде әдетте жоғарыдан төменге бағытталған әдіс басым болады. Бағдарламаларды сәл өзгертілген талаптарға бейімдеу кезінде көбінесе төменнен жоғарыға қарай әдіске артықшылық беріледі. Бұл әдістердің екеуі де құрылымдық бағдарламаларды жасауға мүмкіндік береді.

Құрылымдық жобалау принциптерін қолдау процедуралық бағдарламалау тілдері деп аталатындардың негізі болды. Әдетте, олар негізгі «құрылымдық» басқаруды тасымалдау операторларын қамтыды, ішкі бағдарламаларды орналастыруды, «көріну» деректерінің көлемін локализациялауды және шектеуді қолдады. Бұл топтың ең танымал тілдерінің арасында PL/1, ALGOL-68, Паскаль, С.

Әзірленген бағдарламалық жасақтаманың күрделілігі мен көлемінің одан әрі өсуі мәліметтерді құрылымдауды дамытуды талап етті. Нәтижесінде, тілдер реттелетін деректер түрлерін анықтау мүмкіндігіне ие. Сонымен бірге ғаламдық деректермен жұмыс істеу кезінде болатын қателер санын азайту мақсатында бағдарламаның ғаламдық деректеріне қол жеткізуді шектеуге деген ұмтылыс артты. Нәтижесінде модульдік программалау технологиясы пайда болып, дами бастады.

2.2 Жобалау мен бағдарламалауға модульдік көзқарас

2.2.1 Модульдік бағдарламалау түсінігі

Модульдік бағдарламалау - құрылымы мен тәртібі алдын ала белгіленген ережелерге бағынатын шағын тәуелсіз блоктардың (модульдердің) жиынтығы ретінде бағдарламаны ұйымдастыру.

Модуль (модульдік бағдарламалауда) - бұл ішкі бағдарламалар өңдейтін деректермен бірге өзара байланысты ішкі бағдарламалардың (процедуралар) жиынтығы.

Модульдік бағдарламалау үлкен бағдарламаларды жасауға арналған. Бағдарламашылар тобы үлкен бағдарламаларды жасаумен айналысады. Әрбір бағдарламашыға бағдарламаның кейбір тәуелсіз бөлігін әзірлеу тапсырылады. Және бұл жағдайда ол осы процедуралар үшін барлық қажетті процедуралар мен деректерді құруға жауапты. Деректерді жасыру (модульден тыс деректерге қол жеткізуге тыйым салу) олардың кездейсоқ өзгеруіне және сәйкесінше бағдарламаның бұзылуына жол бермейді. Бағдарламаның жеке бөліктерінің (модульдерінің) өзара әрекеттесуі үшін бағдарламашылар тобына негізгі бағдарламадағы құрастырылған модульдердің интерфейсін (өзара әрекетін) ғана ойластыру қажет.

Паскаль тілі тұрғысынан модуль құрылымы.

Модуль (бірлік) – мәтіні дербес құрастырылған (өздігінен) программалық блок.

Модуль 4 бөлімнен тұрады: тақырып, интерфейс бөлігі (декларациялар бөлімі), іске асыру бөлімі және инициализация бөлімі.

БІРЛІК<имя модуля>; (атауы)

INTERFACE (интерфейс бөлігі)

пайдаланады<используемые модули>;

Const<объявления глобальных констант>;

түрі<объявления глобальных типов>;

Var<описание глобальных переменных>;

процедура<заголовки(!) доступных процедур>;

функциясы<заголовки(!) доступных функций>;

IPLEMENTATION (іске асыру бөлімі)

пайдаланады<используемые при реализации модули>;

Const<объявления скрытых (локальных) констант>;

түрі<объявления скрытых (локальных) типов>;

Var<описание скрытых (локальных) переменных>;

процедура<тела(!) скрытых (локальных) процедур>;

функциясы<тела(!) скрытых (локальных) функций>;

<основной блок модуля = раздел инициализации>

2.2.2 Модульдік тәсіл

Модульдік тәсіл тұжырымдамасын бірнеше тұжырымдамалар мен ережелер түрінде тұжырымдауға болады:

а) үлкен тапсырмалар бірнеше кішірек, функционалды тәуелсіз ішкі тапсырмаларға бөлінеді - тек кіріс және шығыс деректерімен өзара байланысқан модульдер;

б) модуль бір кіріс және бір шығысы бар «қара жәшік». Бұл бағдарламаны жұмыс кезінде ауыртпалықсыз жаңартуға мүмкіндік береді, оған техникалық қызмет көрсетуді жеңілдетеді, сонымен қатар әртүрлі бағдарламалау тілдерінде бағдарламалық жобаның бөліктерін жасауға мүмкіндік береді;

в) әр модульде нақты тапсырмалар орындалу керек. Егер модульдің мақсаты анық болмаса, онда бұл модульдерге ыдырау жеткілікті түрде орындалмағанын білдіреді. Ыдырау процесі барлық модульдердің мақсатын және олардың оңтайлы комбинациясын нақты түсінуге дейін жалғастырылуы керек;

г) модульдің бастапқы мәтінінде модульдің мақсатын және оның барлық сыртқы сілтемелерін көрсететін тақырып және интерфейс бөлігі болуы керек;

д) программалық модульдерді әзірлеу кезінде реакцияны есепке алатын операциялардың арнайы блоктары қарастырылуы керек мүмкін қателердеректерде немесе пайдаланушы әрекеттерінде.

Модульдік тәсіл концепциясында бір немесе бірнеше үлкен міндеттерді бірлесіп шешетін бағдарламалық модульдер арасындағы бақылау және ақпараттық байланыстарды ұйымдастыруға үлкен мән беріледі.

Модульдермен жұмыс істеу кезінде олардың процедуралар мен функциялардан негізгі айырмашылығын есте сақтау қажет. Ғаламдық және жергілікті айнымалылар үшін дәстүрлі аумақ ережелері модульдер үшін жұмыс істемейді. Бұл тіл құрылымы негізгі бағдарламада жарияланған жаһандық айнымалылардың ішкі модуль мәлімдемелеріне әсер етуіне жол бермеу үшін жасалған. Сондықтан, егер барлық блоктар үшін қолжетімді бағдарламаларды енгізу қажет болса жаһандық сипаттамалар, содан кейін жаһандық декларациялар модулін жасап, оның сипаттамалары қажет болатын барлық модульдердің импорттарының тізіміне қосу керек.

Модульдік дизайн бірдей ғаламдық деректерді пайдаланатын ішкі бағдарламалар топтарын бөлек құрастырылған модульдерге (ішкі бағдарламалардың кітапханалары), мысалы, графикалық ресурс модуліне бөлуді қамтиды. Бұл технологияны пайдалану кезінде модульдер арасындағы байланыстар арнайы интерфейс арқылы жүзеге асырылады, бұл ретте модульді жүзеге асыруға (ішкі бағдарламалардың денелері және кейбір «ішкі» айнымалылар) қол жеткізуге тыйым салынады. Бұл технологияға Pascal және C (C++), Ada және Modula тілдерінің қазіргі нұсқалары қолдау көрсетеді.

2.3 Жобалау мен бағдарламалауға объективтік көзқарас

2.3.1 Объектіге бағытталған программалау

Объектіге бағытталған бағдарламалау – бұл бағдарламаны объектілер жиынтығы ретінде көрсетуге негізделген күрделі бағдарламалық жасақтаманы құру технологиясы ретінде анықталады (объект – күй айнымалыларының және байланысты әдістердің жиынтығы; әдістер объектінің сыртқы әлеммен әрекеттесуін анықтайды; әдістер нысан деп әрқайсысы белгілі бір сыныптың (түрдің) данасы болып табылатын декларациясы объект сипаттамасына енгізілген процедуралар мен функциялар түсініледі, ал сыныптар мүліктік мұрагерлік иерархияны құрайды. Мұндай жүйедегі бағдарламалық объектілердің өзара әрекеті хабарламаларды беру арқылы жүзеге асырылады.

Модульдік программалаумен салыстырғанда объектілі-бағытталған программалаудың басты артықшылығы бағдарламалық жасақтаманың «табиғи» ыдырауы болып табылады, бұл оның дамуын айтарлықтай жеңілдетеді. Бұл деректерді неғұрлым толық локализациялауға және оларды өңдеудің ішкі бағдарламаларымен біріктіруге әкеледі, бұл бағдарламаның жеке бөліктерін (объектілерін) дерлік тәуелсіз дамытуға мүмкіндік береді.

Логикалық бірлік ретінде объект жеке жад аймағында келесі деректер мен операцияларды (алгоритм коды бар әдістер) қамтиды:

а) мәндері объектінің ағымдағы күйін анықтайтын нысан өрістері (немесе бастапқы деректер атрибуттары);

б) арнайы хабарлама түрінде олардың шақыруына жауап ретінде әрекеттерді (алгоритмдерді орындауды) жүзеге асыратын объектілік әдістер;

в) қасиеттер – объектінің әрекетін, яғни сыртқы әсерлерге реакциясын анықтайтын әдістердің бөлігі.

Класстарды жариялау кезінде жоғарыда сипатталған объектілердің үш сипаттамасы анықталады: өрістер, әдістер және қасиеттер, сонымен қатар осы класстың атасы көрсетіледі.

Бағдарламалардағы объектілер нақты әлем құбылыстарының барлық реңктерін шығарады: олар «туылады» және «өледі»; олардың күйін өзгерту процестерді бастау және тоқтату; басқа нысандарды «өлтіру» және «тірілту».

2.3.2 Объектіге бағытталған дизайн

Объектіге бағытталған дизайн – жүйенің логикалық (сыныптар мен объектілер) және физикалық құрылымын (процестер мен құрамдас бөліктерге, файлдарға немесе модульдерге бөлу) көрсететін модельдерді көрсету әдістері мен объектілерді декомпозициялау процесін біріктіретін жобалау әдіснамасы. оның статикалық және динамикалық аспектілері.

Объектіге бағытталған парадигма жоғары деңгейлі парадигмаға айналып, құрылымдық бағдарламалау парадигмасының принциптеріне үстемдік етеді, өйткені ол шындықты модельдеумен, осы сала мамандарының тілінде пәндік облыстардың үлгілерін құрумен айналысады. Егер біз өзгертуге, кеңейтуге оңай, интерфейстері мен тәуелсіз модульдері бар жақсы бағдарламаны жазу үшін мұны елемейтін болсақ, онда бұл құрылымдық бағдарламалау парадигмасының деңгейіне оралуды білдіреді. Бағдарлама барлығына жақсы болады, бірақ ол шындыққа сәйкес келмейтіндіктен түсінілмейді, тек бағдарламашыға белгілі, ал пән саласын білетін маман көмексіз бағдарламаны түсіне алмайды. Ақыр соңында, жақсы бағдарлама ұйымдастырылғанымен, үлгі емес, өте тар ауқымда қиындық азаяды. Модельдің болмауы немесе оның үстірт көрінісі ғана «жарылады». жақсы бағдарламаішінен және оның болашақта одан әрі дамып, сүйемелдеуіне жол бермейді.

Абстракциялары жоқ сыныптар енгізілгенде, бұл сыныптар таза жүйелі және пәндік аймаққа ешқандай қатысы жоқ болса, олар басқа сыныптардың өзара әрекеттесу ағындарын жеңілдету үшін ғана енгізілгенде - бағдарламалық қамтамасыз ету «сақалды» болады және егер сіз осындай рефакторинг патчтарын бір сәтте орындамасаңыз, бағдарламалық жасақтаманы әзірлеу тоқтап, мүмкін емес болады.

Объектілі-бағытталған тәсілмен бағдарламалық және техникалық жүйелерді жобалау ішкі жүйенің болмауы шартына негізделген берілген деңгейосы деңгейдегі кез келген басқа ішкі жүйенің құрылғысына тәуелді болмауы керек. Мұндай тәуелсіздік ішкі құрылғыбір объектінің екіншісінің ішкі бөліктері инкапсуляция деп аталады.

Модульдік бағдарламалау технологиясында инкапсуляция принципі қолданылды. Модуль инкапсуляцияны интерфейс пен іске асыру бөлімдеріне бөлу арқылы нақты енгізеді.

Объектіге бағытталған бағдарламалауда инкапсуляция принципі классты белгілі бір тапсырма үшін өзін-өзі қамтамасыз ету үшін бағдарламаның қалған бөлігінен оқшаулау үшін қолданылады. Мысалы, TForm класы Delphi ортасы Windows терезесін жасау үшін қажеттінің барлығын қамтиды (инкапсуляциялайды), TMemo класы толық мүмкіндікті мәтіндік редактор, TTimer класы бағдарламаны таймермен қамтамасыз етеді және т.б.

Инкапсуляция бір бағдарламалау тілінде жазба деректер құрылымдарын жаңа деректер түрі ~ класын алу үшін осы жазбаның деректер өрістерін басқаратын процедуралар мен функциялармен біріктіру арқылы қол жеткізіледі. Инкапсуляция интерфейс арқылы өрістер мен әдістерге қол жеткізуді қорғауға мүмкіндік береді. Қол жеткізуге ғана рұқсат етіледі ашық әдістержәне өрістер. Әдістердің толық жиынтығы және оларды жүзеге асырудың нәзіктіктері жасырылған.

TMyClass = сынып

IntField: Integer;

функция MyFunc(a: Integer): Integer;

MyProc процедурасы; Соңы;

Инкапсуляция принципін қолдану арқылы пайдалануға дайын бағдарламалық жасақтама бланкілерін алмасуға болады. Мысалы, Delphi класының кітапханасы шын мәнінде қолданбалы бағдарламаларды құруға арналған құрылыс блоктарының жиынтығы болып табылады.

Инкапсуляцияны қолдану арқылы біз нысанға тиесілі деректерді осы деректерге тікелей қатынасу кезінде орын алуы мүмкін қателерден қорғаймыз. Сонымен қатар, бұл принципті қолдану бағдарлама кодындағы ықтимал қателерді локализациялауға жиі көмектеседі. Және бұл осы қателерді табу және түзету процесін айтарлықтай жеңілдетеді. Алайда инкапсуляцияны қолдану объектінің элементтеріне қол жеткізу тиімділігінің төмендеуіне әкеледі. Бұл өзгерту әдістерін шақыру қажеттілігіне байланысты ішкі элементтеробъектінің (айнымалылары). Бірақ компьютерлік технологияның қазіргі даму деңгейімен тиімділіктегі бұл жоғалтулар маңызды рөл атқармайды.

Күрделі тапсырмаларды түсінуді айтарлықтай жеңілдету иерархияны қиындату арқылы қол жеткізіледі. Мұндағы иерархия абстракциялардың ретін, олардың деңгейлер бойынша орналасуын білдіреді. Деңгейден деңгейге дейінгі иерархияның күрделілігіне мұрагерлік арқылы қол жеткізіледі.

Мұрагерлік принцип «ата – ұрпақ» ұғымдарымен әрекет етеді және мұрагердің барлық қасиеттерін қабылдау арқылы мұрагердің қасиеттерінің жиынтығын кеңейтуді қарастырады.

Кез келген класс басқа класстан алынуы мүмкін. Ол үшін оны жариялау кезінде ата-аналық класстың аты көрсетіледі:

TChildCIass = сынып (TParentClass)

Туынды класс өзінің ата-анасының өрістерін, әдістерін және қасиеттерін автоматты түрде иеленеді және жаңаларын қоса алады. Осылайша, мұрагерлік принцип күрделі класстардың кезең-кезеңімен құрылуын және өз сынып кітапханаларының дамуын қамтамасыз етеді. Тұқым қуалаушылықтың мәні мен әмбебаптығы жаңа нысанды әр уақытта («нөлден») сипаттаудың қажеті жоқ, бірақ сіз «ата-ананы» (негізгі класс) белгілей аласыз және жаңа класстың ерекше белгілерін сипаттай аласыз. . Нәтижесінде жаңа нысанда тектік сыныптың барлық қасиеттері, сонымен қатар оның өзіндік ерекшеліктері болады.

Object Pascal тіліндегі барлық класстар бір ата-анадан, TObject класынан алынған. Бұл класстың өрістері мен қасиеттері жоқ, бірақ кез келген объектілердің барлық өмірлік циклін қамтамасыз ететін ең жалпы мақсаттағы әдістерді қамтиды - оларды жасаудан бастап жойылғанға дейін. Сондықтан бағдарламашы TObject еншілес класы болып табылмайтын класс жасай алмайды. Келесі екі декларация бірдей.

TaClass = сынып (TObject)<==>TaClass = сынып

Мұрагерлік принцип сыныптардың тармақталған ағашын құруға әкеледі. Әрбір бала өз ата-анасының мүмкіндіктерін жаңа мүмкіндіктерімен толықтырып, ұрпақтарына береді. Мысалы, TPersistent класы өзінің ата-аналық TObject мүмкіндіктерін файлдағы деректерді сақтап, одан қабылдай алатындығымен байытады, нәтижесінде оның барлық ұрпақтары да мұны істей алады. TComponent класы, өз кезегінде, әзірлеу ортасымен өзара әрекеттесе алады және бұл мүмкіндікті оның ұрпақтарына береді. TControl тек файлдармен және өңдеу ортасымен жұмыс істеуге қабілетті емес, сонымен қатар экранда көрінетін кескіндерді жасауға және оларға қызмет көрсетуге қабілетті және оның ұрпағы TWinControl Windows терезелерін және т.б.

Object Pascal тілінде тек бір ғана мұрагерлік деп аталатын мүмкін, бірақ нақты әлемде баланың екі ата-анасы болады, сондықтан бірқатар тілдерде (мысалы, C ++) көп мұрагерлік механизм қарастырылған. Көп мұрагерлік нақты әлемді модельдеу тұрғысынан қисындырақ, дегенмен ол бағдарламалау тілдерін жүзеге асыруды қиындатады.

Полиморфизм - өңделетін деректер түріне байланысты бір оқиғаға әртүрлі мән беру құралы. Бұл принцип бір аттас әрекетті жүзеге асырудың әртүрлі формаларын анықтайды.

Полиморфизмнің мақсаты – иерархиядағы әрбір нысанның немесе сыныптың осы әрекетті өзіне сәйкес келетін кодында жүзеге асыру мүмкіндігі бар сыныпқа ортақ әрекеттерді анықтау үшін бір атауды пайдалану. Сонымен, полиморфизм - бұл ұқсас есептерді әртүрлі тәсілдермен шешуге арналған класстардың қасиеті.

Object Pascal тілінде сыныптың мінез-құлық қасиеттері оның құрамындағы әдістер жиынтығымен анықталады. Бұл принцип сыныптың қасиеттерін жаңа әдістерді қосу арқылы емес, әдістердің біреуін немесе әдістер жиынтығын аяқтау арқылы кеңейту қажет болғанда қолданылады. Класс ұрпақтарындағы осы немесе басқа әдістің алгоритмін өзгерту арқылы программист осы ұрпақтарға ата-анада жоқ нақты қасиеттерді бере алады.

Әдісті өзгерту үшін оны ұрпақта қайта анықтау керек, яғни. ұрпақта аттас әдісті жариялау және ондағы қажетті әрекеттерді жүзеге асыру. Нәтижесінде, алгоритмдік негізі басқа және объектілерге әртүрлі қасиеттер беретін негізгі нысанда және еншілес нысанда бір аттың екі әдісі жұмыс істейді. Бұл объектілік полиморфизмнің мәні.

Сонымен қатар, Object Pascal тілінде полиморфизмге тек тұқым қуалау және ата-аналық әдістердің қабаттасу механизмі ғана емес, сонымен қатар олардың виртуализациясы арқылы қол жеткізіледі, бұл ата-аналық әдістерге өз балаларының әдістеріне қол жеткізуге мүмкіндік береді.

Полиморфизмнің артықшылығы - ол бір әрекет класы үшін бір интерфейсті пайдалануға мүмкіндік беру арқылы бағдарлама күрделілігін азайтуға көмектеседі. Жағдайға байланысты нақты әрекетті таңдау компиляторға жүктеледі.

Объектіге бағытталған тәсілдегі бағдарламалардың құрылымы құрылымдық жобалаудағыдай иерархиялық ағаш емес, объектілердің өзара әрекеттесу графигі арқылы бейнеленеді. Бұл механизмдер салыстырмалы түрде қарапайым заттардан күрделі объектілерді құруға мүмкіндік береді. Нәтижесінде кодты қайта пайдалану жылдамдығы айтарлықтай артады және әртүрлі қолданбалар үшін сынып кітапханаларын құру мүмкін болады.

Объектілік тәсілге негізделген программалау технологияларының қарқынды дамуы көптеген мәселелерді шешуге мүмкіндік берді. Осылайша, визуалды бағдарламалауды қолдайтын орталар құрылды, мысалы, Delphi, C++ Builder, Visual C++ және т.б. Визуалды ортаны пайдалану кезінде программист кейбір бөліктерді, мысалы, болашақ өнімнің интерфейстерін, пайдалана отырып жобалау мүмкіндігіне ие болады. арнайы кітапхана компоненттерін қосу және конфигурациялау үшін көрнекі құралдар. Көрнекі дизайнның нәтижесі сәйкес кодтар енгізілген болашақ бағдарламаны дайындау болып табылады.

3. Есептерді шешуде әртүрлі тәсілдерді қолдану

Есепті шешу кезінде әртүрлі тәсілдерді қолдану арқылы бағдарламалық қамтамасыз етуді іске асыру қалай болатынын қарастырайық: Натурал санның бірінші және соңғы цифрын өзгерту. Паскальдың орындалу тілі.

Құрылымдық көзқарас. Бағдарлама коды келесідей көрінеді:

Перестановка бағдарламасы;

N, көшірме_N, сан, көшірме_саны, бірінші, соңғы, қадам_саны, жаңа_N: бүтін;

(бағдарламаның негізгі бөлігі)

(нөмірді енгізу)

write("енгізу N=");

(сандағы цифрлардың санын санау)

сан:=сан+1;

copy_N:=copy_N div 10;

егер көшіру_N<>онда 0

егер сан=0 болса, онда

(10^(1-сан) санының дәрежесін есептеу)

көшірме_саны:=сан;

(бірінші және соңғы санды таңдау)

copy_N:=copy_N div 10;

көшірме_саны:=көшірме_саны-1;

егер көшірме_саны<>1 сонда

көшірме_саны:=сан;

(сандарды ауыстыру)

қадамдар:=қадам*10;

көшірме_саны:=көшірме_саны-1;

егер көшірме_саны>1 болса

new_N:=N-бірінші*тап+соңғы*соңғы+бірінші;

(нәтиже шығару)

Код сызықты, барлық әрекеттер ретімен орындалады, басқаруды беру goto jump операторы арқылы жүзеге асырылады.

Модульдік тәсіл. Бағдарлама коды келесідей көрінеді.

Перестановка бағдарламасы;

(айнымалылар туралы мәлімдеме бөлімі)

N, сан, жаңа_N: бүтін;

(процедура мен функцияны жариялау бөлімі)

(сандағы цифрлардың санын санау тәртібі)

ал Н.Н<>0 жасайды

(санның бірінші цифрын анықтау функциясы)

ал кол<>1 істеу

бірінші_шифр:=NN;

(санның соңғы цифрын анықтау функциясы)

last_cifra:=NN мод 10;

(бүтін санды бүтін дәрежеге көтеру функциясы)

көрсету кезінде<>0 жасайды

(бағдарламаның негізгі бөлігі)

write("енгізу N=");

kol_cifr(сан,N);

саны болса<>онда 0

new_N:=N-бірінші_цифра(N,сан)*степен(10,сан-1)+

last_cifra(N)*stepen(10,сан-1)-

соңғы_цифра(N)+бірінші_цифра(N,сан)

Бағдарлама коды оқуға ыңғайлы, бір типті әрекеттер процедуралар мен функцияларға біріктірілген, бағдарламада жарияланған айнымалылар саны азайды, демек, бөлінген жады. Оңтайландыру үшін барлық процедуралар мен функцияларды модульге біріктіріп, оны бағдарламаға қосу керек. Модульді ұйымдастыру әзірленген процедуралар мен функцияларды қайталап пайдалануға мүмкіндік береді, бұл бағдарламалау процесін жеңілдетеді және бағдарлама кодтарын қысқартады.

Объектілік тәсіл. Бағдарлама коды келесідей көрінеді.

Бағдарлама перестановка;

сан: бүтін;

процедураны енгізу;

процедураның шығысы;

procedure kol_cifr(var kol: integer; NN: integer);

процедура perestavka(var NN: integer; cf, cl: integer);

first_cifra функциясы(NN: integer; kol: integer): бүтін;

last_cifra функциясы (NN: integer): бүтін;

функция stepen(bas: integer; pokaz: integer): бүтін;

көрсету кезінде<>0 жасайды

tN.input процедурасы;

write(`nput N=");

readln(n.znach);

procedure tN.kol_cifr(var kol: integer; NN: integer);

ал Н.Н<>0 жасайды

функция tN.first_cifra(NN: integer; kol: integer): бүтін;

ал кол<>1 істеу

бірінші_шифр:=NN;

функция tN.last_cifra(NN: integer): бүтін;

last_cifra:=NN мод 10;

процедура tN.perestanovka(var NN: integer; cf, cl: integer);

NN:=NN-cf*stepen(10,number-1)+cl*stepen(10,сан-1)-cl+cf;

процедура tN.output;

Form1.Edit1.Clear;

Form1.Edit1.Text:=inttostr(N.znach);

N.kol_cifr(N.сан, N.znach);

егер N. саны<>онда 0

N.perestanovka(N.znach,N.first_cifra(N.znach,N.number),N.last_cifra(N.znach));

Бағдарламаның коды модульдік тәсілмен бағдарламаның кодына өте ұқсас, бірақ қазір объектілік тәсілдің барлық мүмкіндіктерін пайдалануға болады: мұрагерлік, полиморфизм, еншілес класстарды құру, олардың қасиеттерін ата-аналық класспен салыстырғанда кеңейту және т.б. .

Қорытынды

Жұмыс барысында қарастырылды әртүрлі түрлеріәзірлеу контекстінде жобалау және бағдарламалау тәсілдері, олардың сипатты белгілері, артықшылықтары мен кемшіліктері көрсетілген.

Қалай мысалдармен көрсетілген бағдарламалық қамтамасыз етуді енгізубір немесе басқа тәсілді қолдану.

Бағдарламалау технологиясының эволюциясы программалауды неғұрлым түсінікті етуге, күрделі бағдарламаларды жеке бөліктерге бөлуге және олардың әрқайсысын өз бетінше жобалауға және бағдарламалауға мүмкіндік берді, бағдарламалық өнімдердің күрделілігіне қарамастан, ресурстарды азайту құралдары бар деп қорытынды жасауға болады. шығындар.

Даму бір орнында тұрмайды - бағдарламашыларға үлкен мүмкіндіктер беретін, дайын программалық блоктарды қолдану арқылы олардың жұмысын жеңілдететін, бағдарламалық өнімдерді жобалау процесін тәуелсіз, тек бағдарламашыға ғана емес, сонымен қатар тұтынушыға да түсінікті ететін жаңа тәсілдер пайда болды. пайдаланушы. Бағдарлама нақты әлемнің үлгісіне айналады.

Пайдаланылған көздер тізімі

1. Butch, G. C++ мысалдарымен объектіге бағытталған талдау және дизайн / G. Butch, ағылшын тілінен аударылған. ред. И.Романовский мен Ф.Андреев. - М.: Уильямс, 2008. - 721 б.

2. Архангельский, А.Я. Delphi 7-де программалау / А.Я. Архангельск. М.: «Бином-Пресс» ЖШС, 2003. - 1152 б.

3. Бағдарламалау. Бағдарламалау бойынша лекциялар. - www.studifi.ru кіру режимі

4. Бағдарламалау технологиясы. Құрылымдық және объектіге бағытталған. - www.sgm.forumssity.ru кіру режимі

5. Құрылымдық бағдарламалау технологиясы. . - www.razlib.ru кіру режимі

6. On-line информатика. Модульдік бағдарламалау. - www.online-ane.ru кіру режимі.

Allbest.ru сайтында орналастырылған

...

Ұқсас құжаттар

    Буып-түйетін бұйымдарды жобалаудағы қолданыстағы тәсілді қарастыру. Компьютерлік жобалау құралдарын қолдану арқылы әзірлеу әдістері. Жарнамалық кітапшаларды орналастыруға арналған дизайн нарығына шолу. Графикалық және көлемдегі эскиздерді жасау.

    диссертация, 28.08.2014 қосылған

    Тиімділікті арттыру мақсатында ауыр станоктардың агрегаттық-модульдік аспаптық жүйелерін құру принциптерін әзірлеу. Ауыр токарлық станоктардың ерекшеліктерін ескере отырып, модульдік құралдың кернеулі-деформациялық күйін теориялық талдау.

    диссертация, 06.04.2009 жылы қосылған

    Қоғамдық тамақтандыру кәсіпорындарының жылу жабдықтарына қойылатын талаптар. Тағамдық қазандықтардың тағайындалуы және классификациясы, олардың заманауи конструкциялары. KPGSM-60 газ секциялық модульдік қазандықтың жаңартылған конструкциясының сипаттамасы.

    курстық жұмыс, 27.11.2012 қосылған

    Күрделі объектілерді зерттеудің негізгі тәсілі жүйелік талдау болып табылады. Жүйелік талдауды іс жүзінде жүзеге асыру – құрылымдық жүйелік талдау, оның принциптері мен әдістері. Құрылымдық модельдеудің шығу тегі. Құрылымдық жүйені талдау модельдерінің кластары.

    аннотация, 18.02.2009 қосылған

    «Ассоль» АЖЖ сипаттамасы – модульдік бағдарламалық пакет, ол эскизге, фотосуретке немесе үлгіге негізделген кез келген күрделіліктегі үлгілердің үлгілерін жылдам және дәл әзірлеуге мүмкіндік береді. Техникалық нобайдың комбинаторлық синтезі. «Ассоль-Дизайн» саласы.

    оқу құралы, 07.02.2016 қосылған

    Атмосфералық кептіру қоймасы. «Интер-Урал» кептіру камерасының техникалық сипаттамасы. Цехты жобалауға қойылатын негізгі талаптар. Ағаштан бұйымдарды дайындаудың технологиялық процесі. Ағаш өңдеу цехының өндірістік бағдарламасы.

    курстық жұмыс, 13.07.2015 қосылған

    Сызықты емес бағдарламалау модельдеріндегі шешімді оңтайландыру. Сызықтық программалау есебін графикалық әдіспен шешу. ДСП дайындамаларға кесуді әзірлеу. Бөлшектерді өңдеуге кеткен уақыт. ҒТК үлгілері бойынша шешімдерді негіздеу.

    курстық жұмыс, 17.05.2012 қосылған

    Ұйымдастырушылық дайындық, жүйені жоба алдындағы шолу және әзірлеу техникалық тапсырма. Өндірісті, еңбекті және басқаруды ұйымдастырудың техникалық жобасына сараптама жүргізу және құжаттамалар кешенін бекіту.

    презентация, 12/09/2015 қосылды

    Құрылымдық талдау және жобалау әдістемесі. Бұл әдістемені қолданатын жүйенің сипаттамасы үлгі болып табылады. Табиғи және графикалық тілдерді қолдану. Функционалдық, ақпараттық және динамикалық модельдеу. Әдістеменің негізгі құралдары.

    аннотация, 18.02.2009 қосылған

    Су электр станциясының негізгі құрамдас бөліктерінің техникалық сипаттамаларының сипаттамасы. Май қысымының қондырғысын басқару бағдарламасының алгоритмін құру ерекшеліктері, Siemens микроконтроллерлерін бағдарламалау ерекшеліктері. Техникалық қызмет көрсетудің қауіпсіздік ережелері.

Мақала ұнады ма? Достарыңызбен бөлісіңіз!
Бұл мақала пайдалы болды ма?
Иә
Жоқ
Пікіріңізге рахмет!
Бірдеңе дұрыс болмады және сіздің дауысыңыз есептелмеді.
Рақмет сізге. Сіздің хабарламаңыз жіберілді
Мәтіннен қате таптыңыз ба?
Оны таңдаңыз, басыңыз Ctrl+Enterжәне біз оны түзетеміз!