Программаны жасақтаудың негізгі кезеңдері
Программаны жасақтаудың процесін мынадай формуламен өрнектеуге болады:
Программаны жасақтау→даярлау+тексеру және жөндеу.
Жаңадан ғана жасалған программа қателіктің болуы-бұл қалыпты және заңды құбылыс. Іс-жүзінде нақты және жеткілікті дәрежеде күрделі програманы қателіксіз құру мүмкін емес.
Программаны компьютердің қабылдауына және оның нәтижесін беруіне қарап оны дұрыс құрылған деген қорытынды жасауға болмайды. Өйткені берілген жағдайда дұрыс болмаса да қандай да бір нәтиже алуға қолымыз жетті. Осының өзінде программада көптеген логикалық қателіктердің болуы мүмкін. Кеткен қателіктерді анықтау үшін программаны компьютерге ендіріп, іске қосқанға дейін былай тексереміз.
Программа мәтінін «қолмен» қарап шығу, тексеру және айналдыру арқылы тексеруге болады.
Программа мәтінін қарап шығу. Программа мәтінін жазуда кеткен қателіктерді және программаның алгоритмнен алшақтығын анықтау үшін қарап шығады. Атап айтқанда итерация санын беуші операторлардың дұрыстығына көз жеткізу үшін барлық циклдердің ұйымдастырылуын қарап шығу өте маңызды. Шартты операторлардағы шарттарды, бағыныңқы программаларға қатынас жасаудағы аргументтерді тексеріп шығу пайдалы.
Программаны тексеру. Программалаушы программаны тексергенде оның мәтіні бойынша программа анықтайтын есептелу процесін ойша қалпына келтіруге тырысады, осыдан кейін оны талап етілетін процеспен салыстырады.
Тексеру кезінде программаның не істейтіндігін ұмыту және ол туралы тексерру барысында білу керек. Тек программаны тексеру аяқталғаннан кейін ғана оның не істейтіндігін еске түсіруге және программаның нақты әрекетін талап етілетін әрекеттермен салыстыруға болады.
Программаны айналдыру. Айналдырудың мәні программаның компьютерде орындалуын программалаушының ойша орындауы болып табылады.
Айналдыруды орындау үшін кейбір алғашқы деректерді беріп және олармен қажетті есептеулерді жүргізу қажет.
Айналдыру- бұл еңбекті көп талап ететін қиын процесс, сондықтан оны тек программаның логикалық күрделі бөліктеріне қолданған жөн.
Алғашқы деректерді программаны айналдыру кезінде программа-ның зерттелетін көптеген тармақтары қамтылатындай етіп таңдап алу керек.
Программаны жөндеу және тестілеу
Программаны жөндеу (debugging- жөндеу ағылшын сөзі сөзбе- сөз аударғанда қоңыздарды аулау деген мағына береді.) дегеніміз программаны компьютерден өткізудің нәтижесі бойынша ондағы қателіктерді іздну және жою процесі.
Тестілеу (test ағылшын сөзі сынау деген мағына береді) дегеніміз программаның немесе оның жеке бөліктерінің дұрыс жұмыс істейтіндігін сынау, тексеру.
Жөндеу және тестілеу бұлар бірінен бірі айқын ажыратылған және біріне- бірі ұқсамайтын екі кезең:
жөндеу кезінде синтаксистік қателіктердің және кодтаудың айқын қателіктерін төңіректеу және жою орындалады.
тестілеу процесі кезінде айқын қателіктері жоқ программаның жұмыс істеу қабілеттілігі тексеріледі.
Тестілеу қателіктің бар екендігін тағайындайды, ал жөндеу программаның дұрыс жұмыс істемеу себептерін анықтайды.
Қазіргі заманғы программалау жөндеу жұмысы жөндеуші деп аталатын арнай программалық құралды пайдалану жолыменр жүзеге асырылады. Бұл құралдар программаның ішкі жұмысын знрттеуге мүмкіндік береді.
Жөндеу программасы әдетте мына төмендегідей мүмкіндіктер береді:
әрбір командадан соң, тоқтай отырып, программаны қадамдап орындау;
кез-келген айнымалының ағымдағы мәнәі қарау немесе кез-келген өрнектің, оның ішінде стандартты функцияларды пайдаланып мәнін табу қажеттілігіне қарай айнымалының жаңа мәнін пайдаланып орындау;
программада «тексеру нұктелерін» орнату, яғни аралық нәтижелерді бағалау үшін программа уақытша өз жұмысын тоқтататын нүктелерді тағайындау т.б.
Программаны жөндеуде мыналарды есте сақтау маңызды;
жөндеу процесінің басында қарапайым тестілік деректерді пайдалану;
пайда болатын қиындықтарды айқын ажыратып және қатаң түрде кезегімен жою;
қателіктің есебі компьютерде деп есептемеу керек.
Тест дегеніміз-алғашқы деректердің кейбір жиыны және осы деректерге сәйкес келетін программа жұмысы кезінде алынуға тиісіті барлық нәтижелерінің дәл сипаттамасы.
Программа қаншалықты өте мұқият жөнделсе де оның жұмысқа жарамдылығын тағайындаудың шешуші кезеңі программаның тестер жүйесінде тікелей орындалуын тексеру болып табылады.
Егер программа таңдалынып алынған тестілік деректер жүйесінен өткенде барлық жағдайда дұрыс нәтижелер беретін болса, онда программаны шартты түрде дұрыс деп есептеуге болады.
Тестілеу тәсілін жүзеге асыру үшін тестердің эталондық нәтижелері алдын-ала даярланған немесе белгілі болуы тиіс.
Эталондық нәтижелерді прогрмманың компьютерде орындалу нәтижесін алғаннан кейін емес, керісінше алғанға дейін есептеп шығарып қою керек.
Тестілік деректер қателіктердің пайда болуының барлық мүмкін болатын шарттарын тексеруді қамтамасыз ететін болуы тиіс, атап айтқанда:
алгоритмнің әрбір тармағының сыннан өтуі;
кезектегі тестіден өткізу алдыңғы өткізудегі тексерілмегендердің тексерілуі;
программаның жалпы жұмыс істейтіндігін тексеру үшін бірінші тестің мүмкіндігінше қарапайым болуы;
есептеу көлемін қысқарту үшін тестідегі арифметикалық операциялардың шегіне дейін ықшамдалуы;
тізбектер элементі санының, итерациялық есептеулер үшін алынған дәлдіктің, тестілік мысалдар цикліндегі интерация санының есептеулер көлемін қысқарту тұрғысынан берілуі;
есептеулерді азайтудың тексеру сенімділігін төмендетпеуі;
тестілік деректер жиынын кездейсоқ таңдау күткен нәтижелерді қолмен орындау тәсілімен анықтауда қиындықтарға алып келетіндіктен және көптеген жағдайлар тексерілмей қалатындықтан тестілеудің белгілі мақсатқа бағытталған және жүйеленген болуы;
тестілік деректерді күрделендіруде түсідің біртіндеп жүргізілуі.
Тестілеу процесінің кезеңдері
Тестілеу процесін үш кезеңге бөлуге болады.
1.Қалыпты жағдайда тексеру. Программалардың жұмыс істеуінің нақты жағдайына тән алғашқы деректер негізінде тестілеу болжанады.
2.Экстремальды жағдайда тексеру. Бұл жерде тестілік деректер дегеніміз алғашқы деректер жиынының шекаралық мәндері. Бұл жиын программа дұрыс жұмыс істеуге тиісті алғашқы деректерден тұрады. Өте кіші немесе өте үлкен сандар және деректердің болмауы мұндай деректердің типтік мысалдары болып табылады.
Барлық программалар қандайда бір шектеулі алғашқы деректер жиынын өңдеуде есептеліп жасақталатындығы белгілі. Сондықтан мына төмендегі сұрақтарға жауап алу маңызды:
Айнымалының теріс және нолдік мәндерін өңдеуге арналмаған программаға қандай да бір кеткен қателіктің себептерінен дәл сол мәндерді өңдеуге тура келсе не болар еді?
Егер массив элементтері оны хабарлауда көрсетілген саннан асып кетсе, онда массивтермен жұмыс істеп жатқан программа өзін қалай ұстар еді?
Егер өңделіп жатқан сан өте кіші немесе өте үлкен болса, онда не болар еді?
Программа дұрыс емес деректерді дұрыс деректер ретінде қабылдап, дұрыс нәтижеге ұқсас, бірақ дұрыс емес нәтиже беретін жағдайлар ең жаман жағдайлар болып есептеледі.
Программа өзі дұрыс өңдей алмайтын кез келген деректерді теріске шығаратын болу тиіс.
Программалауда кездесетін қателіктер
Компьютерде есеп шығарудың барлық кезеңдерінде, атап айтқанда, есептің қойылуына бастап, оның құжаттарын даярлағанға дейін қателіктің кетуі мүмкін.
Мысалы есенптің дұрыс қойылмауы, есепті шығару үшін құрылған алгоритмнің дұрыс болмауы, лолгикалық қателіктер кететін жағдайларды дұрыс есенпке алмау, семантикалық және синтаксистік қателер, операцияларды орындау кезінде кететін қателіктер, деректерді беруде жіберілетін қателіктер, ендіру-шығару кезінде кететін қателіктер.
Әдетте синтаксистік қателіктер трансляциялау кезінде байқалады. Көптеген басқа да қателіктерді программалаушының не ойлағандығын білмегендіктен транслятор таба алмайды.
Сондықтан компьютердің синткасистік қателіктер туралы хабарының жоқ болуы программаның дұрыстығының жеткілікті щарты болып табылмайды.
Синтаксистік қателіктердің мысалдары:
тыныс белгілерінің қалып кетуі;
жақшалардың сәйкес келмеуі;
оператордың дұрыс жазылмауы;
қызметші сөздің дұрыс жазылмауы;
айнымалы атының дұрыс жазылмауы;
цуиклдің аяқталу шартының жоқ болуы;
массив сипаттамасының жоқ болуы т.с.с.
Транслятор таба алмайтын қателіктер
Программада пайдаланылатын операторлар дұрыс жазылғанымен транслятор таба алмайтын көптеген қателіктер болады.
Осындай қателіктердің мысалдарын келтірейік.
Логикалық қателіктер:
кейбір шартты тексергенмен кейін алгоритмнің қай тармағын орындауға өтуді дұрыс көрсетпеу;
мүмкін болатын шарттарды толық есептемеу;
программада алгоритм блоктарын орындау үшін қажет болатын бір немесе бірнеше щамаларды қалдырып кету.
Циклдерде кездесетін қателіктер:
циклдің басын дұрыс көрсетпеу;
циклдің аяқталу шарттарын дұрыс көрсетпеу;
итерация санын дұрыс көрсетпеу;
шексіз цикл.
Ендіру-шығару қателіктері; деректермен жұмыс істеудегі қателіктер:
деректердің түрін дұрыс бермеу;
талап етілген аз немесе көп деректерді оқуды ұйымдастыру;
деректерді дұрыс түзетпеу;
Айнымалыларды пайдалануда кететін қателіктер:
айнымалыларды олардың бастапқы мәндерін көрсетпей пайдалану;
бір айнымалыны басқа айнымалының орнына қате көрсету.
Массивтермен жұмыс істеуде кететін қателіктер:
алдын ала нолге келтірілмеген массивтер;
дұрыс сипатталмаған массивтер;
индекстерінің берілу реттілігі дұрыс емес массивтер.
Арифметикалық операцияларды орындауда кететін қателіктер:
айнымалының түрінр дұрыс көрсетпеу (мысалы, нақты айнымалының орнына бүтін айнымалыны көрсету);
әрекеттер ретін дұрыс анықтамау;
нөлге бөлу;
теріс санның квадрат түбірін табу;
санның мәнді разрядын жоғалту.
Осы қателіктердің бәрін тестілеудің көмегімен табуға болады.
Программалау жүйесі
Программалау жүйесі компьютердің программалық қамсыздандыруының құрамына жатады және ол программаларды жасау және оларды жөндеу жұмыстарын автоматтандыруды қамтамасыз ететін құралдардың жиыны болып табылады. Программалау жүйесінің құрамы мына төмендегі схемада бейнеленген:
Программалау процесі үш кезеңге бөлінеді:
есепті шешудің алгоритмін құру;
программа құру;
жасалған программаны тексеру.
Екінші кезеңдегі, яғни программа қрудағы қиындық адамның тек машина тілінде ғана программа жасауына байланысты болады. Компьютерді пайдаланудың алғашқы жылдарында әрқайсының әр түрлі компьютерлердің пайда болуы бұл қиындықты тереңдетіп жібереді. Сондықтан нәтижесінде бір компьютерге арнап жасаған программаны басқа компьютерге пайдалануға болмайтын болды. Бұл бір алгоритмнің өзін әр түрлі компьютерлерде орындау үшін әрқайсына жеке-жеке программа құруға мәжбүр етіпижұмысты қиындатып жіберді.
Әрбір компьютер үшін жасалған программаның дұрыс және ұтымды жасалғандығын тексеру қажет. Қателік кеткендігі және басқа да кемістіктері бар екендігі анықталса, онда ол программаға түзетулер мен өзгерістер ендіріледі. Программалаудың осы аталған кезеңдерінің арнайы ерекшеліктері және қиыншылықтары бар.
Барлық осы аталған қиыншылықтар программалар жасаудағы атқарылатын жұмыстарды мейлінше ықшамдап қысқарту мәселесін күн тәртібіне қояды. Бұл мәселені шешу программалау процесін автоматттандыруды, яғни компьютердің өзін программалар жасауға немесе программалауға байланысты таза техникалық жұмыстар атқаруға пайдалануды талап етеді. Автоматтандыру программа жасаушы мамандардың жұмысын жеңілдетуді, оны жасауда кететін қателіктердің санын азайтуды, ең соңында есептің қойылуынан бастап нәтиже алғанға дейін кететін уақытты қысқартуды көздейді. Программалауды автоматттандырудың ең көп тараған негізгі тәсілдеріне мыналар жатады:
қолмен программалауды жеке жұмыстарын автоматтандыру тәсілдері;
бағыныңқы программалар кітапханасын құру;
программалаудың әр түрлі тілдерін пайдалану.
Қолмен программалаудың жеке жұмыстарын автоматтандыру тәсілдері. Қолмен программалаудағы жұмыстарды автоматтандыруда жұмыс программаларын түзетуді негізгі назарда ұстау керек.
Қазіргі кезде программаның дұрыстығын тексеру үшін жоғарыда айтқандай тест тәсілі кеңінен қолданылады. Тест тәсілі бойынша жауаптарды алдын ала белгілі есептердің бірнеше нұсқасы компьютерде құрылған программаны пайдаланып шығарылады. Алынған нәтижелер алдын ала белгілі жауаптармен салыстырылады. Ол жауаптар біріне – бірі сәйкес келмесе, онда программада қателіка кеткен болып шығады.
Программаны жөндеу процесі бірнеше әмбебеп жөндеуші программаларды жасау және компьютердің өзін пайдалану арқылы автоматтандырылады. Бұл программалар командалардың қалай орындалып жатқандығы туралы информацияны баспаға бере отырып жөнделіп жатқан программаның кез келген бөлігінің жұмысын қадағалап бақылауға мүмкіндік береді. Программаны автоматты түрде жөндеуде программалаушыны қызықтыратын барлық информация құжатқа жазылады, соның арқасында ол компьютерді пайдаланбай-ақ есептің компьютерде шншілу процесінің дұрыстығын бақылай алады.
Программалау тілдері
Программаларды жасауда қазіргі заманғы компьютерлерде әр түрлі деңгейдегі программалау тілдері пайдаланылады.
Жалпы жағдайда тіл деп информацияның жазылыуын және оның түрленуін белгілі ережелер бойынша формальдыетіп беруші құралдарды түсінеміз.
Тілдің құрамында информацияның негізгі элементтерін құрудың құралдары және осы элементтерден әр түрлі мазмұнды құрылымдар құруға арналған ережелер жүйесі бар.
Программалау тілі деп деректерді жазуға және оларды белгілі ережелер бойынша өңдеуге арналған адам мен компьютерді байланыстыратын формальды тілді айтамыз.
Програмалаудың әр түрлі тілдерін пайдалану.
Әр түрлі белгілер бойынша жіктеуге болатын бірнеше жүздеген программалау тілдері бар. Ең жалпысы тілдің машинаға жақындық дәрежесі бойынша жіктеу болып табылады. Осы белгісі бойынша программалау тілдері екі үлкен топқа бөлінеді:
машинаға тәуелсіз тілдер;
Машинаға тәуелді тілдер өз кезегінде былай бөлінеді:
машина тілі;
машинаға бағдарланған тілдер;
Машинаға бағдарланған тілдер кейде автокодтар деп те аталады. Машинаға бағдарланған тілдердің екі деңгейі бар:
символдық кодтау тілдері, басқаша айтқанда мнемокодтар;
макротілдер.
Макротілдер машина тілінің командаларына тікелей ұқсастығы жоқ макрокомандаларды пайдалануға рұхсат етеді. Макрокомандаларды пайдалану программаны қысқартады әрі тілді жасау құралдарының жиынын кеңейте отырып программалаушының еңбегінің өнімділігін арттырады.
Машинаға тәуелсіз тілдер программаларды бөлшектеу дәрежесіне қарай екі топқа бөлінеді:
процедулалы- бағдарланған тілдер;
проблемалы – бағдарланған тілдер.
Процедулалы – бағдарланған тілдер есепті шешу алгоритмін сипаттауға арналған, сондықтан да оларды кейде алгоритмдік тілдер деп те атайды. Алгоритмдік тіл деген ұғым программалау тілі деген ұғыммен сәйкес елмейді. Егер алгоритмдік тілде жазылған алгоритмдік жазу компьютерге ендіруге тікелей жарамды және дайын жұмысшы программаға түрленетін болса, онда мұндай алгоритмдік тіл программалау тілі де бола алады. Кейбір алгоритмдік тілдер тек оларға кейбір құралдарды қосқаннан кейін ғана программалау тілі болады.
Проблемалы – бағдарланған тілдер есептерді сипаттау үшін қызмет атқарады.
Бірақ алгоритмдік тілдер өздігінен барлық проблеманы, тіптен программаны да шеше алмайды. Мұндай тілде жазылған программа компьютерде тікелей орындалмайды, ол орындалу үшін алдын ала сол компьютердің машина тіліне аудару жеткілікті қиын мәселе болып табылады.
Алгоритмдік тілден программаны машина тіліне аудару жұмысын компьютердің әмбебаптығын пайдаланып, оның өзіне жүктеуге болады. Бұл үшін әрбір алгоритмдік тілден машина тіліне формальды аударуға яғни аударудың ережесін алгоритм түрінде тұжырымдауға мүмкіндік беретіндей болуы керек. Егер, осы алгоритмді бір рет машиналық программа түріне келтіріп алсақ, онда одан кейін осы программаның көмегімен компьютердің өзі берілген алгоритмдік тілде жазылған кез келген программаны нақтылы компьютердің машина тіліне аударып бере алады. Мұндай арнайы аудармашы-программа жоғарыда айтқанымыздай транслятор деп аталады.
Машина тілі
Компьютердің ақпараттық бөлігі тікелей түсінетін жалғыз тіл: ол – машина тілі.
Машина тілі деп копьютердің құрамындағы процессор командаларының кодын айтамыз.
Архитектурасы әртүрлі процессорлардың машина тілдері де түрліше болады. Тек өзара үйлестірілген процессорларда ғана машина тілдері бірдей болады. Мұндай процессорлардың командалар жүйесі төменнен жоғары қарай үйлесімділікте болады деп айтылады.
Сонымен әрбір компьютердің өзінің машина тілі болады және ол тек осы тілде жазылған программаларды ғана тікелей орындай алады.
Машина тілінде программалау деп программаға енетін командалардың реальды кодтарын тікелей жазуды айтамыз.
Командалардың кодтары әр түрлі санақ жүйелерінде берілуі мүмкін:
екілік;
сегіздік;
он алтылық;
Мысалы, процессордың А аккумляторының ішіндегісін В регистіріне жөнелту дегенді білдіретін МОV В,А командасының кодын әр түрлі санақ жүйелерінде былай жазып көрсетуге болады:
Санақ жүйелері Коды
Екілік 010001111
Сегіздік 107
Он алтылық 47
Келтірілген мысалдан көрініп тұрғандай команда он алтылық санақ жүйесінде ең ықшамды түрде жазылған.
Машина кодтарын пайдаланып программалау үшін қарапайым жағдайда қағаз, қалам және информацияны тасымалдаушыға машина кодындағы программаны жазуға арналған перфоратор болса жеткілікті. Командалардың он алтылық кодтары пернетақтадан компьютердің жадына ендіріледі, монитор программаны түзету процесін басқарады, ал экран командалардың коды мен деректерді он алтылық кодта бейнелеп көрсетеді. Машина кодын пайдаланып программалауда еңбек өнімділігін артыру үшін командалардың мнемоникасын және коды берілген анықтамалық кестелерді пайдалануға болады.
Бірақ қазіргі кезде машина тілінде программалау тек қысқа программаларға шамалы өзгерістер өндіру қажет болған жағдайларда ғана қолданылады, өйткені бұл программа жасаушылар кездесетін мынадай қиыншылықтарға байланысты:
процессор командаларының көптеген кодтарын есте сақтауға тура келеді;
жадтың абсолюттік адрестері, әсіресе шартты өтулердің саны көп, сондықтан ұзын программалар жасауда қадағалау өте қиын;
жазылған программаны қайта жетілдіріп, өзгертіп жасау өте күрделі жұмыс болады;
машина кодтарында жазылған программалар өте қиын оқылады;
тек қана сандардан тұратын программаны жасау программана жасаушыны жалықтырып жібереді және программаларда қателіктердің келуіне алып келеді.
Осылауша машина тілі цифрлар тілі бола отырып, программа жасаушы адамнан программаны жазуға және оны жөндеуге көп уақыт жұмсауды талап етендіктен, программалау үшін жарамдылығы шамалы болады.
Ассемблер және макроассемблер тілдері
Ассамблер таңбалар (символдар)тілі бола отырып,белгілі бір дәрежеде машина тілінде программа жасаудағы кемшіліктерді жоюға мүмкіндік береді.
Ассамблер тілінде программаның барлық элементтері таңбалармен берілетіндігі оның басты артықшылығы болып табылады.Басқаша айтқанда ассамблер тілінің машина командаларының цифрлық кодтарын әріптермен немесе әріп-цифрлармен таңбалауға және деректердің таңбалық аттарын пайдалануға мүмкіндік беретіндігі оның машина тілінен айырмашылығы болып табылады. Ассамблер тілінің командаларын машина тіліне аударғанда машина командасын білдіретін әрбір оператор осы команданың цифрлық кодтарымен алмастырылады. Командалардың таңбалық аттарын олардың екілік кодтарына түрлендіру жұмысы программа жасаушы адамды өте қиын әрі күрделі машақаты көп жұмыстан босататын және бұл жағдайда құтиылоуға болмайтын қателіктерден құтқаратын арнайы программа-ассамблерге жүктеледі.
Ассамблер тілінде программалауда пайдаланылатын таңбалық аттар программаның семантикасын, ал команданың қысқартылып берілген атаулары оның негізгі функциясын білдіреді.Мысалы, ADD-қосу, SUB-азайту, PARAM-параметр т.с.с.Мұндай аттарды программа жасаушылар оңай есінде сақтайтын болады.
Ассамблер тілінде программа жасау үшін машина тілінде программа жасағандағыдан көп күрделі құралдар қажет болады:
сыртқы құрылғылармен жабдықталған дербес компьютер;
процессордың түріне қарай резиденттік немесе жүйелік программалар.
Машина тіліне қарағанда ассамблер тілі едәуір күрделі, программаларды ұтымды жазуға және жөндеуге мүмкіндік береді.
Ассамблер тілі машинаға бағдарланған тіл, яғни процессордың әрбір командасына таңбалық ат меншіктейтіндіктен машина тіліне және процессордың құрылысына тәуелді тіл болып табылады.
Программа жасауда ассамблер тілі машина тіліне қарағанда программа жасаушылардың еңбек өнімділігін арттыруға сонымен бірге процессордың программалық және аппараттық ресурстарын толық пайдалануға мүмкіндік береді.
Бұл біліктілігі жоғары программалаушыларға жоғары деңгейлі тілдермен жасалған программамен салыс–тырғанда компьютердің жадында аз орын алатын жылдам жұмыс істейтін программалар жасауға мүмкіндік береді.
Ассамблер тілінің осындай артықшылықтарына байланысты ендіру-шығару құрылғыларын басқарушы программалар неше түрлі жоғары деңгейлі тілдердің көптігіне қарамай ассамблер тілінде жазылады.
Ассамблер тілінің көмегімен программа жасаушы адам мынадай параметрлерді бере алады:
процессордың машина тілінің әрбір командасының таңбалық атын;
ассамблер тілінде жазылған программалық қатардың стандартты пішімін;
командалардың нұсқаларын және адрестеудің тәсілдерін қалай көрсету керектігі туралы пішімді;
таңбалық тұрақтыларды және бүтін сандық тұрақтыларды әртүрлі санақ жүйелерінде көрсету үлгілерін;
программалауды ассамблерлеу (транслациялау) процесін басқарушы пседокомандаларды.
Ассамблер тілі кез келген компьютерге түсінікті,өйткені басқа барлық тілдерге қарағанда машина тіліне ең жақын тіл ол ассамблер тілі. Бұл тіл копьютнрмен жақынырақ танысуға мүмкіндік береді. Сондықтан да ассамблерді оқу дегеніміз процессордың өзін оқып үйрену деген сөз. Ассемблер тілінде жазылған программа кез келген басқа тілдерде жазылған программаларға қарағанда өте тез орындалады. Мысалы, ассемблер тілінде жазылған программа дәл осы программаға баламалы СИ немесе Паскаль тілдерінде жазылған программалардан екі-үш есе, ал BASIC тілінде жазылған программалардан он бес және онда да көп есе тез орындалады.
Ассемблер тіліндегі программалар басқа тілдерде жазылған программаларға қарағанда өлшемі жағынан шағын болады, сондықтан компьютердің жадын үнемдеуге мүмкіндік береді.
Ассемблер тіліндегі программалар компьютердің барлық мүмкіндіктерін толық ұтымды пайдалануға сізге жол ашады.
Ассемблер тілін әрқайсысы машина командаларының бір тобына баламалы макрокомандалармен толықтыру жүйе қолданылады. Мұндай тіл макроассемблер тілі деп аталады. Макрокомандаларды пайдалану ірі құрылыс блоктарының программалар құруға мүмкіндік береді және ассемблер тілін жоғары деңгейлі тілдерге жақындатады.
Трансляторлар
Жоғары деңгейлі тілдер көптеген алгоритмдерді үйреншікті математикалық амалдардың жазылуына жақын ыңғайлы түрде жазып түсіндіруге мүмкіндік береді. Бұл тілдерді пайдалану программалаудағы кездесетін қиындықтарды азайтады.
Жоғары деңгейлі тілдерді программа жасауда пайдалану 60-шы жылдары басталды. Содан бері бүгінгі күнде дейін белгілі есептерді шешуге арналған әмбебап, сандай-ақ бағдарланған көптеген әртүрлі тілдер жасалып пайдаланылып келеді.
Әрбр программалау тілінің өзінің аты бар.Көптеген программалау тілінің аты олар алғаш жасалғаннан бастап тіркелген.Содан бері программалау тілдерінде қолданылатын ережелер өзгергенімен тілдер аты сол бұрынғы күйінде өзгеріссіз қалуда.
Қазіргі кезде жоғары деңгейлі программалау тілдері былай бөлінеді:
процедуралы (көптеген классикалық программалау тілдері, мысалы, FORTAN, PASCAL, BASIC, C);
логикалық (ЛИСПЫ, ПРОЛОГ т.б.);
объектік-бағдарланған (С++, Java т.б.).
Қысқа программаларды жасауда процедуралық программалау тілдерін пайдалану ыңғайлы; логикалық программалау тілдерін алгоритмдерді теориялық зерттеуде жасанді интеллекті оқытып үйрену жұмыстарында деректер базасымен жасалатын операцияларда өндіріс объектілерін және әскери бөлімдерді басқару жүйелерін басқаруда, ал объектік-бағдарланған программалау тілдерін бәрінен де үлкен және күрделі программаларды (Мысалы, компьютерлік ойындарда), жасақтауда пайдаланған жөн.
Әртүрлі программалау тілдерінің арасында айтарлықтай елеулі айырмашылықтардың болуына қарамастан олардың барлығында негізгі операцияларды жүзеге асырудың ұқсас құралдары бар. Бұдан басқа әртүрлі программалау тілдерін пайдаланғанда жұмыс істеу қиындығының түрліше болатындағына қарамастан кез келген программаны жасауда кез келген типтегі программалау тілін пайдалануға болады.
Бұл тілдердің әрқайсысына тоқталмай-ақ, осы тілдерді машина тіліне аударушы трансляторлардың жұмысына тоқталайық. Машина тілінен өзгеше программалау тілінде құрылған программа компьютерде орындалу үшін жарамды түрде, яғни машина тіліне түрлендіруі тиіс. Мұндай түрлендіру трансляциялау деп аталады.
Ассемблердің ендірілетін тілі мнемокод, макроассемблер-макротіл, ал компилятордікі-поцедуралы бағдарланған тілдер боып табылады. Осыған байланысты ендірілетін тілдерді транцлятордың түрлеріне қарай ассемблер тілі, макроассемблер тілі деп аталады т.с.с.
Транслятор арқылы өңделіп алынған программа тікелей компьютерде орындалады немесе оны басқа транцлятордың өңдеуіне тура келеді. Трансляциялау мен программаның орындалуы уақыт жағынан бөлінген болады. Интерпретатордан басқа трансляторларда алдымен барлық программа трансляцияланады содан кейін орындалады. Осы режімде жұмыс істейтін трансляторлар компиляциялаушы типті трансляторлар деп аталады. Егер мұндай транслятордың ендірілетін тілі процедуралы-бағдарланған тіл болса, онда транслятор компилятор деп аталады.
Трансляциялау кезеңімен орындау кезеңдері уақыт бойынша ығысып ауысып келіп отыратын транслятор интерпретатор деп аталады.
Машина тілінде немесе жүктелуші тілде ұсынылған программа транслятор жұмысының нәтижесі болып табылады.
Транслятордың жұмысын төрт кезеңге бөлуге болады:
лексикалық талдау. Мұның негізгі атқаратын қызыметі программаның бастапқы мәтінін одан әрі қарай өңдеу үшін ең ықшамды және ыңғайлы етіп ұсыну. Осылауша алынған мәтін транслятордың синтаксистік талдаушы деп аталатын келесі бөліміне бастапқы деректер ретінде беріледі;
синтаксистік талдау. Бұл кезңде бастапқы мәтінді синтаксистік талқылау жүргізіледі, яғни сөйлемдердің типтерін тану және программаның құрылымын айқындау, сонымен бірге синтаксистік қателіктерді айқындаушы синтаксистік бақылау;
объктік программаны жасау. Бұл кезеңде шын тілдің баламалы сөйлемдерінің мәні зерттеліп, симантикалық талдау жасалады;
объктік программаны безендіру және беру. Бұл транслятор жұмысының соңғы қорытынды кезеңі. Объктік программаны кітапханаға жазуға, баспаға шығаруға болады. Пайдаланушының нұсқауы бойынша транслятор ендіретін қосымша информацияның белгілі бір бөлігі ғана баспаға беріледі.
Шығарылатын есептің сипатына және пайдаланушылардың категориясына байланысты трансляторларға әртүрлі талаптар қойылады. Мысалы, берілген программалау тілін игергісі келетін жаңадан бастаушыларға транслятордың ең маңызды сипаттамасы диагностикалық хабарларының толық әрі қарапайым болуы болып табылады. Егер компьютерде сплыстырмалы түрде алғанда көп уақыт есептеуді қажет етпейтін көптеген майда есептер шығарылатын болса, онда сол есептерді шығару үшін алынған программаның сапасына айтарлықтай мән берілмейді. Транслятордың жұмыс істеу жылдамдығы үлкен рол атқарады. Ұзақ есептелетін күрлелі есептер үшін талап етілетін машиналық уақытты және программаның орындалуы үшін қажетті жадтың көлемін ескере отырып транслятордың жасаған программаның ұтымдылығы ең маңызды рол атқарады. Мұндай ұтымды программалар алу трансляциялау алгоритмдерін күрделендіре түсуді талап етеді, ол трансляторды күрделендіре түсуге және оның жұмыс істеу уақытын арттыруға алып келеді. Осыған байланысты программалау жүйесінің өзінде тіптен бір программалау тілі үшін де бірнеше әртүрлі трансляторлар қарастырылады, ал пайдаланушы өзіне ең керекті трансяторларды таңдап алады.
Трансляциялаудың жалпы схемасы мына төмендегі суретте көрсетілген.
Е
Алғашқы модуль
ндірілетін - - - - - - - - - Төмендегі немесе
тіл жоғары деңгейлі
тілдегі программа
Транслятор
- - - - - - - - - Алғашқы модульді
түрлендіру
Ш
Объектік программа
ығарылатын -- - - - Машина тіліндегі
тіл. немесе төменгі
деңгейлі тілдегі
программа.
Сонымен бастапқы модульді машина тілдегі немесе төменгі деңгейлі тілдегі объектік программаға түрлендіретін программаны трансляциялау деп атайды.
Ендірілетін тілге, трансляциялау кезеңдерінің өту ретіне және программа операторларының орындалуына байланысты транслятордың мынадай түрлері болады:
ассамблер;
компилятор;
интерпретатор.
Ассемблер
Ассамблер–бұл төменгі деңгейлі тілдің трансляторы, оның жұмысы мына төменгі схемада бейнеленген.
Алғашқы модуль
- - - - - Ассамблер немесе
макроассамблер
тіліндегі программа
Ассемблер
Объектік модуль
- - - - Машина тіліндегі
программа және
құрастырушы
үшін информация
Ассемблер бастапқы модульді объектік программаның бір түрі болып табылатын объектік модульге түрлендіреді.
Объектік модульдің оны оған тәуелсіз трансляцияланған басқа модульдермен біріктіруге және оның жедел жадтағы орналасуын реттеуге арналған машиналық командалары және информациялары бар. Объектік модуль компьютерлерде тікелей орындалмайды, сондықтан да оны программа құрастырушының қосымша өңденуіне тура келеді.
Интерпретатор және компилятор
Жоғары деңгейлі тілдің трансляторы трансляциялау кезеңдерінің өту реттілігіне және программа операторының орындалуына байланысты интерпретатор немесе компилятор деп аталады. Интерпретатор әрбір жеке операторды трансляциялаған соң, оның тікелей тез орындалуын қамтамасыз етеді, яғни трансляция кезеңі мен орындалу кезеңі кезекпен қайталанады. Программаны интерпретациялау схемасы мына суретте көрсетілген.
Интерпретатор
Жоқ
Иә
Программа операторын ендіру
Операторды трансляциялау
Операторды ішкі пішінде көрсету
Алғашқы модуль
Операторды орындау
Жоғарғы деңгейлі
тілдегі программа
Компилятор программаның барлық операторларын трансляциялайды, ал программаның орындалуы жалпы алғанда оның қатынасуынсыз өтеді, яғни жеке операторларды трансляциялау кезеңдері тікелей бірінен соң бірі өтеді және программаның орындалуынан толық оқшауланған болады. Программаны компиляциялаудың қысқартылған схемасы мына суретте көрсетілген.
Компилятор
Жоқ
Иә
Программа операторын іздеу
Объектік программа
Кезектегі операторды трансляциялау
Объектік модуль
немесе төменгі
деңгейлі тілдегі
программа
Жоғарғы деңгейлі тілдердің көпшілігі үшін комбиляторлар жасалған. Интерпретаторлар жасалған тілдердің мысалына BASIC және FOCAL тілдерін атауға болады. Компьютерлердің программалау жүйесінде комбилятордың екі түрі бар. Бірінші түрдегі комбиляторлар бастапқы модульді машина тіліндегі объектік программаға түрлендіреді, яғни объектік модульді ассемблар тіліндегі объектік программаға түрлендіреді. Екінші түрдегі комбилятор қалыптастырған осы программадан объектік модульді алу үшін қосымша ассемблерді пайдалану қажет болады.
Достарыңызбен бөлісу: |