Энергетика



Pdf көрінісі
бет21/23
Дата07.02.2022
өлшемі1,03 Mb.
#91462
түріПрограмма
1   ...   15   16   17   18   19   20   21   22   23
Байланысты:
is 1

 
 
15 Дәріс №15. С++ тілінің стандартты кітапханасы. Жалпыланған
программалау
Дәрістің мақсаты:
С++ тілінің стандартты кітапханасы кластарының
жұмысын ұғындыру. 
Дәрістің 
мазмұны:
контейнерлі 
кластар. 
Итераторлар 
мен 
функциональды объектілер. 
 
Алгоритмдер. 
С++ тілінің стандартизация үдерісі 1989 жылы басталып және 1998 
жылы тіл стандартын басып шығарумен аяқтады.( Informating Technology-
Рrogramming Language-C++, нөмірі ISO/ IEC 14882-1998). 
С++ тілінің ережелері мен синтаксисінің қатаң , құрылған анықтамалары 
тілге үйретуді, бағдарламаны жазуды, сонымен бірге олардың басқа 
платформаларға бейімделуін жеңілдетеді. 
С++ тілінің стандартты кластарын былай бөлуге болады: ағынды 
кластар, жолдық кластар, контейнерлі кластар, алгоритмдер және 
итераторлар, математикалық, диагностикалық және қалған кластар. 
Контейнерлі кластардан, алгоритмдерден және итераторлардан 
құралған стандартты кітапхана бөлігін үлгілердің стандартты кітапханасы деп 
атайды. (Standard Temlate Library, STL). Кітапханаға қазіргі және тиімді 
алгоритмдерді қолданып объекттер жиынымен (коллекциялармен) жұмыс 
істеуге арналған белгіленген құралдар кіреді. С++ тілінің стандартты 
кітапханасымен оған негізделген жалпыланған технологиясын қолдану, 
программистерге жұмыс принциптерін қарастырмай, мәндер мен 
алгоритмдер құрылымдары аймағында жаңа өндірулерді қолдануға мүмкіндік 
беріледі.
Контейнерлі кластар. 
Контейнер – бұл белгілі бір түрде ұйымдастырылған басқа объектілер 
жиыны құрайтын объект. Контейнерлер анық типтің объект коллекцияларын 
басқаруға арналған. Контейнерлер мысалдары массивтер (векторлар және 
ассоциативті массивтер) және тізімдер (жекеленген тізімдер, кезектер, 
стектер) болып табылады. Контейнерге объектілерді қосуға болады және 
оларды одан жоюға болады. Контейнермен жұмыс, стандартты кітапханадағы 
контейнерлі кластар көмегімен қолдау табады. Бұл мүмкіндік класс үлгілері 
арқылы жүргізіледі. Контейнерлерді қолдану программалар сенімділігін 
жоғарлатуға, олардың тасымалдануымен бір мезгілдегі уақыттың кемуі мен 
өндіру құны бар әмбебаптылыққа мүмкіндік береді.
 


