СИ бағдарламалау тілінде жадыны басқару



Батыс Қазақстан инженерлік-технологиялық университеті

КУРСТЫҚ ЖҰМЫС

Тақырыбы:

СИ бағдарламалау тілінде жадыны басқару

Орындаған:
Тексерген:

Орал, 2012ж.

Мазмұны

Кіріспе ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... ... ... ... ... ... ... ... ... ...3
1 тарау. СС++ бағдарламалау тілі
1.2. СИ бағдарламалау тілінің мүмкіндіктері мен
кемшіліктері ... ... ... ... ... ... ..5
1.2. Си тіліндегі әдістер және
программа ... ... ... ... ... ... .. ... ... ... ... ... ... ... ... ... .8
2 тарау. СИ тіліндегі жадыны басқару
2.1. Кластар, объектілер және
жады ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..10
2.2. СИ тіліндегі жадыны
басқару ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
...15
Қорытынды ... ... ... ... ... ... .. ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... ... ... ... ... ... ... ..17
Пайдаланылған
әдебиеттер ... ... ... ... ... ... . ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... .19
Кіріспе

Тақырыптың өзектілігі: Си бағдарламалау тілі Bell лабораториясында
жасалған. Бұл тілді ассемблердің орнына қолдану үшін шығаруды жоспарлаған
еді. Си – бұл жалпы тағайындаудың тілі, ол өзінің үнемділігімен,
тиімділігімен және тасымалданғыштығымен ерекшеленеді. Аталған ерекшеліктер
арқасында Си тілі арқылы бағдарлама өнімдерінің кез келген түрін жасауға
болады. Си тілі құралдық тіл ретінде қолданғанда, жедел және тұтас
бағдарламаларды құрастыруға болады.
Қазіргі уақытта программалуда 3 концепция белгіленген:
объектілі бағытталған программалау; (ОБП)
унификацияланған модельдеу тілі (UML)
программалық қамтамаларды құру арнайы жабдықтары.
Объектілі бағытталған программалау (ОБП) негізінде программа тізбектей
орындалатын нұсқау ретінде емес, ұқсас қасиеттері және ұқсас орындайтын
қызметтері бар объектілердің жиынтығы ретінде қарастырылады.
Барлық объектілі бағытталған программалау тілдерінің ішінде ең кең
таралған С++ тілі. Осы бағытта соңғы пайда болған Java тілінің С++ тілімен
салыстырылғанда келесі кемшіліктері бар: көрсеткіштер, шаблондар, бірнеше
қайтара мұрагерлік Java тілінде қарастырылмаған. Барлық синтаксис жағынан
бұл тілдер ұқсас.
Қазіргі таңда Microsoft және Borland компаниялары құрған С++ тілінің
Microsoft Windows жүйесінде программалау ортасы көп тараған.
Объектілі бағытталған программалау үш тұжырымға негізделген: кластар,
мұрагерлік және полиморфизм.
Процедуралық тілдерде жазылған программалар негізінен инструкциялар
жиынтығы болып табылады. Бұл тілдердегі программалар функциялардан тұрады,
олар тізбектелген іс-әрекеттер тізімін орындайды.
Бірнеше функцияларды модульдерге біріктіруге болады, бірақ сонда да
процедуралық принцип сақталады.
Процедуралық тілдерде екі түрлі берілгендер типтері бар: жергілікті
(локальді) және кең ауқымды (глобальді). Жергілікті берілгендер тек
функциялардың ішінде және тек сол функцияларда ғана қолданылады, ал барлық
функцияларда қолдану керек болса кең ауқымды етіп жариялайды. Функциялар
мен берілгендер арасындағы күрделі байланыстар программаның құрылымын да
күрделендіреді.
Курстық жұмыстың мақсаты: СС++ бағдарламалау тілі және СС++ бағдарламалау
тіліндегі жадыны басқару туралы түсінік алу.
Курстық жұмыстың міндеттері: С++ тілінің пайда болу тарихы және
мүмкіндіктері мен ерекшеліктері және СС++ программалау тіліндегі жадыны
басқару ерекшеліктерімен таныстыру.
Курстық жұмыстың құрылымы: курстық жұмысы кіріспеден, екі тараудан және
қорытынды мен пайдаланылған әдебиеттер тізімінен тұрады.

