Файл қосу

Алгоритмнің басы



Қазақстан Республикасының бiлiм және ғылым министрлiгi



Шәкәрiм атындағы Семей Мемлекеттiк университетi | |
|3-деңгейлi АӘК құжаты              |ОӘК         |                       |
|                                   |            |ПОӘК                   |
|                                   |            |042-14-02-03.1.06.159/3|
|                                   |            |-2009                  |
|ПОӘК                               | №2 баспа   |                       |
|«Бағдарламалау технологиясы»       |            |                       |
|пәнінен жұмыс бағдарламасы         |            |                       |









                    «Бағдарламалау технологиясы» пәнінен

                           ОҚУ -ӘДІСТЕМЕЛІК КЕШЕНІ


          050704 Есептеу техникасы және программалық қамсыздандыру


                               мамандығы үшiн




                         ОҚУ-ӘДІСТЕМЕЛІК МАТЕРИАЛДАР

















                                    Семей
                                    2009

Мазмұны



|1   |Глоссарий                                                       |4     |
|2   |Дәрістер                                                        |5     |
|    |                                                                |      |


































                                 1 ГЛОССАРИЙ

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


      Ақпараттарды өңдеу - бір ақпарат негізінде жаңа ақпарат алу
      Ақпараттық процестер - ақпараттар арқылы орындалатын әрекеттер
      Енгізу  қүрылғысы  -  Екілік  кодымен  кодталған   ақпараттарды   және
бағдарламаларды компьютер жадына енгізуге арналған құрылғы.
      Компьютердің жадысы - ішкі және сыртқы болып  бөлінетін  мәліметтерді,
бағдарламаларды, нәтижелерді және аралық  мәндерді  сақтап  тұруға  арналған
құрылғы.
      Процессорлар  -  мәліметтерді  өңдеуге,  компьютер  жұмысын  басқаруға
арналған құрылғы.
      Шығару кұрылғысы - өңделген нәтижелерді  кері  кодтауға  және   оларды
адамға қолайлы түрде шығарып беруге арналған құрылғы.
      Ақпараттық даңғылдар (магистраль)  -  барлық  кұрылғыларға  ақпараттар
алмастырып беріп отыруға арналған құрылғы.
      Бағдарламалық қамту  - компьютердің бағдарламалық жабдықтары.
      Интегралданған   бағдарламалар    пакеті    -    бірнеше    қолданбалы
бағдарламаларды біріктіретін бағдарламалар.
      Деректерді  архивтеу - файлда ақпаратты қысу  процесі
      Жергілікті желі - әртүрлі типті кабельдердің көмегімен желілік карта
немесе желілік адаптер деп аталатын арнайы құрылғы арқылы компьютерлердің
(бірден бірнеше жүзге дейін) біріктірілуі.
      Қолданушы интерфейсі- қолданушының компьютермен байланысын  жүргізетін
программалық және аппараттық жабдықтар жиынтығы.
      Диалог дегеніміз ақиқат уақыт масштабында жүргізілетін және нақты  бір
есепті шешуге бағытталған адам мен компьютер арасындағы ақпарат алмасу.
      Ақпараттық терезе- бұл екі түрде болады: хабарлама терезесі және көмек
терезесі.




                                 2 ДӘРІСТЕР
                    Кiрiспе. Пәннің мақсаты және міндеті.
            Дербес компьютердің программалалық қамтамасыздандыруы
                               туралы түсінік



      Бұл әдістемелік құрал  -  «Бағдарламалау  технологиясы»  пәні  бойынша
дәрістерден тұрады және дербес компьютерлер үшін Си  программалау  ортасында
жұмыс істеуге арналған.

      «Бағдарламалау  технологиясы»  пәнінен  студенттер  Си    программалау
тілінде программаларды құру тәсілдерін үйренеді.

      Жоғарғы деңгейлі программалау тілдерінің бірі − Си. Бұл  бағдарламалау
тілі Bell лабораториясында жасалған. Бұл тілді ассемблердің  орнына  қолдану
үшін шығаруды жоспарлаған еді. Си – бұл жалпы тағайындаудың тілі, ол  өзінің
үнемділігімен,   тиімділігімен   және   тасымалданғыштығымен   ерекшеленеді.
Аталған ерекшеліктер арқасында Си тілі  арқылы  бағдарлама  өнімдерінің  кез
келген түрін жасауға болады.  Си  тілі  құралдық  тіл  ретінде  қолданғанда,
жедел және тұтас бағдарламаларды құрастыруға болады.
      Бейсик  тілі   сияқты,   ол   оқып-үйренуге   жеңіл,   түрлі   салалық
информациямен  жұмыс  істеуде  нәтижелі  болғандықтан,  дүние  жүзінде   көп
тараған тілдердің бірі. Оның ыңғайлылығы:
    • тіл алгоритм құрылымын сақтап құрылған. Мұнда программаны  бірте-бірте
      дамыту арқылы жинақты түрде құруға  болады.  Ол  программалау  тәсілін
      үйрену үшін де қажет;
    •  тілге  дамытылған  берілгендер  типтері  енгізілген.  Олар  өңделетін
      берілгендер элементтерін толық  сәйкестендіріп  сипаттауға  және  жаңа
      берілгендер типтерін енгізуге мүмкіндік береді;
    •  мұнда  кішігірім  жеңіл  программалармен  бірге   күрделі   құрылымды
      программаларды құру да мүмкін;
    •  тіл  синтаксисі  қиын  емес;   нұсқаулардың   (операторлардың)   саны
      мүмкіндігінше азайтылған, т.б.
      Си тілінде құрылған программаны мәшинелік кіріспе  тілге  аудару  үшін
компилятор пайдаланылады.
      Си  тілі  бұрын  құрылған  (Фортран,  Алгол  және  т.б.)  программалау
тілдерінен маңызды ерекшелігі  ол  құрылымдық  программалау  идеясын  өмірге
біртіндеп енгізу. Си тілінің тағы бір  ерекшелігі  ол  деректер  құрылымының
концепциясының алгоритм түсінігімен қатар программалаудың  негізінде  жатқан
фундаменталды түсініктер қатарына кіруі.
      Бұл тілдің стандарты кейiнiрек бекiтiлдi, ол сол кездері кең  таралған
СИ, АЛГОЛ, ФОРТРАН, БЕЙСИК тiлдерiне қарағанда жетiлдiрiлген, жұмыс  iстeyгe
ыңғайлы тiл болды. Си  тiлi  өзінің  қарапайымдылығының  және  тиiмдiлiгiнің
арқасында  дүние  жүзіне  тез   таралды.   Қазiргi   кезде   барлық   дербес
компьютерлер осы тілде жұмыс iстей алады. Си тiлiнде  жазылған  программаның
дұрыстығын компьютерде тексеру және жiберiлген қатенi тузету оңай.
      Бұл тілде жазылған программа компьютерде  орындалу  барысында  алдымен
трансляцияланады   (машина   тiлiне   аударылады),   объектiк    программаға
түрлендіріледі  де  содан  кейiн  ғана  орындалады.  Осы  сәтте  компьютерде
программаның екі  нұсқacы  болады,  оның  бiрiншiсi  -  алгоритмдiк  тiлдегi
алғашқы түпнұсқасы, ал екiншiсi - объектiк кодтағы жазылған программа.  Есеп
нәтижесін машиналық кодта жазылған программа арқылы аламыз,  ал  программаны
түзету қажет болғанда,  оның  алгоритмдiк  тiлде  жазылған  алғашқы  нұcқacы
өңделеді.
      Қазiргi кезде Си кез  келген  күрделі  есептерді  шығара  алатын,  кең
таралған стандартты оқу тіліне айналды.
      Көмекші  құрал  келесі  мамандықтың  студенттеріне  арналған:   050702
«Автоматтандыру және басқару», 050704 «Есептеу техникасы  және  программалық
қамсыздандыру.
      Оқу  құралы  бағдарламалаудың   қазіргі   технологиясымен   танысамын,
объектілі   бағытталған    технологияның    негізінде    өздерінің    меншік
бағдарламасын құрамын деген студенттер, оқытушылар, мектеп мұғалімдері  және
қолданушылардың кең ортасында қолданылуы мүмкін.
      Компьютер-  тапсырмаңызды  орындауға  дайын  тұратын  әмбебап  есептеу
жүйесі. Бірақ сіздің тапсырмаңызды орындау үшін машинаға программаны  енгізу
керек. Программа дегеніміз машина тіліне аударылған сіздің  есеп-бұйрығыңыз,
өйткені әзірше машина кәдімгі адам тілін түсіне алмайды.
      Программа  клавишті  пульт  перфокарта,   магнитті   дискілер   арқылы
компьютерге  енгізеді.  Компьютер  программада  көрсетілген   іс-әрекеттерді
орындайды. Программа қатесіз  жасалу  керек,  белгілі  ережелер  сақталмаса,
машина ондай програм маны орындамайды.
      Программа- арнайы текст  арқылы  комспьютерге  тапсырманың  алгоритмін
хабарлайды. Алгоритм  –арнайы  іс-әрекеттердің  белгілі  кезекте  орналасқан
тәртібі, алогритм арқылы машина тапсырманы орындайды.
      Мысал келтірейік: у= 3х2 +4х-+ 2  функциясы берілген. У-тің мәнін табу
керек. Бұл есептің қарапайым алгоритмін құрып шығару үшін:
       х-ті х-қа көбейтіп, шыққан санды М1 деп белгілейміз;
       3-тім М1-ге көбейтеміз де, шыққан санды М2 деп белгілейміз.
       4-ті х-ке  көбейтеміз де, шыққан санды М3 деп белгілейміз.
       М2-ні М3–ке қосамыз, шыққан санды М4 деп белгілейміз.
       2 –ге М4 –ті қосамыз, шыққан санды М5 деп белгілейміз
       ү-ке М5 –тің мәнін меншіктейміз
      Осы тәртіпті  бұл  есептің  алгоритмі  дейді.  Машинаға  бұл  алгоритм