58 
STL контейнерлі класы кезекті және ассоциативті деп бөлінеді. Кезекті 
контейнерлер үздіксіз кезектілігі түріндегі бір типті объектілердің соңғы 
санын анықтауда қамтамасыз етеді және келесі түрлері бар: 
-
векторлар (vector);
-
екі жақты кезектер немесе басқаша айтқанда деректер (deque); 
-
тізімдер (list);
-
стегтер (stack);
-
кезектер (quere );
-
п риоритеттері бар кезектер (priority-quere). 
Ассоциотивті кезектер сұрыптаудың белгілі критериі бойынша оның 
мәніне тәуелді объект(элемент) позициясы бар сұрыпталған коллекцияларды 
береді. Ассоциативті контейнерлер кілт бойынша деректермен тез қатынауды 
қамтамасыз етеді және балансталған ағаштар негізінде құрылған. 
Ассоциативті контейнерлердің келесі түрлері бар: 
-
сөздіктер (map); 
-
көшірмелері бар сөздіктер (multimap); 
-
жиындар (set);
-
көшірмелері бар жиындар (multiset); 
-
биттік жиындар (bitset).
Түрлі контейнерлі кластардың ортақ қасиеттері көп және бұл өте 
қолайлы. Контейнерлі кластардың стандартталған интерфейсі бар. Бұл түрлі 
контейнерлі кластардағы бір атты деректер мүшелер мен операциялардың 
мағынасы бірдей екендігін білдіреді және контейнерлердің барлық типтеріне 
қолданылады. 
Итераторлар мен функциональды объектілер 
Итераторлар ұйымдастыру әдістері мен әрекеттер типіне тәуелсіз 
деректердің әрбір типіне қатынау және кезекті қарастыру құрылғылары болып 
табылады. Сөйтіп, итератор жалпыланған итератор болып табылады, және 
итератор мен көрсеткіш семантикасы бірдей STL –да итераторлар контейнерлі 
кластар, ағындар мен буферлі ағындармен жұмыс істеу үшін қолданылады.
Деректер түрлі түрде ұйымдастырылуы мүмкін (массив, тізім, ағаш 
және тағы басқа) әрбір кезектілік түрі үшін белгілі операциялар жиынын 
қолдайтын итератордың өз типі талап етіледі (кіріс, шығыс,тура, екі 
бағытты, және кезекті қатынау). Итераторлы адаптерлер бар, мыналарды 
қолдайтын алгоритмдерді орындауды қамтамасыз ететін арнайы итераторлар:
-
элементтері кері тәртіпте мөлшерден тыс жинау (кері итераторлар);
-
енгізу режимі (енгізу итераторлары);
-
деректер ағынымен жұмыс (ағынды итераторлар). 
Функционалды объект деп функцияны шақыру операциясы орындалған 
класс типі бар объектті атайды. Жиі түрде функционалды объекттер өңдеу 
әдістері мен оларды салыстырудың қолданушы контейнерлерін беруге 
арналған стандартты алгогритмдер параметрлері ретінде қолданылады. 
Параметр ретінде функционалды объектілер қолданылатын алгоритмдерде 
функцияға нұсқауышты қолдануға болады. Bool мәнін қайтаратын 


59 
функциональды объектілер бар және предикаттар деп аталады. Предикат деп
bool мәнін қайтаратын жай функцияны айтады.
Контейнерлердің өзі үлкен мәндерге иеленбейді. Пайдалы болу үлкен 
контейнер негізгі операциялармен жабдықталуы керек. Стандартты
кітапхана контейнер қолданушысынан талап етілетін көптеген кең таралған 
операциялардың орындалуына арналған алгоритмдерді ұсынады. Осындай 
алгоритмдер саны алпыс шамасында. 
Әрбір алгоритм функция үлгісі түрінде немесе функциялардың 
үлгілерінің жиыны түрінде жүзеге асырылған. Соның арқасында алгоритм 
кезекшіліктің әр түрімен жұмыс істей алады және түрлі типтердің 
деректерімен 
(жалпыланған 
пролграммалаудың 
технологиясының 
концепциясы). Қолданушының нақты талаптарының алгоритмін баптау үшін
функционалды объекттер қолданылады. Стандартты кітапхананың басқа 
құрылғылары сияқты стандартты алгоритмдерін қолдану программисті 
кезекшілікті өңдеу циклдерін құжаттау, түзету, жазудан айырады. Бұл 
бағдарламадағы қателерді кемітеді, өндіру уақытын қысқартады және 
анағұрлым оқылатын және жинақты етеді.
STL барлық алгоритмдерді бес категорияға бөледі: 
-
кезекшілігі бар модиицирленбейтін операциялар; 
-
кезекшілігі бар модиицирленетін операциялар; 
-
кезекшілікті сұрыптау алгоритмдері; 
-
көпшілікпен пирамидалармен жұмыс істеу алгоритмдері; 
-
жалпыланған сандық алгоритмдер. 
Параметрлер ретінде алгоритмдерге өңделетін кезектіліктің басы мен 
соңын анықтайтын итераторлар беріледі. Итераторлар түрлері берілген 
алгоритм қолданылуы мүмкін контейнерлер типін анықтайды. Мысалы: 
сұрыптау алгоритмі sort ( ) еркін қатынау итераторларын қолдануды талап 
етеді. Сондықтан ол list контейнерлерімен жұмыс істей алмайды. 
Алгоритмдер кезекшілік шегінен шығуды тексермейді. 
Бақылау сұрақтары: 
1)
Жалпыланған бағдарламалаудың технологиясының концепциясы? 
2)
Контейнерлер дегеніміз не, олар не үшін керек? 
3)
Итераторлар не үшін арналған? 
4)
Қандай операциялар итератордың кез келген типі үшін мүмкін 
болып табылады? 
5)
STL алгоритмдерінің негізгі категорияларын атап өтіңіз. 


Достарыңызбен бөлісу:
1   ...   15   16   17   18   19   20   21   22   23




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет