Ішкі бағдарлама

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

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

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

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

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

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

** Параметрдің екі түрі болады: **
**формальды *
**шын мәніндегі параметрлер. *

Шын мәніндегі параметр деп процедураны шақырар кездегі негізгі бағдарламадағы параметрлерді айтамыз. Ал формальды параметрлер ішкі бағдарламаның атауынан кейін көрсетіледі. 

Формальды параметрлер тізімінде айнымалылар аталып, олардың типтері көрсетіледі. 	

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

Параметр - нәтижелер тізімдерінің алдында var сөзі жазылады. (Паскаль).

### Процедуралар

Процедура – белгілі ретпен іске асырылатын іс-әрекеттер жиыны, жалпы бағдарламаның бір бөлігі. 

***Процедуралардың жалпы түрі:***

***Паскаль тіліндегі мысал: бір санның факториалын табу. ***

```pascal
procedure fact (k : integer; var a : integer);
var x : integer;
begin
a:=1;
for x:=1 to k do
begin
a:=x*a;
end;
end;
```


*Мұндағы* ** k ** – формальды параметр-аргумент, яғни негізгі бағдарламадан келген сан. ** а ** – формальды параметр-нәтиже, яғни негізгі бағдарламадан келген санның факториалы.

Паскаль тіліндегі процедураны негізгі бағдарламаның командалар бөлігінен шақырылу командасын қарастырайық:

 ();

** Мысалы: fact(i,s); **

### Функциялар
Функция – басқа мәліметтер алу үшін анықталған мәліметтерге қолданылатын компьютердің іс-әрекеті. Функцияның ерекшелігі – оның орындалуы барысында бір ғана нәтиже шығады, ал кіру параметрлері бірнешеу болуы мүмкін. Нәтиже функция атауымен белгіленіп, негізгі бағдарламаға беріледі. 

** Функциялардың жалпы түрі: **

***Санның квадратын анықтайтын функцияның мысалдары:***
*** Бейсик: **
:FUNCTION SQR % (X AS INTEGER)
:SQR% = X*X
:END FUNCTION

*** Паскаль: **
:function SQR (x : integer) : integer;
:begin
:SQR:= x*x;
:end;

*** Си++: **
:int SQR (int x)
:{
:return x*x;
:};

Паскаль тіліндегі функцияны негізгі бағдарламаның командалар бөлігінен шақырылу командасын қарастырайық:
 ();

Мысалы: у:=SQR(x);

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

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

** Ассемблер тілінің басқа жоғары деңгейлі тілден айырмашылықтары: **
**ассемблер тілінің жеткізілуі мен машиналық командалардың арасындағы бірмәнді сәйкестік; *
**машиналардағы барлық объектілер мен командаларға қатынау; *
**бір тектес компьютерлердегі жұмыс. *

*Ассемблер тілін* қолданудың екі негізгі ерекшеліктері бар: жоғары өнімділігі мен машинаға қатынау. Көбіне программада барлық кодтың азғантай пайызы программаның орындалу уақытының көбірек пайызына жауап береді. Мысалы, программаның 10% оның орындалу уақытының 90%-на жауапты. Бұл программаның 10% оны ассемблер тіліне жазып алуды жүзеге асырады. Бұл процессті реттеу (tuning) деп аталады. Ассемблердегі программа көлемі бойынша соншалықты кіші және орындалу жылдамдығы бойынша соншалықты тез болуы мүмкін.

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

Ассемблер тілінде оператор құрылымы машиналық командаға сәйкес құрылымды білдіреді. Әр түрлі машиналар мен әр түрлі деңгейлердегі ассемблер тілі бір-бірімен ұқсас. Intel компьютерлеріндегі Microsoft MASM, SPARC процестеріне Sun ассемблерге мысал бола алады. 

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

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

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

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

## Жоғары деңгейлі бағдарламалау тілдері
### Фортран
IBM фирмасы жасап шығарған Фортран бағдарламалау тілі ең алғашқы және сәтті компилятор болып табылады. Профессор Дж. Букс пен американдық мамандардың бір тобы  бұл тілді алғаш  рет 1954 жылы жария етті. Толық түрінде FORmulae TRANslation – формулаларды түрлендіру. 

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

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

1958 жылы Фортран тілінің модификациясы – Фортран ІІ пайда болды. Араға бірнеше жыл салғаннан кейін 1962 жылы Фортран ІҮ, қазіргі кезде жиі қолданылатын тілдердің бірі, пайда болды. 1966 жылы Фортран тілінің екі жаңа стандарты шықты: Фортран және базисті Фортран (Basic FORTRAN). 

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

### Алгол
Алгол – 1960 жылы шығарылған компиляторланатын тіл. Негізінен, алгол тілі фортран бағдарламалау тілінің орнына қолданылу үшін жасалынған болатын, алайда оның құрылымы өте ауқымды болғандықтан, бұл бағдарламалау тілі кең тараған жоқ. 1968 жылы Алгол 68 версиясы пайда болды. Бұл версия өзінің мүмкіндері жағынан қазіргі кездегі көптеген бағдарламалау тілдерінен басым болып табылады, алайда сол заманда жетілдірілген компьютерлер болмауы салдарынан бұл тілге сәйкес тиімді компиляторлар жасап шығару мүмкін болған жоқ еді.  