түсінікті болу үшін  арнайы  тілмен  жазамыз.  Сонда  ол  машина  програмасы
болады.
      Программаны   орындау   үшін   машинаның   оперативті   есте    сақтау
құрылғысында 3, х, 4,2 мәндері болуы керек және машинаның  жадында  есаептеу
барысында шығатын М1,М2, М3, М4, М5, у сандары орналастырылуы керек.
      Тапсырманың дұрыс орындалуы  алгоритмнің тиімді құрылуына  байланысты.
Себебі алгоритм шексіз есептеулерден  құрылуы  мүмкін,  ал  мұны  шешу  үшін
машинаға  ондаған  жылдар  үздіксіз  жұмыс  істеу  керек  болар  еді.  Тіпті
алгоритм тиімді таңдалған күннің өзінде  де  оның  программасын  жасау  оңай
емес. Бұл жерде программаның құрамындағы мыңға дейінгі түрлі  символдар  мен
адрестерді, нұсқауларды, берілетін ақпараттарды қолдан кодтау керек  болады.
Программаны жасау барысында көптеген қателер де кетуі  мүмкін.  Олар  жөндеу
кезінде анықталып түзетіледі, мұндай қателерді түзеу кейде ұзаққа  созылады,
сондықтан да программаны жазу өте қымбатқа түседі.
      Программа құруды жеңілдету үшін түрлі  әдіс-тәсілдер  пайдалынады.  Ол
үшін көлемді  программаларды  бірнеше  бөлшектерге  бөледі  де  оларды  рет-
ретімен  орындайды.  Мұндай  жинақты  функциональдық   программаларды   жеке
тіркеп,  стандарт  программалдарға  арналған  арнайы  кітапханада   сақтауға
болады.  Кіші  программалар  көлемді   программаның   ішінде   бірнеше   рет
кездесуі мүмкін.
      Программа құруды жеңілдету үшін, әдетте, алдымен алгоритмдік схемасын,
содан соң осы  схема  бойынша  машина  кодына  немесе  кез  келген  бір  бір
алгоритм тілнде программаның өзін жазады.
      Алгоритмдік схе маның  жәрдемімен  ақпаратты  өңдеудің  егжей-тегжейлі
процесі беріледі және орындалатын операциялар реті  анықталады.  Алгоритмдік
схеманы жасау үшін арнайы шартты белгілер қолданады.
      Ескерте кететін бір жәйт, бір есепті шешу үшін  бір-біріне  ұқсамайтын
алгоритмді қолдануға болады.  Түрлі  алгоритмдерді  бір-бірімен  салыстырып,
ішінен ең тиімдісін таңдап алу  керек.  Бір  ғана  тапсырманы  орындау  үшін
пайдаланатын барлық жағынан  тиімді  алгоритм  болмайды.  Әдетте  алгоритмді
қадамдарының саны бойынша бағалайды Компьютер белгілі  бір  уақытта  көлемді
тапсырмалар орындау үшін  олардың  алгоритмдері  тиімді  әрі  қысқа  қүрылуы
керек. Бұл жағдайда программа мен алгоритм күрделіленеді.
      Программа жасау  үнемі  өсу,өрлеу,  жаңару  үстінде.  Олай  дейтініміз
алғашқы программалар машина кодтарына жасалады.  Бұл  өте  қиын  жұмыс  еді.
Себебі программалаушы үнемі кодтық операциялар,  ақпараттар,  адрестер  және
командалар арқылы жұмыс істеуге мәжбүр  болды.  Сондықтан  программалаушылар
өз жұмыстарын  жеңілдету  жлдарын  іздестіруге  кірісуде.  Олар  алгоритмдік
тілдер  мен  символдық  программалау  тәсілдерін  жасап  шығарды.  Символдық
программалау тілі күрделі кодтар символдармен ауыстырылды.  Символдық  тілді
пайдаланып программалаушы компьютер жадысының  ұяшығындағы  түрлі  нұсқаулар
мен ақпараттарды есептеп, тіркеп отырудан құтылды.
      Ал   символ   тілінде   әрбір    санның    адресі    идентификатормен,
белгіленгендіктен   мұндай  талаптардың  қажеті  болмайды.  Бұл  программаны
жасауда  сандардыы  идентификатор  арқылы   адрестеуге   мүмкіндік   береді.
Дегенмен, символдық тілді машина  түсінуі  үшін  оған  аудармашы  керек.  Ол
машинаға  ақпаратты  өңдеу  программасының  кодын   жасап   береді.   Мұндай
аудармашы ролін  арнайы  аудармашы  программа  –  транслятор  атқарады,  оны
ассемблер деп атайды
      Символдық тілдерді  пайдаланудағы  негізгі  жетістік-  ақпараттар  мен
нұсқаулар  адрестерін  қабылдауда  автоматтандыру  нәтижесінде   программаны
жасауға  кететін  уақыттың  қысқарғандығы  және   программаны   коллективтік
өңдеудің қарапайымдылығы. Себебі мұнда программаның кейбір бөлшектері  нақты
ес ұяшығына мықтап тиянақталмаған. Сондай –  ақ  мұнда  программаны  орындау
мен оған  түрлі  өзгерістер  енгізу  мәселесі  де  қарапайым.  Осыдан  барып
стандарттаудың мол  мүмкіндігі  мен  кіші  программалардың  бөлшектерін  жиі
пайдалану жолдары шығады.
      Символдық тілде программалаудың кемшілігі- оны,  негізінен,  қарапайым
болса да машина тілінде жасауда және  бұл  программаларды  әрбір  енгізілген
өзгерістер кейін трансляциялап отыруда. Әйтсе де олар практикада  кең  түрде
қолданып   келеді.   Әрбір   компьютерде    символдық    тілдер-    автокод,
ассемблер,мнемкод т б қолданылады. Бұл тілдердегі  бір  операторға,  әдетте,
бір ғана командаға сәйкес келеді. Оларды машиналық  бағытталған  тілдер  деп
атайды. Фортран, Алгол, ПЛ/1, Qbasic,  Си  т  б  тілдерінде  әрбір  оператор
өзара  байланысты  нұсқау  қатарын   ауыстырады,   ал   бұл   программалауды
жеңілдетеді. Бұл тілдерді проблемалық – бағытталған жоғары деңгейлік  тілдер
деп атайды. Осы тілдерде жазылған программаны машина кодына аударуды  арнайы
транслятор атқарады.
      Транслятор алгоритмдік  тілдер  операторын  оқиды  және  соған  сәйкес
машина  кодтарын   ұсынады.   Сондай   –ақ   транслятор   жіберілген   түрлі
синтаксистік қателерді табады, ал бұл программалаушы жұмысын жеңілдетеді.
      Транслятордан басқа  машинада  арнайы  программалар  –интерпретаторлар
бар.Олар  кейбір  алгоритмдік  тілдер  үшін  жазылған  программаны  машинаға
енгізеді және жұмыс істеу кезінде оларды есте сақтайды.


                       1 Алгоритм және оның қасиеттері


      Егер сіз берілген есепті шешу үшін қандай да бір программалау  тілінде
программа жазғыңыз келсе, онда алдымен есепті  шешудің  алгоритмін  құруыңыз
керек. Алгоритм – математикадағы ең бір іргелі ұғымдардың бірі.  Алгоритм  –
атқарушы орындайтын амалдардың тиянақты жоспары. Алгоритм  сөзі  ІХ  ғасырда
өмір сүрген, адамдардың  квадрат теңдеулерді жүйелей құрып оны  шеше  білуге
үйреткен ұлы математик  Әл- Хорезмидің  атының  латынша  жазылуы  algorithmi
сөзінен алынған. Осылайша  алгоритм  ұғымы  математикада  ертеден  қолданыла
бастағанымен,   математикалық    теорияның    объектісі    ретінде    кейбір
проблемаларды зерттеуге байланысты ХХ  ғасырдың  30-шы  жылдарында  зерттеле
бастады.
      Алгоритм деп берілген есепті шешудегі жасалатын  әректтерді  дәл  және
қарапайым етіп жазуды  айтамыз.  Басқаша  айтқанда  алға  қойылған  мақсатқа
жетуде немесе берілген есепті шешуде орындаушыға біртіндеп  қандай  әректтер
жасау керектігін дәл көрсететін нұсқауларды немесе  іздеп  отырған  нәтижені
алу  мақсатында  деректермен  атқарылатын  әрекеттерін  орындалу  реттілігін
анықтайтын  жарлықты  алгоритм  дейміз.  Алгоритм  белгілі  бір  реттіліепен
бірінен соң бірі орындалатын бірнеше қадамдардан тұрады.  Алгоритмнің  әрбір
қадамы бір немесе бірнеше қарапайым операцияларды қамтиды. Алгоритм  ұғымның
мәнін аша түсетін оның мынадай қасиеттері бар:
1.Алгоритм дискретті  информациялармен  жасалатын  әрекеттерді  тағайындайды
және өрнектейді. Алгоритмге  қатысты  әрекеттердің  бәрі  дискретті  болады.
Алгоритмнің жұмысына қажетті материалдар  ретінде  символдық  мәтіндер  және
сандар пайдаланылады.
2.Алгоритм  біздің  қалауымызға  қарай  өзгертуге  болмайтын  нақты  нұсқау,
алгоритмде не істеу керектігі алдын-ала айқын беріледі. Мысалы,  бір  есепті
шешудің алгоритмі  берілсе  онда  ойланбай-ақ  алгоритмде  қандай  нұсқаулар
берілсе, сол нұсқауларды берілу ретімен орындасақ, есеп шығады.  Алгоритмнің
осы қасиетін оның анықталғандық қасиеті дейміз. Бұл жағдай адам сияқты  емес
ойлау қабілеті жоқ құрылғылардың мысалы,  компьютердің  көмегімен  есептерді
шешу мүмкіндігіне кепілдік берді. Мұндай құрылғылар алгоритмнің  жарлықтарын
ойланбастан  формальды  орындайды.  Сондықтан  алгоритмді  есепті   шығаруға
қажеттінің бәрі бір мәнді  анықталу  және  атқарушыға  түсінікті  әрі  нақты
болуы тиіс.
3.Бір  алгоритмнің  өзін   бірнеше  есептің  шешімін  табу  үшін   пайдалану
мүмкіндігі,  яғни   бастапқы   деректер   мәндерінің   жиынына   пайдаланылу
мүмкіндігі бар.
Алгоритмнің   мұндай  қасиетін  көпшілікке  бірдейлік,   басқаша   айтқанда,
жалпылық  қасиеті деп атайды.
4.Әрбір алгоритм белгілі бір бастапқы деректердің болуын  талап  етеді  және
іздеген  нәтижені  алуға  жеткізеді.  Мысалы,  екі  санды  қосу  алгоритмнде
қосылғыштар бастапқы  деректерге,  ал  қосынды  нәтижеге  жатады.  Осылайша,
алгоритмдегі әрекеттердің белгілі  бір  санның  орындалуынан  кейін  қажетті
нәтиже алу мүмкіндігі алгоритімнің нәтижелілігі деп аталады.
      Осы айтылғандардан алгоритім бастапқы  деректерді  пайдаланып  іздеген