1 тарау. СС++ бағдарламалау тілі
1.2. СИ бағдарламалау тілінің мүмкіндіктері мен кемшіліктері

Бұл бағдарламалау тілі 1980 жылы пайда болды. Оны құрастырған Бьяр
Страуструп. Оның атауын ойлап тапқан Рик Масситти деген адам. Бұл Си атты
бағдарламалау тілінің Си++ тіліне эволюциялық түрде көшуін білдіреді. Си++
- бұл Си тілінің объектігі бағытталған кеңейтілген түрі.
Си++ үшін базалық тіл ретінде Си-дің таңдалды, себебі ол:
көпмақсатты, ықшамды және біршама төмен деңгейлі;
жүйелік бағдарламалаудың мақсаттарының көбісіне жауап береді;
UNIX бағдарламалау ортасында жарамды болып табылады.
Си - тілі жүйелік программалау тілі, бұл тілді компиляторлар мен
операциялық жүйелерді жазуға және қолданбалы программаларды жазуға
қолданылады. Мысалы, Нью–Джерси штатының Мюррей Хилл қаласында Bell
laboratiories компаниясының ұйымдастыруымен 1969 жылы UNIX –операциялық
жүйесі жазылды, бұл жүйе PDP-7 компьютеріне орнатылған. С тілінің негізгі
идеяларының көпшілігі BCPL тілінен алынған.
Деннис Ритчи жазған Си тілінің таралу себебі: салыстырмалы түрде төмен
деңгейлі тіл, сондықтан алгоритм жұмысының әрбір бөлімін бақылау
мүмкіндігі бар және жоғары деңгейлі тілдер принцптері енгізілгендіктен,
нақты бір компьютердің архитиктурасы ерекшелітерінен тәуелсіздігін
қамтамасыз ету мүмкін болды.
Жоғарғы деңгейлі тілдерден Си тілінің ерекшелігі:
операторлар түрі өзгеше;
көрсеткіштер жиі қолданылады;
басқа тілдерге қарағанда синтаксикалық ережелері аз, нәтижесінде компилятор
тиімді жұмыс жасау үшін 256 Кб оперативті жады жеткілікті;
қызметші сөздерге қарағанда операторлар мен олардың комбинациялары көп;
алғашқыда Си тілінде 27 қызметші сөз ғана болған. Кейін ANSI Си тіліне және
Microsoft C тіліне қызметші сөз қосылды, жалпы саны шамамен 50;
Көп программалау тілдерінде бар функциялар Си тілінде жоқ;
Си тілінде қосалқы енгізу шығару функциялары, математикалық функциялары
және жолдармен жұмыс жасау функциялары жоқ, бірақ сол функциялардан және
басқа функциялардан тұратын жеке кітапханалардан алу мүмкіндігі
қарастырылған;
мәліметтер типін бақылау жеңіл, яғни программаның бір жерінде айнымалыны
символ түрінде , екінші бір жерінде осы символдың ASCII коды ретінде
қарастыруға болады;
Си тілінде қазіргі тілдері секілді барлық басқарушы конструкциялары
бар(For, if else, ... );
Cи тілінде модулдік программалауға болады, яғни программаның әртүрлі
бөлігін жеке копиляциялауға болады;
Ассемблер тілінде жазылған ішкі программаларды шақыруға болады;
көрсеткіштер яғни жады аймақтарынан берілген адрес бойынша қарау
программаны орындау жылдамдығын арттырады. Көрсеткіштер көп тілде
қолданылады, ал көрсеткіштерге арифметикалық амалдар тек Си тілінде
қолданылады.
Си тілінде барлық массивтер бір өлшемді, бірақ Си тілінде бір өлшемді
массивтерден тұратын конструкциялар бар, яғни көп өлшемді массивтер
құрылады;
тек қажетті кітапханалар шақырылатын болғандықтан жады тиімді қолданылады;
басқа тілдердегідей қосалқы функциялар;
көптеге мамандандырылған функциялар кітапханаларының жинытығы бар.