### Бейсик
Бейсик тілі 1964 жылы Англияда шығарылған. Бұл тіл, негізінен, бағдарламалауды оқыту тілі болып табылады. Толық түрінде **''B**eginner`s **A**ll-purpose **S**ymbolic **I**nstruction **C**ode (BASIC) * – бастаушыларға арналған көп мақсатты символдық оқытушы код. 

Көп ұзамай бұл бағдарламалау тілінің үйренушілері және авторлары Бейсик тілінің Фортран тіліне ұқсас екенін аңғарады. Бұл тіл оңай қабылданғандықтан, Фортран тіліне қарағанда бұл тілдеағдарламалар жылдамырақ құрастырылатын. Сонымен қатар [[Бейсик тілі]] дербес компьютерлерде қолайлы болған. Осылайша Бейсик тілі әйгілі тілдердің біріне айналады. 

=== Си++===
Си бағдарламалау тілі Bell лабораториясында жасалған. Бұл тілді ассемблердің орнына қолдану үшін шығаруды жоспарлаған еді. Си – бұл жалпы тағайындаудың тілі, ол өзінің үнемділігімен, тиімділігімен және тасымалданғыштығымен ерекшеленеді. Аталған ерекшеліктер арқасында Си тілі арқылы бағдарлама өнімдерінің кез келген түрін жасауға болады. Си тілі құралдық тіл ретінде қолданғанда, жедел және тұтас бағдарламаларды құрастыруға болады. 

=== Ява===
Бұл тіл 90-жылдарда Sun компаниясымен Си++ негізінде шығарылған болатын. Бұл тіл Си++ тілінің жетілдірілген түрі болып табылады. Ол Бейсиктен кейін дүние жүзі әйгілі тілдердің ішінде екінші орында.

== Жүйелік бағдарламалау==
Паскаль тілін 1979 жылдары [[Швейцария]]да Никлоус Вирт ашқан. 

[[Паскаль тілі]] – IBM PC дербес компьютерлеріне арналған дәстүрлі алгоритмдік бағдарламалау тілі болып табылады. Бұл Паскаль тіліндегі бағдарлама қойылған мәселені шешуге әкелетін, арнайы ұйымдастырылған декректерді түрлендіру қадамдарының тізбегі екенін білдіреді. 

Кез келген басқа тілдер сияқты, Паскаль тілінің өзінің алфавиі, символдар жиыны, өзінің грамматикасы, операторларды жазу және бағдарламаларды безендіру ережелері болады. 

Орыс әріптері мен пернетақтаның кейбір басқа символдары Паскаль алфавитіне кірмейді, бірақ оларды жалқы тырнақшаларда және түсініктемелерде пайдалануға болады. Бағдарламаны компьютерде орындау.

*'Бағдарламаны орындау процесі екі бөліктен: **
#''Бағдарламаның мәтінін машинаның жадына Турбо Паскаль текстік редакторы арқылы енгізуден;''
#''Бағдарламаны орындау үшін іске қосудан тұрады. ''

[[Турбо Паскаль]] бағдарламалау ортасы бағдарламалар [[мәтін]]ін жасауға, [[редакция]]лауға, оларды [[компиляция]]лауға ([[компьютер]]ге түсінікті тілге аударуға), қателерді тауып алып, түзетуге, жөнделген бағдарламаны орындауға мүмкіндік береді. Бағдарламаны іске қосу үшін Ctrl + F9 басып немесе мәзір жолындағы  Run > Run  командасын орындау керек. 

== Объектіге бағытталған бағдарламалау==
80-жылдардың ортасында бағдарламалау негіздерінде жаңа бағыт – объектіге бағытталған бағдарламалау пайда бола бастады. Мұндай бағдарламалауға [[Delphi]] 7, [[Visual Basic]] және [[С++]] сияқты тілдері жатады. 

=== Visual Basic===
[[1991 жылы]] [[Microsoft корпорациясы]] [[компьютерлік әлем]]ге Visual Basiс бағдарламалау жүйесін ұсынады. 

'' [[Visual Basiс]] '' – оқиғалы-бейімделгіш бағдарламалауды ұстанатын (поддерживающий) алғашқы тілдердің бірі. Оқиғалы-бейімделгіш бағдарламалауда әрбір қадамды толықтай сипаттаудың орнына әр түрлі оқиғаларға, яғни пайдаланушының әрекеттеріне қалай жауап қайтару керек екенін (реагировать) көрсетсеңіз болғаны. 

Бұл бағдарламалау жүйесі арқылы бір ауқымды бағдарлама емес, [[Windows]]-тың пайдаланушы басқаратын, өзара байланысты [[микропрограмма]]лары (процедура) бар қосымшасы құрастырылады. ''Visual Basiс'' көмегімен осындай қосымшаларды жылдам құрастыруға болады, ол үшін міндетті түрде бұл тілді терең, профессионалды түрде меңгеру қажет емес.

Өңдеудің интеграцияланған ортасы.

''Visual Basiс-тің'' жұмыс ортасын өңдеудің интеграцияланған ортасы деп жиі атайды (''Integration Development Eniroment'' немесе қысқаша ''IDE''), себебі оның сан алуан функциялары бар: жобалау, редакциялау, компиляциялау және қателерді іздеп, түзету.

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

=== Си++===
Бұл бағдарламалау тілі 1980 жылы пайда болды. Оны құрастырған Бьяр Страуструп. Оның атауын ойлап тапқан Рик Масситти деген адам. Бұл Си атты бағдарламалау тілінің Си++ тіліне эволюциялық түрде көшуін білдіреді. Си++ - бұл Си тілінің объектігі бағытталған кеңейтілген түрі. 

**Си++ үшін базалық тіл ретінде Си-дің таңдалды, себебі ол: *'
**көпмақсатты, ықшамды және біршама төмен деңгейлі; *
**жүйелік бағдарламалаудың мақсаттарының көбісіне жауап береді; *
**UNIX бағдарламалау ортасында жарамды болып табылады. ''

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

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

## Дереккөздер


## Сыртқы сілтемелер
* Внутренняя программа  

Санат:Ақпараттану
Санат:Компьютер
Санат:Бағдарлама