нәтижеге қол жеткізетін реттелген әрекеттер тізбегі деген қорытынды  жасауға
болады. Мұндай әректтер тізбегінің орындалуы алгоритмдік процесс,  ал  әрбір
әрекет оның қадамы, әрбір нұсқау алгоритмнің қалыптасуы болып табылады.
      Алгоритмнің  ең  маңызды  қасиеті  жоғарыда  анықталғандық  қасиетінде
айтылғандай оның орындалу нәтижесінің  атқарушыға тәуелсіздігі.
      Сонымен алгоритм туралы мына төмендегідей тұжырымдар жасауға болады:
       • алгоритмдер әртүрлі есептерді шешу үшін пайдаланылады;
       •   алгоритмді  атқарушыдан  аз  білім  талап  етілетіндіктен   есеп
         шығаруды айтарлықтай оңайлатады;
       • әрбір алгоритм толық аяқталған әрекеттерді  орындайтын  атқарушыға
         арналған командалардан тұрады;
       • атқарушы орындайтын командалардың  жиынын  атқарушының  командалар
         жүйесі  деп атайды;
       •  алгоритмдегі командалар атқарушының командалар жүйесінен алынады;
       •  алгоритмдегі командалар тізбегінің орындалуы алгоритмдік  процесс
         деп аталады;
       • алгоритмдегі  әрбір команда оның қадамы деп аталады;
       • санаулы әрекеттен  кейін  ғана  алгоритмде  іздеген  нәтижеге  қол
         жетеді;
       • алгоритмдегі әрбір әрекет атқарушыға түсінікті  және  нақты  болуы
         керек;
       • бірнеше есептің шешімін табу үшін бір ғана алгоритмді  пайдалануға
         болады;
       • құрылған алгоритмді  атқару  есептің  мазмұнына  ой  жүгіртіп  оны
         талдауды қажет етпейді, тек командаларды формальді орындай береді;
       • алгоритм әрбір атқарушыға арналып құрылады;
       • алгоритмнің  командалары  атқарушыға  түсінікті  және  орындалатын
         болуы тиіс;
       • алгоритмді  атқаруды  тек  адамға  емес  компьютерге  де  жүктеуге
         болатындығы есептеу процесін автоматтандыруға мүмкіндік береді;
      Алгоритмнің құрамы дараланып және оның әрекеттері анықталғаннан  кейін
алгоритмді жазып көрсету тәсілін және  тілін білу керек.  Алгоритмдік  тілді
падалану оны құрушының өзіне ғана түсінікті командаларды  көпшілік  қауымның
пайдалануына  мүмкіндік  береді.  Алгоритмді   жазудың   бірнеше   тәсілдері
бар.Төменде алгоритмді бейнелеу әдістерінің логикалық құрылымы көрсетілген.
      [pic]
      Сурет 1 Алгоритмді бейнелеу әдістерінің логикалық құрылымы
      Алгоритмді  бейнелеу  әдістерінің  ішінен  біз  блок   –   схема   мен
алгоритмдік тілді пайдаланамыз.
                               1.1 Блок-схема


      Блок  схема  компьютерге  программалар  жасау  практикасында   кеңінен
қолданылатын алгоритмдерді жазудың  графикалық  тәсілі,   басқаша  айтқанда,
алгоритмнің  логикалық  құрылымын  график  түрінде  бейнелейтін  тіл   десек
болады. Есепті шешу алгоритімінің блок схемасын құрған кезде  есепті  шығару
процесі кезеңдерге бөлінеді. Әрбір кезең  есептелетін  операцияның  сипатына
байланысты белгілі конфигурациясы бар бір геометриялық  фигурамен  (блокпен)
белгіленеді.  Мысалы,  жұмыр  (сопақ),  параллелограмм,  тіктөртбұрыш,  ромб
т.с.с.
      Блок  деп  аталатын  мұндай  фигуралардың  ішіне  кезеңдердің  мазмұны
жазылады.  Есептелу  процесінің  бағыты  блоктарды   қосатын   стрелкалармен
көрсетіледі. Осы аталғандардың бәрі блок – схема тілінің  алфавитін  құрайды
және олардың мағынасы алдын ала келісілген келісім бойынша беріледі.
      Төмендегі 1-кестеде стандартты блок – схема тілінің алфавиті берілген.
Әрбір блок схеманың басы және соңы деп аталатын блоктары болады.
      Басы, соңы блоктарынан басқа әрбір блоктың бір ену және бір – екі шығу
сызықтары болады.
      Атқаратын қызметі жағынан блоктар негізгі және қосымша болып бөлінеді.
Негізгі блоктар  енгізіу  мен  баспаға  шығару  және  информацияларды  өңдеу
әрекеттерін білдіреді, ал қосымша блоктар  блок  –  схеманы  түсіндіру  және
байланыстарды таңбалау үшін пайдаланылады.
      Блоктардың анықтайтын әрекеттері, яғни түсініктер  блокты  бейнелейтін
геометриялық фигураның ішіне жазылады.
      Деректерді енгізу блогы есептеу есептерін шешуде айнымалылардың сандық
мәндерін компьютердің жадына енгізу үшін қолданылады.
      Деректерді өңдеу блогы қандай да бір формула бойынша айнымалының мәнін
есептеу  процесін  білдіреді.  Мұнда  есептелген   шамалар   оларға   сәйкес
айнымалылар жаңа мәндер қабылдағанша сақталады.
      Бұл блокта формуланың сол жағында тұрған айнымалылар  оның  жағына  да
қатыса алады, бұл дегеніміз айнымалының жаңа  мәнін  бұрын  есептелген  ескі
мәнінен шығарып алудың қажеттігін көрсетеді.
      Шартты тексеру блогы есептелу процесінің барысы тікелей кейбір  шартқа
тәуелді  болатын  есептелу  процесінде  анықталатын  тармақталу   алгоритмін
бейнелейді.


                Аталуы                 Бейнеленуі                 Мазмұны


                                   Жұмыр                             (Сопақ)
Алгоритмнің басы



     Деректерді енгізу немесе
       Параллеограм                                                   шығару




      Тіктөртбұрыш
Меншіктеу амалы немесе

     кез келген әрекет.
                                    Жоғары                              жағы
Массивті хабарлаушы
                                                                  жиектелген
процедура.
      тіктөртбұрыш


                                     Екі                                шеті
Бағыныңқы программа
       жиектелген
       тіктөртбұрыш


      Магниттік                                                         диск
Ақпаратты

    енгізу және одан оқу


                                    Ия                             Жоқ

     Шартты тармақталу
        Ромб


                                                                       Жұмыр
Алгоритмнің соңы






                                                                       Түйін
Бірнеше сызықтарды

    біріктіру




      Байланыссыз
Сызықтардың
      екі                                                           сызықтың
қиылысуы
      қиылысуы



   Блоктарды қосатын
      Сызықтар  ағыны                                               сызықтар
және олардың

   бағыттары
      Сызықтар
      ағынының                                                       бағытын
Сызықтардың
      өзгерту
      бағыты


      Түсініктеме                                                   --------
 Ендіру немесе есептеу

             блоктарын түсіндіру




                           1.2.1 Сызықтық алгоритм


      Бағдарлама  деп белгілі бір бағдарламалау тілінде  жазылған  реттелген
командалар тізбегін айтамыз. Белгілі бір алгоритмді бағдарламалау  дегеніміз
осы  алгоритм  орындалатын  бағдарлама  жазу.  Ендеше   сызықтық   құрылымды
алгоритмді бағдарламалап көрейік. Сонымен сызықтық алгоритм деп  командалары
бірінен соң бірі тізбектеліп орындалатын алгоритмді айтамыз.
      Сызықтық бағдарлама жазу үшін келесі операторларды білу қажет:
                     - меншіктеу операторы :  =
                     - енгізу операторы;
                     - шығару операторы;
      Меншіктеу операторы жазылған өрнектердің мәнін есептеп оны  айнымалыға
беру үшін қолданылады.


      Жазылу ережесі <айнымалы атауы>:=<өрнек>;
       мұндағы  <айнымалы  атауы>-  айнымалы  идентификаторы,  :=  меншіктеу