Кемшілігі:
Си тілінде мәліметтер типі қатаң қадағаланбайды, сондықтан Си тілінде
тәжірибелі программист байқағанмен жаңа үйренуші байқамайтын айнымалы
мәндеріне өзгерістер болуы мүмкін.
Мысалы, бір өрнекте (=) меншіктеу операторы бірнеше рет қолданылуы мүмкін.
Сондықтан нәтижесінің типі түсініксіз және қиын анықталады. Бірақ оны
қолдану арқылы тілдің қуаты арттырылған.
С++ тілі Си тілінің толықтырылған, яғни объектілі бағытталған
программалау(ОБП) құралдарымен толықтырылған жиыны деуге болады.
Си және С++ тілдерінің айырмашылығы:
-құрылымдар мен класстар аттары мәләметтер типтерінің аттары болып
табылады. С- де класс түсінігі жоқ.
1.2. Си тіліндегі әдістер және программа

СС++ тіліндегі программаның жалпы құрылысы
Си тіліндегі кез-келген программа main функциясынан тұрады. Мұның орындалу
барысында басқа функциялар шақырылады. Функциялар арасындағы байланыс
параметрлер арқылы беріліп функция мәнін қайтарып алу арқылы жүзеге асады.
Сонымен қатар, Си тілінің компиляторында мәселені бірнеше бөлікке
-файлдарға бөліп, әрқайсысын жеке-жеке трансляциялап, сосын оларды жеке бір
орындалатын файлға, жинау мүмкіндігі бар. Жинақтау байланыс редакторының
көмегімен жүзеге асырылады.
Объектілі бағытталған программалаудың негізгі идеясы – ол берілгендермен
осы берілгендерге қолданылатын іс-әрекеттердің объект деп аталатын бір
бүтінге бірігуі.
Объектілердегі функциялар С++ тілінде әдістер деп аталады. Егер объектінің
кейбір берілгендерін оқу керек болса, онда осы әрекетті орындау үшін
қолданылатын әдісті шақыру керек. Бұл әдіс берілгенді оқиды да оның мәнін
қайтарады. Оның мәнін тіке, әдісті қолданбай ала алмаймыз. Яғни берілгендер
кездейсоқ сыртқы әсерден қорғалған. Берілгендер мен функциялар
инкапсуляцияланған (біріктірілген) делінеді.
Жасыру және инкапсуляция ОБП-дың негізгі терминдері болып табылады. Егер
берілгенді өзгерту қажет болса, онда оны да объектінің әдісінің көмегімен
орындау керек. С++ тіліндегі программа объектілер жиынтығынан тұрады. Олар
бірінің бірі әдістерін шақыру арқылы бір-бірімен әрекеттерді орындайды.
Айнымалы өз типіне қандай қатынаста болса, объект те өз класына сондай
қатынаста. Класс анықтамасы class қызметші сөзінен басталып, класс есімі
жазылады. Құрылым сияқты, класс денесі фигуралық жақшаға алынып, нүктелі
үтір белгісімен аяқталады. ОБП –дың негізгі ерекшелігі берілгендерді
жасыра алуы.
Бұл терминнің мағынасы мынада: берілгендер класс ішінде орналасқан және
кластан тыс орналасқан функциялардың санкциясыз қолданылуынан қорғалған.
Егер кейбір берілгендерді қорғау керек болса, онда оларды private қызметші
сөзі бар класс бөлігінде орналастыру керек. Мұндай берілгендер тек класс
ішінде ғана қолданылады. Public қызметші сөзімен сипатталушы берілгендер
кластан тыс та қолданылады.
Объект құрыларда ерекше класс әдісі – конструктор шақырылады. Объектіні
жоюда автоматты түрде шақырылатын әдіс деструктор деп аталады. Деструктор
есімі конструктор есімімен сәйкес келеді және есім алдында ~ тильда белгісі
қойылады.
2 тарау. СИ тіліндегі жадыны басқару
2.1. Кластар, объектілер және жады