белгісі, яғни айнымалының мәні орнектің  есептелген  сан  мәнін  қабылдайды;
<өрнек> - арифметикалық өрнек немесе сан.







                        Сурет 2 Меншіктеуге мысалдар
           А:=10;                          B:=45;
      REZ:=A*B;
      Егер алгоритмнің N қадамы болса және олардың  барлығы  басынан  аяғына
дейін бірінен соң бірі тізбектеле орындалатын болса, онда  ондай  алгоритмді
сызықтық алгоритм деп атаймыз. Сызықтық алгоритмнің  блок-схемасы  төмендегі
суретте бейнеленген.

                                    Алгоритмнің басы

                          Мәліметтерді енгізу


                       Меншіктеу


                       Нәтижелерді шығару




                       Алгоритмнің соңы


                 Сурет 3 Сызықтық алгоритмнің  блок-схемасы
                         1.2.3 Тармақталушы алгоритм


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


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


      Мысалдар келтірейік: А > 0, Х < А+С,    К = 6


      Мына  төменде  алгоритмнің  тармақталушының   бөлігінің   жалпы   түрі
келтірілген.


            егер  < шарт >
                   онда  "иә" тармағы
                  әйтпесе  " жоқ " тармағы
      бітті


            Мұнда  егер,  онда,  әйтпесе,  бітті  –  қызметші  сөздер,  егер
команданың басын, ал бітті   команданың  аяқталуын білдіреді.


                    1.2.4 Циклдік (қайталанушы) алгоритм


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


       Әзір  < шарт >
                       ЦБ
                          команадалар тізбегі
                       ЦС
            Мұнда әзір, ЦБ  (циклдің басы), ЦС  (циклдің  соңы)  –  қызметші
сөздер, ЦБ  және  ЦС әзірше шарт орындалғанға дейін  орындалатын  командалар
тізбегін таңбалайды.


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


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


                   2 Программаларды жасақтау технологиясы
                         2.1 Программалауға кіріспе


      Компьютерде жұмыс істеу үшін оған керекті програмаларды  програмалаушы
адам жасайды.
      Пргораммалаушы мамандығы дүние жүзіндегі ең бір  тапшы  мамандықтардың
бірі.
      Бұл мамандықты таңдаған адам өмір бойы  үйренеді  деп  айтуға  болады.
Өйткені жыл санап  алуан  түрлі  программалау  тілдері  (орталары)  қосылып,
ауысып келіп отырады.
      Оқып шығып бірден программалаушы бола салатын ешқандай оқу құралы жоқ.
      Программалаушының дайындығы  негізгі  ұғымдарды  оқып  үйренуден  және
қарапайым программалау тәсілдерін меңгеруден басталады.
      Компьютер командаларға бағынып жұмыс істейді. Біздер бұл  командаларды
пернетақтаның көмегімен жазу машинкасында жазу жазғандай теріп ендіреміз.
      Бірінші команданы  ендірдік,  компьютер  оны  қалай  орындайды,  қарап
шықтық, екінші команданы ендірдік,  нәтижесін  бағаладық,  үшінші  команданы
ендірдік... Осылайша, ендірілетін командалар көп әрі біртектес болған  сайын
оларды  ендіру  адамның  шыдамын  тауысып  жалықтырып   жібереді.   Төрт-бес
команданы есте сақтай отырып ендіруге, ал он команданы ендіру  үшін  қағазға
жазып  алуға  болады.Жүзден  астам  командаларды  ендіру  үшін  өте   жоғары
шыдамдалық қажет.
      Ал егер жиі қайталанатын командалар тізбегін компьютерде файл  түрінде
қатаң немесе иілгіш  магниттік  дискіге  жазып  сақтап  қойып,  командаларды
біздің пернетақтадан ендіруімізді күтпей-ақ сол дискідегі  файлдан  енгізуді
компьютердің өзіне жүктесек, қалай болған болар еді?  Әрине,  қолмен  қайта-
қайта  теріп  отырғаннан  гөрі  ыңғайлы  болар  еді.  Программаларды   жасау
осылайша басталады,  жоғарыда  айтылғандай  дискіге  жазылған  командалардан
тұратын  файл  нағыз  прграмманың  өзі  болып  табылады.  Сонымен,  прграмма
дегеніміз  командалардың  реттелген  тізімі.  Программа  үшін  оған   қандай
командалардың кіретіндігі ғана емес, сонымен  бірге  олардың  қандай  ретпен
берілетіндігі де маңызды.
      Программаны  арнайы  дайындықтан   өткен   адамдар   жасайды.   Оларды
программалаушылар деп атайды. Программаны қалай  жасайды?  –  деген  сұраққа
жауап беру қиын. Программалаушыллардың шеберлігінің көптеген құпиялары  бар,
бірақ олардың бәрі мына төмендегідей екі нәрсені пайдаланады:
     • программалау саймандары
     • программалар кітапханасы

                        2.1.1 Программалау саймандары


      Программалау саймандары дегеніміз не?-деген сұраққа  жауап  беру  үшін
мынадай  қарапайым  ұқсастыру  мысалын,  яғни  өзіміз  күнде  көріп   жүрген
автомобильді алайық. Автомабиль қандай саймандардың көмегімен  жасалған?  Ол
зауытта станоктың  және  жабдықтардың  көмегімен  жасалған.  Бұл  аталғандар
автомобильді жасаушы саймандар блып табылады.
      Ал станоктар мен жабдықтардың  өздері  қандай  саймандардың  көмегімен
жасалған? Олар басқа зауытта  басқа  станоктар  мен  жабдықтардың  көмегімен
жасалған. Ал бұл станоктар мен жабдықтар қалай жасалған?
      Осылайша, сұрақты  қоя  берсек  әрбір  станоктың  өзінің  алдында  оны
жасаушы, алдыңғысынан қарапайым басқа станоктың бар екендігі  келіп  шығады.
Егер әрбір станоктың пайда болу тарихын  қозғай  берсек,  онда  біздер  орта
ғасырдағы балға, егеу және төсті пайдаланатын ұстаханаға келіп тірелеміз.
      Осы күнге дейін кейде автомобиль бұзылып қалғанда әлгі  аталған  балға
және егеуді пайдаланамыз.
      Енді программа жасаудың жоғарыда келтірілген мысалға қандай қатысы бар
соған келейік.
           Программалаушы  пайдаланатын  сайманнның  өзі   программа   болып
табылады.  Басқаша  айтқанда,  жаңа  программаның   өзін   сайманның   ролін
атқаратын басқа программаның көмегімен жасайды. Ал осы  сайман  программалар
қалай  жасалған?  Жоғарыда  келтірілген   ұқсастыру   мысалымыздағы   сияқты
алдыңғысына  қарағанда  қарапайым  басқа  сайман  программалардың  көмегімен
жасалған.  Осылайша,   басқа   программалардың   көмегімен   жасалған   жаңа
программалардың   жасалу   ретін   тізе   берсек,   онда   біздер   жоғарыда
айтқанымыздай программа жасаудағы «балға  мен  төске»  келеміз,  яғни  басқа
сөзбен айтқанда программалаушылардың қолында  ешқандай  программа  болмайды,
тек оның орнына белгілі сандық кодтарды  ғана  түсінетін  процессор  болады.
Мұндай кодтарды машиналық кодтар деп атайды.
      Процессордың  түсінетін  және  орындайтын   кодтарының   жиынын   оның
комндалар жүйесі деп атайды.
      INTEL  фирмасының  үйлесімді  процессорларының  командалар   жүйесінде
бірнеше  жүз  түрлі   командалар   бар.   Компьютердің   программалары   осы
командалардан жасалады.
      Программалау саймандары –  бұл  шын  мәнінде  программалаушының  өзіне
ыңғайлы түрде жазғандарын оқитын  және  оны  процессорға  қажетті  машиналық
кодқа аударып беретін арнайы программа.

                       2.1.2 Программалар кітапханасы

          Зауытта жұмысшы автомобильді құрастырғанда оған қажетті болтты  өз
қолымен қалыпқа құйып, содан соң  оған  ойық  бұранданы  шығарып  жасап  алу
ойына да келмейді. Оның орнынына  ол  жанында  тұрған  сөреден  қолын  созып
керекті болтты таңдап алады. Егер басқа болт керек болса, онда ол оны  басқа
сөреден алады. Алдын  ала  даярланған  стандартты  бөлшектер  жатқан  мұндай
сөрелер бұл кітапхана іспеттес.
      Программалаушы адам да  программа  құрғанда  осы  жоғарыда  айтылғанға
ұқсас әрекет  етеді.  Үлкен  программалардың  95  пайызы  шағын  ғана  бұрын
жасалып қойылған дайын стандартты бағыныңқы  программалардан  құрастырылады.
Бүкіл дүние жүзі бойынша жазылған көптеген мыңдаған  программалардың  ішінен
деректерді  пернетақтадан  ендіруді  немесе  деректерді   экранға   шығаруды
басқаратын бағыныңқы стандартты программаны пайдаланбайтын жағдай өте  сирек
кездеседі. Бір кодты бірнеще  рет  қайта-қайта  жазудың  керегі  не?  Ішінен
стандартты  блоктарды  алып,  ешқандай  өзгерістер  ендірмей-ақ  пайдалануға
болатын программалар кітапханасында файлдар бар.
      Мұндай кітапханалар жылдан жылға сұранысқа  ие,  әрі  ірілене  түсуде.
Сондықтан  да  әр  жыл  сайын  программалаушылардың  еңбек  өнімділігі  арта
түсуде.
      Он бес жылдан  астам  уақыт  бұрын  компьютерлік  программаның  орташа
өлшемі 40-50 Кбайтқа  жететін.  Ал  он  жыл  бұрын  ол  100  Кбайтқа  жетті.
Программалаушылар қазіргі  кезде  бірнеше  Мбайт  орын  алатын  программалар
жасауда. Егер олар  программалар  кітапханасын  пайдаланбайтын  болса,  онда
мұндай программаларды даярлауға жиырма жылдай уақыт жұмсалған болар еді.
      Қазіргі  кезде  стандартты,  коммерциялық  және   фирмалық   бағыныңқы
программалар бар. Стандартты программалар  кітапханалары  кеңінен  таралған.
Әрбір программалаушы  адам  оларды  басқа  компаниялар  арнайы  коммерциялық
программалар кітапханаларын жасаумен айналысып оларды басқа компаниялар  мен
жеке программалаушыларға сатумен айналасуда. Көптеген  компанияларда   жұмыс
істеген жылдары жиналған өздерінің фирмалық  программалар  кітапханасы  бар.
Әрбір фирма безендірілуі, стилі және  басқарылуы  әр  түрлі  өздерінің  жеке
программалар кітапханасын пайдалануда. Фирмалық  программалар  кітапханалары
таратылмайды және сатылмайды. Оларды бәсекелестерінен өте  мұқият  қорғайды.
Программаны жасаушы фирмалар үшін бұл өте бағалы дүние болып есептеледі.
      Хат жазғанда да адамдар оларды әр түрлі тілдерде жазады. Мысалы, қазақ
тілінде ,  ағылшын  тілінде  т.с.с.   Ағылшын  мен  қазақ  тілінде  жазылған
хаттардың сыртқы көрінісі тіптен бөлек болады.
      Программаларды да программалаушылар арнай тілдердің көмегімен  жазады,
оларды программалау тілдері  деп  те  атайды.  Әр  түрлі  тілдерде  жазылған
бірдей программалардың көрінісінің өзі де түрліше болатындығы табиғи нәрсе.
      Жүздеген программалау тілдері және олардың әрқайсының бірнеше  нұсқасы
бар. Программалаушы адам программаны  өзіне  ыңғайлы  тілде  жазады.  Барлық
жағдайда жарамды әмбебап программалау тілі жоқ.
      Бірақ барлық программалау  тілдерінің  бір  ортақ  қасиеті  бар.  Олар
програмалаушыларға түсінікті, бірақ процессорға  түсініксіз.  Процессор  тек
сандармен ғана жұмыс істей алады, сондықтан  тек  машиналық  кодта  жазылған
программаларды ғана түсінеді, сондықтан кез-келген тілде жазылған  программа
алдымен процессор тіліне аударылады,  яғни  машиналық  кодқа  айналады.  Бұл
аудару жұмысын арнайы аудармашы программа орындайды.
      Аудару ағылшынша трансляция ( translation  )  деп  аталады,  сондықтан
программаларды  машина  кодына  аудару  жұмысын   орындаушы   программаларды
трансляторлар деп атайды.
      Сондықтан  біздер  қандай   программалау   тілі   туралы   сөз   болып
отырғандығын білмей тұрып программаның көрінісінің қандай болатындығын  айта
алмаймыз. Оның есесіне кез-келген  програма  трансляциялаудан  кейін  машина
кодына  айналатынын  білеміз.  Компьютерге  орнатылған  барлық  программалар
машина кодына жазылған.  Егер  біз  осы  кодты  көру  тәсілін  тапсақ,  онда
процессордың немен жұмыс істеп жатқандығын көретін боламыз.


            2.3 Есепті компьютерде шығаруға даярлау технологиясы
                     2.3.1 Есепті компьютерде шығарудың
                              негізгі кезеңдері

      Есепті компьютерде шығару- біраз бөлігі компьютерсіз жүзеге асырылатын
мынадай негізгі кезеңдерден тұрады:
    1. Есептің қойылуы:
 ־ есеп туралы ақпараттарды жинау;
 ־ есептің шартын тұжырымдау;
 ־ есепті шығарудың ақтық мақсатын анықтау;
 ־ деректерді сипаттау ( олардың түрін, шамалардың ауқымын, құрлымын  т.с.с.
   )
    2. Есепті, моделдерді талдау және зерттеу:
 ־ есептің бар ұқсастарын талдау;
 ־ техникалық және программалық құралдарды талдау;
 ־ математикалық модельді жасақтау;
 ־ деректер құрлымын жасақтау.
    3. Алгоритмді жасақтау:
 ־ алгоритмді жобалау тәсілдерін таңдау;
 ־ алгоритмді жазу пішінін ( блок-схема, алгоритмдік тіл т.б. ) таңдау;
 ־ тестерді және тестілеу тәсілдерін таңдау;
 ־ алгоритмді жобалау.
    4. Программалау:
 ־ программалау тілін таңдау;
 ־ деректерді ұйымдастыру тәсілдерін айқындау;
 ־ алгоритмді таңдалынып алынған программалау тілінде жазу.
       5.  Тестілеу және жөндеу:
 ־ синтаксистік жөндеу;
 ־ семантикалық және логикалық құрлымын жөндеу;
 ־ тестілік есептеулер және тестілеу нәтижелерін талдау;
 ־ программаны жетілдіру.
      6.  Есептің шешілу нәтижесін талдау:
      Қажет  болатын  болса   2-5   кезеңдерді   қайтадан   орындай   отырып
математикалық модельді айқындай түсу.
    7. Программаны даярлау:
 ־ нақтылы есепті шығару үшін программаны жетілдіру;
 ־ есепті шешуге, математикалық модельге, алгоритмге, программаға,  тестілер
   жиынына, программаны пайдалану үшін құжаттар жасау.


                         2.4 Математикалық модельдер


      Зерттелетін  объект  немесе  процесс  олардың   сандық   параметрлерін
байланыстыратын формула түрінде берілетін  жағдайлар  жиі  кездеседі.  Бұған
мына төмендегі формулаларды жатқызуға болады:
 ־ дененің геометриялық параметрлерін сипаттайтын формулалар;
 ־ физикалық процестерді сипаттайтын формулалар;
 ־ химиялық формулалар;
 ־ тауардың бағасын есептеп шығаруға арналған тұрмыстық формулалар т.с.с.
      Математикалық модель деп- объектіні  немесе  процесті  олардың  сандық
параметрлерімен   байланыстыратын   математикалық   формуламен    сипаттауды
айтамыз.
      Математикалық модельдерді жазуда әр түрлі ғылымдарда қабылданған түрлі
таңбалау жүйелері пайдаланылады.
      Математикалық  модельді  жасақтау   көптеген   есептерді   компьютерде
шығаруда маңызды рөл атқарады.
      Математикалық  модель  адамның  шығармашылық  жұмысының  өнімі   болып
табылады. Компьютер ойша жасалған модельді жаңа  сапалық  деңгейде  таңбалық
пішінге аударады.
      Математикалық модельдің  мысалы  ретінде  дененің  түзу  сызықты  орын
алмастыру формуласын алуға болады:
         [pic]
       мұндағы,  х-  ағымдағы  координата,  х0-  бастапқы  координата,  vxt-
бастапқы жылдамдықтың  х осіне проекциясы, aхt- үдеудің х осіне  проекциясы,
t-  уақыт.  Құбылысты   сипаттау   үшін   оның   ең   маңызды   қасиеттерін,
заңдылықтарын, ішкі байланыстарын оның  кейбір  жеке   сипаттамаларын  бөліп
көрсетіп, маңызды  еместерін  ескермеуге  болады.  Құбылыстың  метематикалық
моделін жасақтауда осы айтылғандарды ескеру қажет.
      Метематикалық  модельді  ең  ұтымды  түрде  есептеу  эксперименті  деп
аталатын алгориттмдік модель түрінде компьютерде жүзеге асыруға болады.
      Әрине,  есептеу  экспериментінің  нәтижесі,  егер  модельде  шындықтың
маңызды жақтары ескерілмеген болса шындыққа сәйкес келмеуі де мүмкін.
           Сонымен, есепті шешу үшін метематикалық моделін жасақтауда модель
құра отырып, мыналарды ескеруіміз керек:
         • математикалық  модель  құруда  негізге  алынатын  болжамды  бөліп
           көрсету;
         •  алғашқы  деректер  және  нәтижелер  деп  неніесептеу  керектігін
           анықтау;
         • нәтижелерді  алғашқы  деректермен  байланыстыратын  метематикалық
           қатысты жазу.
      Математикалық модельді құруда алғашқы деректер  арқылы  іздеп  отырған
шаманы өрнектейтін формуланы  табу  барлық  уақытта  мүмкін  бола  бермейді.
Мұндай жағдайда белгілі бір немесе басқа  дәрежелі  дәлдікпен  жауап  беруге
мүмкіндік беретін математикалық әдістер пайдаланады.
      Ғылыми  есептерді  шығарғанда  мүмкіндігінше  шындыққа  жақын  келетін
математикалық  модель  құру  керек  болады.  Мұндай   модель   бойынша   дәл
есептеулер емес жуықтап есептеулер жасалады, бірақ  осының  арқасында  басқа
жолдармен  алуға  болмайтын  деректерді  алуға  болады.  Есеп  математикалық
модельге  келтірілгеннен  кейін  оны  шығарудың  алгоритмін  құруға  болады.
Алгоритмнің дайын болуының белгілі бір кезеңінде программалау басталады.
      Есепті компьютерде шығаруға даярлауды 4-суреттегідей  сұлбамен  беруге
болады.  Өмірде күрделі есептерді шығаруда үлкен ұжымдар жұмыс істейді.
      Есептің бірінші формальды түсінігін  сол  есеп  пайда  болған  саланың
маманы даярлайды. Математикалық  модельді  басқа  адамдар  жасай  алады,  ал
ондағы пайдаланылатын алгоритмдерді үшінші бір адамдар жасайды.  Ең  соңында
программалауды тағы бір мамандар тобы іс жүзіне асыра алады. Осылайша,  есеп
үлкен  ұжымның  бірлескен  еңбегінің  арқасында  шығарылатын  жағдайлар  жиі
кездеседі.
      [pic]
             Сурет 4 Есепті компьютерде шығаруға даярлау сұлбасы


                2.5 Программаны жасақтаудың негізгі кезеңдері

      Программаны жасақтаудың процесін мынадай формуламен өрнектеуге болады:
      Программаны жасақтау→даярлау+тексеру және жөндеу
      Жаңадан ғана жасалған программада қателіктің  болуы-бұл  қалыпты  және