Әрбір объектінің өзінің тәуелсіз берілгендер өрісі болады. Бір кластың
барлық объектілері бір әдісті қолданады.
Класты құру кезінде класс әдісі құрылады және бір-ақ рет компьютер
жадысына орналастырылады. Әрбір объектінің өз мәндер жинағы бодады,
объектілер өрістері жалпы боламуы керек. Объектілерді құруда әрбір
берілгендер жинағы жадыдан белгілі бір бос орын алады.
Объект 1 Объект 2 Объект3
data1 data1 data1
data2 data2 data2
function1
function 2
Кластың статикалық берілгендері. Егер кластың берілгендер өрісі static
қызметші сөзімен сипатталса, онда бұл өрістің мәні сол кластың барлық
объектілері үшін бірдей болады. Кластың статикалық берілгендері барлық
объектілер қандай да бірдей мәндерді бірлесе қолданғанда пайдалы.
Статикалық өріс өз мінездемесі бойынша статикалық айнымалыға ұқсас: ол
класс ішіде ғана көрінеді, ал оның өмірінің уақыты программаның өмір сүру
уақытымен сәйкес келеді. Бірде бір класс объектісі болмаса да, статикалық
айнымалысынан өзгешелігі – кластың статикалық өріс бар болады.
Класс өрістерінің жеке-жеке жариялануы және анықталынуы. Статикалық
өрістерді анықтау жай өрістерді анықтау тәрізді жүргізілмейді. Жай
өрістертер жарияланады, яғни компиляторға оның есімі және типі хабарланады,
содан соң анықталады, яғни компилятор айнымалыға типіне сәйкес жадыдан орын
бөледі. Осының бәрі жалғыз ғана сипаттаудың көмегімен жүргізіледі. Ал
статикалық өрістер үшін көрсетілген әрекеттер екі оператордың көмегімен
жүргізіледі. Өрісті жариялау кластың ішінде жүргізіледі, ал оны анықтау
кластың сыртында орындалады.
Егер статикалық өрістің анықталуы кластың ішінде орналасса, онда класты
анықтау оған жадыдан орын бөлуді көрсетпейді деген қағиданы бұзған боламыз.
Сондықтан статикалық өрістің анықталуын кластың сыртында орналастыру арқылы
программа орындалуын бастағанға дейін оған жадыдан бір рет қана орын
бөлінеді.
Статикалық өрістермен кең ауқымды айнымалырадың арасында ұқсастық бар.
Статикалық өрістермен жұмыс істеу барысында компилятор тани алмайтын оңай
қателіктер жіберуге болады. Егер стаикалық өріс класта жарияланып, бірақ
анықталмаса компилятор ескерту хабарламасын бермейді. Байланыстырушы
редакторы бұл қатені анықтағанша программа қатесіз деп есептелінеді.
Байланыстырушы редактор анықталмаған кең ауқымды айнымалыны қолдануға
ұмтылу деген хабарламаны шығарады.
Тұрақты әдістер кластың өрістерінің мәндерін өзгертпейді.
constfu.cpp
class aClass
{ private: int alpha;
public: void nonFunc( )
{alpha=99;}
void conFunc ( ) const қате
{alpha=99;}
};
Функцияны тұрақты ету үшін оның прототипінен кейін, бірақ денесінің
алдында const қызметші сөзін жазу керек. Егер функцияның жариялануы және
анықталынуы бөлек берілсе, онда const модификаторы екі рет жазылады. Тек
кластың өрістерінің мәндерін оқитын әдістерді тұрақты әдістер ретінде
қолдану тиімді.
Тұрақты объектілер. const модификаторын объектілерге де қолдануға болады.
Егер объект const модификаторымен сипатталса, онда оны өзгертуге болмайды.
Мұндай объектілер үшін тек тұрақты әдістерді ғана шақыруға болады.
Операцияларды асыра жүктеу — объектілі бағытталған программалаудың ... жалғасы

Сіз бұл жұмысты біздің қосымшамыз арқылы толығымен тегін көре аласыз.
Ұқсас жұмыстар
СИ тіліндегі динамикалық жады
Си бағдарламалау тілінде сызықтық тізімдерді таңдау және іздеу
Құрылымдық типтер және жолдық процедуралармен функциялар
Си тілінде құрылған программаның құрылымын сипаттау жайлы
Бағдарламау бағыттарын топтастыру және олардың ерекшеліктері
Ақпараттық қауіпсіздіктің қауіптері
Дельфи ортасында тізімдермен жұмыс істейтін компоненттер
Builder С ортасында бағдарламалау
Есептеу техникасының даму тарихы мен кезеңдері. ЭЕМ-ның даму тарихы
Әмбебaп моделдейтін бaғдaрлaмaлaрды пaйдaлaну тиімділігі. MatCad
Пәндер