заңды құбылыс. Іс-жүзінде нақты және жеткілікті дәрежеде күрделі  програманы
қателіксіз құру мүмкін емес.
      Программаны компьютердің қабылдауына және оның нәтижесін беруіне қарап
оны дұрыс  құрылған  деген  қорытынды  жасауға  болмайды.  Өйткені  берілген
жағдайда дұрыс болмаса да қандай да бір нәтиже алуға қолымыз  жетті.  Осының
өзінде программада көптеген логикалық  қателіктердің  болуы  мүмкін.  Кеткен
қателіктерді анықтау үшін программаны  компьютерге  ендіріп,  іске  қосқанға
дейін былай тексереміз.
      Программа мәтінін «қолмен» қарап шығу, тексеру және  айналдыру  арқылы
тексеруге болады.
      Программа  мәтінін  қарап  шығу.  Программа  мәтінін   жазуда   кеткен
қателіктерді және программаның алгоритмнен  алшақтығын  анықтау  үшін  қарап
шығады. Атап айтқанда итерация санын беуші  операторлардың  дұрыстығына  көз
жеткізу үшін барлық  циклдердің  ұйымдастырылуын  қарап  шығу  өте  маңызды.
Шартты   операторлардағы   шарттарды,   бағыныңқы   программаларға   қатынас
жасаудағы аргументтерді тексеріп шығу пайдалы.
      Программаны  тексеру.  Программалаушы  программаны  тексергенде   оның
мәтіні  бойынша  программа  анықтайтын  есептелу   процесін   ойша   қалпына
келтіруге тырысады, осыдан кейін оны талап етілетін процеспен салыстырады.
      Тексеру кезінде программаның не істейтіндігін  ұмыту  және  ол  туралы
тексеру барысында білу керек. Тек  программаны  тексеру  аяқталғаннан  кейін
ғана оның не істейтіндігін еске түсіруге және  программаның  нақты  әрекетін
талап етілетін әрекеттермен салыстыруға болады.
      Программаны  айналдыру.  Айналдырудың  мәні  программаның  компьютерде
орындалуын программалаушының ойша орындауы болып табылады.
      Айналдыруды орындау үшін кейбір алғашқы деректерді беріп және  олармен
қажетті есептеулерді жүргізу қажет.
      Айналдыру- бұл еңбекті көп талап ететін қиын  процесс,  сондықтан  оны
тек программаның логикалық күрделі бөліктеріне қолданған жөн.
      Алғашқы  деректерді  программаны   айналдыру   кезінде   программа-ның
зерттелетін көптеген тармақтары қамтылатындай етіп таңдап алу керек.


                    2.6 Программаны жөндеу және тестілеу


         Программаны жөндеу  (debugging-  жөндеу  ағылшын  сөзі  сөзбе-  сөз
аударғанда қоңыздарды аулау  деген  мағына  береді.)  дегеніміз  программаны
компьютерден өткізудің нәтижесі бойынша ондағы қателіктерді іздеу  және  жою
процесі.
      Тестілеу (test ағылшын  сөзі  сынау  деген  мағына  береді)  дегеніміз
программаның немесе оның жеке бөліктерінің дұрыс жұмыс істейтіндігін  сынау,
 тексеру.
      Жөндеу және тестілеу бұлар бірінен бірі айқын ажыратылған және біріне-
бірі ұқсамайтын екі кезең:
 ־  жөндеу  кезінде  синтаксистік   қателіктердің   және   кодтаудың   айқын
   қателіктерін төңіректеу және жою орындалады.
 ־ тестілеу процесі кезінде айқын қателіктері жоқ программаның  жұмыс  істеу
   қабілеттілігі тексеріледі.
          Тестілеу  қателіктің  бар  екендігін   тағайындайды,   ал   жөндеу
программаның дұрыс жұмыс істемеу себептерін анықтайды.
           Қазіргі  заманғы  программалауды  жөндеу  жұмысы   жөндеуші   деп
аталатын арнайы программалық құралды  пайдалану  жолымен  жүзеге  асырылады.
Бұл құралдар программаның ішкі жұмысын зерттеуге мүмкіндік береді.
          Жөндеу программасы әдетте мына төмендегідей мүмкіндіктер береді:
 ־ әрбір командадан соң, тоқтай отырып, программаны қадамдап орындау;
 ־ кез-келген айнымалының ағымдағы мәнін  қарау немесе кез-келген  өрнектің,
   оның ішінде стандартты функцияларды пайдаланып мәнін  табу  қажеттілігіне
   қарай айнымалының жаңа мәнін пайдаланып орындау;
 ־ программада «тексеру нұктелерін» орнату, яғни аралық нәтижелерді  бағалау
   үшін программа уақытша өз жұмысын тоқтататын нүктелерді тағайындау т.б.
         Программаны жөндеуде мыналарды есте сақтау маңызды;
 ־ жөндеу процесінің басында қарапайым тестілік деректерді пайдалану;
 ־ пайда болатын қиындықтарды айқын  ажыратып  және  қатаң  түрде  кезегімен
   жою;
 ־ қателіктің есебі компьютерде деп есептемеу керек.
       Тест дегеніміз-алғашқы деректердің кейбір жиыны және  осы  деректерге
сәйкес   келетін   программа   жұмысы   кезінде   алынуға   тиісіті   барлық
нәтижелерінің дәл сипаттамасы.
      Программа қаншалықты өте мұқият жөнделсе де оның жұмысқа  жарамдылығын
тағайындаудың  шешуші   кезеңі   программаның   тестер   жүйесінде   тікелей
орындалуын тексеру болып табылады.
      Егер программа таңдалынып алынған тестілік деректер жүйесінен  өткенде
барлық жағдайда дұрыс  нәтижелер  беретін  болса,  онда  программаны  шартты
түрде дұрыс деп есептеуге болады.
      Тестілеу тәсілін жүзеге  асыру  үшін  тестердің  эталондық  нәтижелері
алдын-ала даярланған немесе белгілі болуы тиіс.
      Эталондық  нәтижелерді  программаның  компьютерде  орындалу  нәтижесін
алғаннан кейін емес, керісінше алғанға дейін есептеп шығарып қою керек.
      Тестілік деректер қателіктердің пайда болуының барлық  мүмкін  болатын
шарттарын тексеруді қамтамасыз ететін болуы тиіс, атап айтқанда:
 ־ алгоритмнің әрбір тармағының сыннан өтуі;
 ־  кезектегі  тестіден  өткізу   алдыңғы   өткізудегі   тексерілмегендердің
   тексерілуі;
 ־ программаның  жалпы  жұмыс  істейтіндігін  тексеру  үшін  бірінші  тестің
   мүмкіндігінше қарапайым болуы;
 ־ есептеу көлемін  қысқарту  үшін  тестідегі  арифметикалық  операциялардың
   шегіне дейін ықшамдалуы;
 ־  тізбектер  элементі  санының,  итерациялық   есептеулер   үшін   алынған
   дәлдіктің, тестілік  мысалдар  цикліндегі  интерация  санының  есептеулер
   көлемін қысқарту тұрғысынан берілуі;
 ־ есептеулерді азайтудың тексеру сенімділігін төмендетпеуі;
 ־ тестілік деректер  жиынын  кездейсоқ  таңдау  күткен  нәтижелерді  қолмен
   орындау тәсілімен анықтауда қиындықтарға алып келетіндіктен және көптеген
   жағдайлар  тексерілмей   қалатындықтан   тестілеудің   белгілі   мақсатқа
   бағытталған және жүйеленген болуы;
 ־ тестілік деректерді күрделендіруде түсудің біртіндеп жүргізілуі.


                     2.6.1 Тестілеу процесінің кезеңдері


        Тестілеу процесін үш кезеңге бөлуге болады.
      1.Қалыпты жағдайда  тексеру.  Программалардың  жұмыс  істеуінің  нақты
жағдайына тән алғашқы деректер негізінде тестілеу болжанады.
      2.Экстремальды жағдайда тексеру. Бұл жерде тестілік деректер дегеніміз
алғашқы деректер жиынының шекаралық мәндері. Бұл жиын программа дұрыс  жұмыс
 істеуге тиісті алғашқы  деректерден  тұрады.  Өте  кіші  немесе  өте  үлкен
сандар және деректердің болмауы мұндай деректердің  типтік  мысалдары  болып
табылады.
      Барлық программалар қандайда  бір  шектеулі  алғашқы  деректер  жиынын
өңдеуде  есептеліп  жасақталатындығы  белгілі.  Сондықтан   мына   төмендегі
сұрақтарға жауап алу маңызды:
1. Айнымалының теріс және нолдік  мәндерін  өңдеуге  арналмаған  программаға
   қандай да бір кеткен қателіктің себептерінен  дәл  сол  мәндерді  өңдеуге
   тура келсе не болар еді?
2. Егер массив элементтері оны хабарлауда  көрсетілген  саннан  асып  кетсе,
   онда массивтермен жұмыс істеп жатқан программа өзін қалай ұстар еді?
3. Егер өңделіп жатқан сан өте кіші немесе өте үлкен болса,  онда  не  болар
   еді?
       Программа дұрыс емес  деректерді  дұрыс  деректер  ретінде  қабылдап,
дұрыс нәтижеге ұқсас, бірақ дұрыс емес нәтиже  беретін  жағдайлар  ең  жаман
жағдайлар болып есептеледі.
          Программа өзі дұрыс өңдей алмайтын кез келген  деректерді  теріске
шығаратын болу тиіс.


                  2.7 Программалауда кездесетін қателіктер


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






                  2.7.1 Транслятор таба алмайтын қателіктер


      Программада пайдаланылатын операторлар дұрыс  жазылғанымен  транслятор
таба алмайтын көптеген қателіктер болады.
      Осындай қателіктердің мысалдарын келтірейік.
         Логикалық қателіктер:
 ־ кейбір шартты  тексергенмен  кейін  алгоритмнің  қай  тармағын  орындауға
   өтуді дұрыс көрсетпеу;
 ־ мүмкін болатын шарттарды толық есептемеу;
 ־ программада алгоритм блоктарын орындау  үшін  қажет  болатын  бір  немесе
   бірнеше шамаларды қалдырып кету.
       Циклдерде кездесетін қателіктер:
 ־ циклдің басын дұрыс көрсетпеу;
 ־ циклдің аяқталу шарттарын дұрыс көрсетпеу;
 ־ итерация санын дұрыс көрсетпеу;
 ־ шексіз цикл.
      Ендіру-шығару қателіктері; деректермен жұмыс істеудегі қателіктер:
 ־ деректердің түрін дұрыс бермеу;
 ־ талап етілген аз немесе көп деректерді оқуды ұйымдастыру;
 ־ деректерді дұрыс түзетпеу;
       Айнымалыларды пайдалануда кететін қателіктер:
 ־ айнымалыларды олардың бастапқы мәндерін көрсетпей пайдалану;
 ־ бір айнымалыны басқа айнымалының орнына қате көрсету.
      Массивтермен жұмыс істеуде кететін қателіктер:
 ־ алдын ала нолге келтірілмеген массивтер;
 ־ дұрыс сипатталмаған массивтер;
 ־ индекстерінің берілу реттілігі дұрыс емес массивтер.
       Арифметикалық операцияларды орындауда кететін қателіктер:
 ־ айнымалының түрін дұрыс   көрсетпеу  (мысалы,  нақты  айнымалының  орнына
   бүтін айнымалыны көрсету);
 ־ әрекеттер ретін дұрыс анықтамау;
 ־ нөлге бөлу;
 ־ теріс санның квадрат түбірін табу;
 ־ санның мәнді разрядын жоғалту.
   Осы қателіктердің бәрін тестілеудің көмегімен табуға болады.


                           2.8 Программалау жүйесі


      Программалау  жүйесі   компьютердің   программалық   қамсыздандыруының
құрамына жатады және ол программаларды жасау және оларды  жөндеу  жұмыстарын
автоматтандыруды  қамтамасыз  ететін  құралдардың  жиыны   болып   табылады.
Программалау жүйесінің құрамы 5-суретте бейнеленген.
      Программалау процесі үш кезеңге бөлінеді:
      ־ есепті шешудің алгоритмін құру;
      ־ программа құру;
      ־ жасалған программаны тексеру.
      Екінші кезеңдегі, яғни программа қрудағы қиындық  адамның  тек  машина
тілінде ғана программа жасауына байланысты болады. Компьютерді  пайдаланудың
алғашқы жылдарында әрқайсының  әр  түрлі  компьютерлердің  пайда  болуы  бұл
қиындықты тереңдетіп жібереді. Сондықтан нәтижесінде  бір компьютерге  арнап
жасаған программаны басқа компьютерге пайдалануға болмайтын болды.  Бұл  бір
алгоритмнің өзін әр түрлі компьютерлерде орындау  үшін  әрқайсына  жеке-жеке
программа құруға мәжбүр етіпижұмысты қиындатып жіберді.
      Әрбір  компьютер  үшін  жасалған  программаның   дұрыс   және   ұтымды
жасалғандығын тексеру қажет. Қателік кеткендігі және басқа  да  кемістіктері
бар  екендігі  анықталса,  онда  ол  программаға  түзетулер  мен  өзгерістер
ендіріледі. Программалаудың осы аталған  кезеңдерінің  арнайы  ерекшеліктері
және қиыншылықтары бар.
      [pic]
                    Сурет 5 Программалау жүйесінің құрамы
      Программалауды автоматттандырудың ең көп тараған  негізгі  тәсілдеріне
мыналар жатады:
 ־ қолмен программалауды жеке жұмыстарын автоматтандыру тәсілдері;
 ־ бағыныңқы программалар кітапханасын құру;
 ־ программалаудың әр түрлі тілдерін пайдалану.
      Қолмен  программалаудың  жеке  жұмыстарын  автоматтандыру   тәсілдері.
Қолмен программалаудағы  жұмыстарды  автоматтандыруда  жұмыс  программаларын
түзетуді негізгі назарда ұстау керек.
      Қазіргі кезде программаның дұрыстығын тексеру үшін жоғарыда  айтқандай
тест тәсілі кеңінен қолданылады. Тест тәсілі бойынша  жауаптарды  алдын  ала
белгілі  есептердің  бірнеше  нұсқасы   компьютерде   құрылған   программаны
пайдаланып шығарылады.  Алынған  нәтижелер  алдын  ала  белгілі  жауаптармен
салыстырылады. Ол жауаптар біріне – бірі сәйкес  келмесе,  онда  программада
қателіка кеткен болып шығады.
      Программаны жөндеу процесі  бірнеше  әмбебеп  жөндеуші  программаларды
жасау  және  компьютердің  өзін  пайдалану  арқылы  автоматтандырылады.  Бұл
программалар командалардың қалай орындалып  жатқандығы  туралы  информацияны
баспаға бере  отырып  жөнделіп  жатқан  программаның  кез  келген  бөлігінің
жұмысын қадағалап бақылауға мүмкіндік береді.  Программаны  автоматты  түрде
жөндеуде программалаушыны қызықтыратын барлық информация  құжатқа  жазылады,
соның арқасында ол компьютерді  пайдаланбай-ақ  есептің  компьютерде  шншілу
процесінің дұрыстығын бақылай алады.


                          2.9 Программалау тілдері


      Программаларды  жасауда  қазіргі  заманғы  компьютерлерде   әр   түрлі
деңгейдегі программалау тілдері пайдаланылады.
      Жалпы жағдайда тіл деп информацияның  жазылыуын  және  оның  түрленуін
белгілі ережелер бойынша формальдыетіп беруші құралдарды түсінеміз.
      Тілдің құрамында информацияның негізгі элементтерін құрудың  құралдары
және  осы  элементтерден  әр  түрлі  мазмұнды  құрылымдар  құруға   арналған
ережелер жүйесі бар.
      Программалау тілі деп деректерді жазуға және оларды  белгілі  ережелер
бойынша өңдеуге арналған адам  мен  компьютерді   байланыстыратын  формальды
тілді айтамыз.
      Програмалаудың әр түрлі тілдерін пайдалану.
      Әр  түрлі  белгілер  бойынша   жіктеуге   болатын   бірнеше   жүздеген
программалау тілдері бар.  Ең  жалпысы  тілдің  машинаға  жақындық  дәрежесі
бойынша жіктеу болып табылады. Осы белгісі бойынша программалау тілдері  екі
үлкен топқа бөлінеді:
      ־ машинаға тәуелді тілдер;
      ־ машинаға тәуелсіз тілдер;
      Машинаға тәуелді тілдер өз кезегінде былай бөлінеді:
      ־ машина тілі;
      ־ машинаға бағдарланған тілдер;
        Машинаға  бағдарланған  тілдер  кейде  автокодтар  деп  те  аталады.
Машинаға бағдарланған тілдердің екі деңгейі бар:
      ־ символдық кодтау тілдері, басқаша айтқанда мнемокодтар;
      ־ макротілдер.
           Макротілдер машина тілінің командаларына  тікелей  ұқсастығы  жоқ
макрокомандаларды  пайдалануға  рұхсат  етеді.  Макрокомандаларды  пайдалану
программаны қысқартады әрі тілді жасау құралдарының  жиынын  кеңейте  отырып
программалаушының еңбегінің өнімділігін арттырады.
            Машинаға тәуелсіз  тілдер  программаларды  бөлшектеу  дәрежесіне
қарай екі топқа бөлінеді:
      ־ процедулалы- бағдарланған тілдер;
      ־ проблемалы – бағдарланған тілдер.
      Процедулалы – бағдарланған тілдер есепті  шешу  алгоритмін  сипаттауға
арналған, сондықтан да  оларды  кейде  алгоритмдік  тілдер  деп  те  атайды.
Алгоритмдік тіл деген ұғым программалау тілі деген ұғыммен  сәйкес  елмейді.
Егер  алгоритмдік  тілде  жазылған  алгоритмдік  жазу  компьютерге  ендіруге
тікелей жарамды  және  дайын  жұмысшы  программаға  түрленетін  болса,  онда
мұндай  алгоритмдік тіл программалау тілі де бола алады. Кейбір  алгоритмдік
тілдер тек оларға кейбір құралдарды қосқаннан кейін ғана  программалау  тілі
болады.
      Проблемалы  –  бағдарланған  тілдер  есептерді  сипаттау  үшін  қызмет
атқарады.
      Бірақ  алгоритмдік  тілдер   өздігінен   барлық   проблеманы,   тіптен
программаны да шеше алмайды. Мұндай  тілде  жазылған  программа  компьютерде
тікелей орындалмайды, ол орындалу үшін алдын  ала  сол  компьютердің  машина
тіліне аудару жеткілікті қиын мәселе болып табылады.
      Алгоритмдік  тілден   программаны   машина   тіліне   аудару   жұмысын
компьютердің әмбебаптығын пайдаланып, оның өзіне жүктеуге болады.  Бұл  үшін
әрбір алгоритмдік тілден машина тіліне  формальды  аударуға  яғни  аударудың
ережесін алгоритм түрінде тұжырымдауға  мүмкіндік  беретіндей  болуы  керек.
Егер, осы алгоритмді бір рет  машиналық  программа  түріне  келтіріп  алсақ,
онда  одан  кейін  осы  программаның  көмегімен  компьютердің  өзі  берілген
алгоритмдік тілде  жазылған  кез  келген  программаны  нақтылы  компьютердің
машина  тіліне  аударып  бере  алады.  Мұндай   арнайы   аудармашы-программа
жоғарыда айтқанымыздай транслятор деп аталады.



               3 Турбо Си программалау тілі туралы мағлұматтар
               3.1 Си тілінің негізі элементтері. Тіл алфавиті

      Тіл алфавиті деп, осы тілдегі жазылатын  программалық  текстерді  құру
үшін  пайдаланатын символдардың жиынтығын айтады. Кез - келген  программалық
     тіл  символдардан,  сөздерден,  сөз  тізбектері  және  сөйлемдерден   -
операторлардан   тұрады.Сөздер  сиволдардан  құралады,  ал  операторлар  сөз
тіркестерінен тұрады:
1.  26   латын   алфавитінің   әріптерінен,   олармен   қызметші   сөздермен
иденфикаторлар  жазылады. Идентификаторлар - программада  кездесетін  барлық
тұрақтыларды,  айнымалыларды,  функциялармен  процедураларды  белгілеу  үшін
қолданылатын әріптер мен сандар және  сызықшадан  тұратын  қызметші  сөздер.
Идентификаторларға  бұлардан  басқа  символдарды   беруге   болмайды,   олар
міндетті түрде әріптен басталуы  керек және оларға  тілдегі  басқа  қызметші
   сөздердің  атын  қоюға  болмайды.  Идентификаорларды  бас   әріппен   де,
кішкентай әріптермен де жаза беруге болады.
2.  Сандарды  белгілейтін  араб  цифраларынан:  0,1,2,3,4,5,6,7,8,9.  Сандар
бүтін және нақты болып  екіге  бөлінеді.  Нақты  сандардың  бүтін  бөлігімен
бөлшегін нүкте арқылы бөліп жазады  -9.7, 6.25, .41,-8.178.
      Ал өте үлкен  немесе  өте  кіші  шамалар  экспонициал  сандар  түрінде
жазылады- 1.801Е + 5(1.801*105),      5.74E-4(5.74*10-4);
3.    Ұлттық   алфавит   әріптерінен,   ұлттық   әріптер   түсініктеме   мен
комментарийлар  жазу  үшін   немесе   символдық  айнымалыларда   қолданылады
(ұлттық алфавит әріптері клавиатураның  жоғарғы   жағындағы  цифрлар  орнына
арнаулы драйверлер қосылғанда ғана  жұмыс істейді);
4.  Арнаулы символдардан:  +,-,:,',<,>,/,=,.,(,),,,$,%,& т.б.
      Программалар белгілі бір мәселені, есепті шешуге арналған. Есеп шығару
барысында  компьютерге  бастапқы   мәліметтер   енгізіледі,   оларды   қалай
өңделетіндігі  көрсетіледі  және  нәтиже  қандай  түрде,  қандай   құрылғыға
шығарылатыны айтылады.
      Си тілінде программа жеке - жеке жолдардан тұрады. Оларды теру, түзету
арнайы мәтіндік редакторлар атқарылады. Программа алдындағы азат жол  немесе
бос орын саны өз қалауымызша алынады. Бір  қатарда  бірнеше  команда  немесе
оператор орналаса  алады,  олар  бір  -  бірімен  нүктелі  үтір  (;)  арқылы
ажыратылып жазылады, бірақ бір жолда бір ғана  оператор  тұрғаны  дұрыс,  ол
түзету жеңіл, әрі оқуға ыңғайлы.
      Си тілінде программа үш бөліктен тұрады: тақырып, сипаттау бөлімі және
операторлар бөлімі.
      Кез келген программаның алғашқы жолы PROGRAM сөзінен  басталатын  оның
тақырыбынан тұрады. Одан кейін  программаның  ішкі  объектілерінің  сипаттау
бөлімі жазылады. Бұл бөлім программадағы  айнымалылар,  тұрақтылар   тәрізді
объектілердің  жалпы  қасиеттерін  алдын  ала  анықтап  алуға   көмектеседі.
Сипаттау   бөлімі   бірнеші   бөліктерден   тұрады,    бірақ    программаның
күрделілігіне байланысты көбінесе ол бір  немесе  екі  ғана  бөліктен  тұруы
мүмкін.
      Программаның соңғы және негізгі  бөлімі  операторлар  бөлімі  –  болып
табылады. Орындалатын іс - әрекеттер, командалар осы бөлімде орналасады.
      Операторлар бөлімінде командалар ретімен орналасады.  Олардың  кейбірі
шартқа байланысты атқарылса, ал  кейбір  қайталанатын  цикл  немесе  қосымша
программа түрінде  орындалады.  Операторлар  бөлімінде  орнатылатын  негізгі
әрекеттерді қарастырайық.
      Деректер - сан мәндері мен мәтін түріндегі сөз  тіркесін  мән  ретінде
қабылдай алатын тұрақтылар, айнымалылар т.б. осы тәрізді  құрылымдар  немесе
солардың адрестері.
      Дерек енгізу -  бастапқы  деректерді  пернетақтадан,  дискіден  немесе
еңгізу - шығару порттарынан еңгізу арқылы жүзеге асады.
      Операциялар  немесе  амалдар  -  берілген  және  есептелген  мәндердің
меншіктеу, соларды өңдеу, салыстыру операцияларын орындайды.
      Шартты түрде атқарьшу  белгілі  бір  көрсетілген  шарттың  орындалуына
байланысты, командалар жиыны атқарылады, әйтпесе олар аттап  өтіледі  немесе
басқа командалар жиыны орындалады.
      Цикл - белгілі бір шарттар орындалған жағдайда көрсетілген  командалар
жиынын  бірнеше  рет  қайталанып  атқарылады.  Қайталау  саны  бүтін  санмен
беріледі.
      Көмекші программа - алдын ала қандай  да  бір  атаумен  атымен  атымен
аталған командалар тобы. Олар программаның кез келген  жерінен  оның  атауын
көрсету арқылы шақырылып атқарыла береді.
      Түсініктеме - программа жолдары соңында немесе  оның  түйінді  сөздері
арасында қазақша (орысша) түсінік беретін пішінді  жақшаға  алынып  жазылған
сөз тіркесітері. Олар программа операторларының  орындалуына  ешқандай  әсер
етпейді.
                 3.2 Си тіліндегі программа дайындау жолдары
                          3.2.1 Программа құрылымы


      Си тілінің программасы блоктардан құрылады. Қандай да бір блок  ішінде
басқа да кішігірім блоктар орналасуы мүмкін. Блоктар  екі  бөлімнен  тұрады,
олардың  алғашқысы  -  мәліметтерді  сипаттау  бөлімі,  ал  екіншісі.-   сол
мәліметтерді  пайдаланып,  әр  түрлі  іс   -   әрекеттерді   (операцияларды,
амалдарды) атқару бөлімі.
      Мәліметтерді сипаттау бөлімінің болуы міндетті емес, ал екінші негізгі
бөлімінің болуы міндетті. Басқа блокқа кірмейтін  блок  негізгі  (глобальді)
блок болып саналады. Ал блок ішіндегі блок - жергілікті (локальді) блок  деп
аталады.
      Негізгі блок - негізгі программа блогы, сондықтан ол  басқа  блоктарға
кірмеуі тиіс. Жергілікті блоктарға процедуралар мен функциялар кіреді,  олар
кейбір программаларда болмауы да мүмкін.
      Программалардың негізг объектілері болып саналатын  айнымалы,  тұрақты
және oлapдың типтері орналасқан блогына байланысты басты  немесе  жергілікті
деп аталады. Программа объектілерінің де жұмыс істеу, ықпал ету  аймағы  сол
өздері орналасқан  блокпен  шектеледі.  Блоктық  құрылым  программа  мәтінін
тиянақты түрде қатесіз құрастыруға мүмкіндік береді.
      Турбо Си программасының тақырыбын (атауын) жазбай  кетуге  де  болады,
бірақ жалпы Си тілінің стандарты бойынша программада тақырып болуы қажет.
      Си  тіліндегі  программалар  бірнеше  бір-бірімен  байланысып  тұратын
бөлімдерден тұрады. Мысалы: бір программа келесі бөлімдерден тұруы мүмкін:
            1.    программа тақырыбы;
            2.    айнымалылар мен типтер бөлімі;
            3.    таңбалар (белгі) бөлімі;
            4.    тұрақтылар бөлімі;
            5.    процедуралар мен функциялар бөлімі;
            6.    программа денесі бөлімі;
      Программа  тақырыбы  қызметші  сөздерден,  латын  әріптерінен  тұратын
программа атынан тұрады. Программа тақырыбынан кейін әтірлі нүкте  қойылады.
Түсініктемелер жәй  жақша  (  *  *)   немесе  фигуралық  жақша  {  }  ішінде
жазылады.

-----------------------
                         Алгоритмді бейнелеу әдісі.

                               Графикалық әдіс

                  Блок - схема

                           Ағаш тәріздес бейнелеу

                                 Жасанды тіл

                           Табиғи тіл - Адам тілі

                                    Басы

                              Енгізу н\е шығару

                             Деректерді   өңдеу





                                    Шарт



                                    басы

                                   енгізу

меншіктеу

шығару

                                    соңы

                                Алғашқы есеп

                             Математикалық пішін

                            Математикалық модель

                                  Алгоритм

                                  Программа

                     Программалау жүйесі

                            Программалау тілдері

                   Программалық тңілдерінің трансляторлары

                                  Ассемблер

                                 Компилятор

                                Интерпретатор

                     Бағыныңқы программалар кітапханасы

                                 Құрастырушы

                                  Жөндеуші





























































Пәндер