C++ dasturlash tilining valarray , sstream va map kutubxonalari funksiyalari bilan ishlash




![qoladi tanlash faqat (kabi o'rtacha chiziqli bo'lishi kerak, quickselect ,) kabi
eng yomon-hodisa lineer talab qilmaydigan introselect .
C++ standart kutubxonasi C++ ISO standartlashtirish sa’y-harakatlarining
bir qismi sifatida ISO standartlashtirishdan o‘tdi va kengaytirilgan
funksiyalarni standartlashtirish bo‘yicha keyingi ishlarni olib bormoqda.
std:: C++ da valarray klassi
C++ 98 massivlarda matematik amallarni samarali ushlab turish va ta'minlash
uchun valarray deb nomlangan maxsus konteynerni taqdim etdi.
U elementar matematik operatsiyalarni va umumlashtirilgan pastki kod
operatorlarining turli shakllarini, kesish va bilvosita kirishni qo'llab-
quvvatlaydi.
Vektorlar bilan solishtirganda, valarraylar ma'lum matematik operatsiyalarda
vektorlarga qaraganda samaralidir.
Eslatmalar
std::valarray va yordamchi sinflar taxalluslashning ma'lum shakllaridan xoli
bo'lib, bu sinflar bo'yicha operatsiyalarniC dasturlash tilidagilimit
kalit so'zining ta'siriga o'xshash optimallashtirishga imkon beradi. Bundan
tashqari, valarray argumentlarniqabul qiluvchi funktsiyalar va
operatorlargakompilyatorga ifodani optimallashtirishga imkon berish uchun
proksi-server ob'ektlarini qaytarishga ruxsat beriladi. v1 = a * v2 + v3 ; bajaradigan
yagona halqa sifatida v1 [ i ] = a * v2 [ i ] + v3 [ i ] ; har qanday vaqtinchalik yoki
bir nechta o'tishlardan qochish. Biroq, ifoda shablonlari har qanday C++
konteyneri uchun bir xil optimallashtirish texnikasini taqdim etadi va raqamli
kutubxonalarning aksariyati moslashuvchanlik uchun ifoda shablonlarini
valarraylardan afzal ko'radi. Ba'zi C++ standart kutubxona dasturlari samarali
operatsiyalarni amalga oshirish uchun ifoda shablonlaridan
foydalanadi std::valarray (masalan, GNU libstdc++ va LLVM libc++). Valarraylar](/data/documents/1d4b5bcf-3ab3-4a2e-8a38-d8f26d27f3e0/page_5.png)

![int i, MinValue;
valarray<int> vaR ( 10 );
for ( i = 0 ; i <
10 ; i += 3 )
vaR [ i ] = -i;
for ( i = 1 ; i < 10 ; i += 3 )
vaR [ i ] = 2*i;
for ( i = 2 ; i < 10 ; i += 3 )
vaR [ i ] = 5 - i;
cout << " Operand valarray hisoblanadi : ( ";
for ( i = 0 ; i < 10 ; i++ )
cout << vaR [ i ] << " ";
cout << ")." << endl;
MinValue = vaR.min ( );
cout << " Valarraydagi eng kichik element : "
<< MinValue << "." << endl;
}](/data/documents/1d4b5bcf-3ab3-4a2e-8a38-d8f26d27f3e0/page_7.png)


![valarray<int> vaR ( 10 );
for ( i = 0 ; i < 10 ; i += 3 )
vaR [ i ] = i;
for ( i = 1 ; i < 10 ; i += 3 )
vaR [ i ] = 2*i - 1;
for ( i = 2 ; i < 10 ; i += 3 )
vaR [ i ] = 10 - i;
cout << " Operand valarray hisoblanadi : ( ";
for (i = 0 ; i < 10 ; i++ )
cout << vaR [ i ] << " ";
cout << ")." << endl;
MaxValue = vaR.max ( );
cout << " Valarraydagi eng katta element : "
<< MaxValue << "." << endl;
}](/data/documents/1d4b5bcf-3ab3-4a2e-8a38-d8f26d27f3e0/page_10.png)






![ map operator= C++ da STL – Konteyner tarkibini joriy tarkibini almashtirib,
boshqa konteynerga tayinlaydi.
map low_bound() funksiyasi C++ STL da – “g” kalit qiymatiga ega bo‘lgan
xaritalangan qiymatga ekvivalent bo‘lgan birinchi elementga iteratorni
qaytaradi yoki xaritadagi “g” kalit qiymatiga ega elementdan oldin o‘tmaydi.
map emplace_hint() funksiyasi C++ STL da – Kalit va uning elementini
berilgan maslahat bilan xarita konteyneriga kiritadi .
map value_comp() C++ STL da – Xaritadagi elementlar qanday
tartiblanganligini aniqlaydigan ob'ektni qaytaradi (sukut bo'yicha '<').
C++ STL da map key_comp() funksiyasi – Xaritadagi elementlar qanday
tartiblanganligini aniqlaydigan ob'ektni qaytaradi (sukut bo'yicha '<').
map::size() C++ STL da – Xaritadagi elementlar sonini qaytaradi.
map::empty() C++ STL da - Xarita bo'sh yoki yo'qligini qaytaradi.
map::begin() va end() C++ STL da – begin() xaritadagi birinchi elementga
iteratorni qaytaradi. end() xaritadagi oxirgi elementdan keyingi nazariy
elementga iteratorni qaytaradi
map::operator[] C++ STL da - Bu operator operator ichida berilgan
pozitsiyada mavjud elementga murojaat qilish uchun ishlatiladi.
map::clear() C++ STL da – xaritadan barcha elementlarni olib tashlaydi.
map::at() va map::swap() C++ da STL – at() funksiyasi k kaliti bilan
bog‘langan elementga havolani qaytarish uchun ishlatiladi. swap() funksiyasi
ikkita xaritaning mazmunini almashish uchun ishlatiladi, lekin o lchamlar farqʻ
qilishi mumkin bo lsa-da, xaritalar bir xil turdagi bo lishi kerak.
ʻ ʻ
3. 1. C++ tilida qiymatlarni kiritish chiqarish uchun C tilidan o‘tgan stdio.h
kutubxonasidan foydalaniladi. Bu kutubxonada mavjud funksiyalar klaviatura,
printer, terminal kabi qurilmalarni fayl oqimlari sifatida qabul qiladi. Oqim – bu
o‘zaro bir jinsli sodir bo‘luvchi xususiyatga ega jarayondir. Oqimlar
kutubxonasida fayl ko‘rsatgichlari kabi qayta ishlanadi. Fayl ko‘rsatgichlari – bu
28
oqimda unikal aniqlanib, bajariladigan amal uning parametri sifatida beriladi.Bu
kutubxonada 3 ta standart oqim mavjud; stdin,stdout va stderr lar. Bu oqimlar
kutubxona chaqirilishi bilan avtomatik tarzda aniqlanadi [4,10].
Oqim xususiyatlar – Oqimlar bir qator xususiyatlarga ega ya‘ni ularda
qanday funksiyalardan foydalanishmoqda va ular orqali ma‘lumotlarni chiqarish
qanday amalga oshirilmoqda.Oqimlarning bunday xususiyatlarining ko‘pchiligi
―fopen funksiyasi bilan aniqlangan:
‖
Ma’lumotlarni o’qish – yozish uchun ruxsat: Bu holat oqimdan o‘qish
yoki fizik xotiraga ma‘lumotlarni yozish uchun qo‘llaniladi.
Matn/Binar: Matnlar oqimi – bu har biri yakunlanuvchi satr deb
tushuniladi. Matn holati satrlarni o‘z xarakteriga ko‘ra o‘qish yozishni amalga](/data/documents/1d4b5bcf-3ab3-4a2e-8a38-d8f26d27f3e0/page_17.png)


![maksimal miqdori.
L tmpnam vaqtinchalik fayl nomining minimal uzunligi.
NULL bo‘sh ko‘rsatkich.
TMP_ MAX vaqtinchalik fayl nomining qo‘shimcha aniqlovchilar.
Turlari:
FILE oqimni boshqarish uchun ma‘lumotlarni saqlovchi obyekt.
fpos_ t faylning joylashuv chegarasini aniqlovchi ma‘lumotlarni
saqlovchi obyekt.
(stdlib.h) kutubxonasi
Bu kutubxona bir qator xotirani dinamik boshqaruvni amalga oshiruvchi,
tasodifiy sonlarni hosil qilish, dasturlash muhitining bog‘lovchilari, butun
sonlarning arifmetikasi akslantirish, saralash va izlash funksiyalarini o‘zida
saqlaydi [3,10].
Funksiyalar:
atof satr ko‘rinishidagi sonni haqiqiy son formatiga o‘tkazish.
atoi satr ko‘rinishidagi sonni butun son formatiga o‘tkazish.
atol satr ko‘rinishidagi sonni uzun butun son formatiga o‘tkazish.
atoll satr ko‘rinishidagi sonni ikkilangan uzun son formatiga
o‘tkazish.
strtod satr ko‘rinishidagi sonni ikkilangan haqiqiy son formatiga
o‘tkazish.
strtof satr ko‘rinishidagi sonni haqiqiy son formatiga o‘tkazish.
strtol satr ko‘rinishidagi sonni uzun butun son formatiga o‘tkazish.
strtold satr ko‘rinishidagi sonni uzun haqiqiy son formatiga
32
o‘tkazish.
strtoll satr ko‘rinishidagi sonni ikkilangan butun son formatiga
o‘tkazish.
strtoul satr ko‘rinishidagi sonni ishorasiz uzun butun son
formatiga o‘tkazish.
strtoull satr ko‘rinishidagi sonni ishorasiz ikkilangan uzun butun son
formatiga o‘tkazish.
rand tasodifiy sonlar generator.
srand tasodifiy sonlar generatorini boshqarish.
calloc dinamik massiv uchun xotiradan joy ajratadi.
Muhim funksiyalar:
abort joriy jarayonni to‘xtatish.
atexit (ma‘lumotlarni chiqarish) joriy holatdan chiqib ketish.
at_quick_exit joriy holatni favqulotda tark etish funksiyasi.
exit chaqirilgan jarayonni tugatish.
gutenv muhim qaytaruvchi qiymatni olish.
quick_exit chaqirilgan jarayonni favqulotda tark etish.](/data/documents/1d4b5bcf-3ab3-4a2e-8a38-d8f26d27f3e0/page_20.png)







O`zbekiston Respublikasi Oliy va O`rta maxsus ta`lim vazirligi Samarqand davlat universiteti “ Matematika ” fakulteti “ Axborotlashtirish texnologiyalari ” kafedrasi “Dasturlash asoslari ” fanidan Bajardi: _____________ Qabul qildi: _____________ Komissiya a`zolari: _______________ _______________ KURS ISHI
Mavzu : C++ dasturlash tilining valarray , sstream va map kutubxonalari funksiyalari bilan ishlash Reja : I. Kirish II. Asosiy qism . III. Kutubxona bilan ishlash. 2.1 Kutubxona xaqida umumiy ma’lumot. 2.2 “ Valarray ” kutubxonasi. 2.3 “ sstream “ kutubxonasi. 2.4“ map “ kutubxonasi. IV. C++ da Kutubxona funksiyalarini umumiy qo’llanishi. 3.1 Ma’lumotlarni kiritish va chiqarish va akslantirish funksiyalari bilan ishlovchi kutubxonalar. 3.2 Matematik funksiyalar bilan ishlovchi kutubxonalar. V. Xulosa. VI. Foydalanilgan adabiyotlar.
Kirish Ma`lumki, programma mashina kodlarining qandaydir ketma – ketligi bo`lib, aniq bir xisoblash vositasini amal qilishini boshqaradi. Programma ta`minotini yaratish jarayonini osonlashtirish uchun yuzlab programma - lash tillari yaratilgan . Barcha programmalash tillarini ikki toifaga ajratish mumkin. - Quyi darajadagi programmalash tillari; - Yuqori darajadagi programmalash tillari; Quyi darajadagi programmalash tillariga Assembler turidagi tillar kiradi . Bu tillar nisbatan qisqa va tezkor bajariluvchi kodlarni yaratish imkoniyatini beradi. Lekin, assembler tilida programma tuzish zaxmatli, nisbatan uzoq davom etadigan jarayondir . Bunga qarama – qarshi ravishda yuqori bosqich tillari yaratilganki , ularda tabiiy tilning cheklangan ko`rinishidan foydalangan holda programma tuziladi. Yuqori bosqich tillaridagi operatorlar , berilganlarning turlari , o`zgaruvchilar va programma yozishning turli usullari tilning ifodalash imkoniyatini oshiradi va programmani <<o`qimishli>> bo`lishini ta`minlaydi. Yuqori bosqich tillariga Fortran, PL/1, Prolog, Lisp, Basic, Pascal, C va boshqa tillarni misol keltirish mumkin. Kompyuter arxitekturasini takomillashuvi, kompyuter tarmog`ining rivojlanishi mos ravishda yuqori bosqich tillarini yangi variantlarini yuzaga kelishiga, yangi tillarni paydo bo`lishiga ayrim tillarni esa yo`qolib ketishiga olib keldi . Xozirda keng tarqalgan tillarga Object Pascal, C++, C#, Php, Java , Asp tillari xisoblanadi. Xususan , C tilining takomillashgan variant C++ tilini olishimiz mumkin. 1972 – yilda Denis Ritch va Brayan Kernegi tomonidan C tili yaratildi . 1980 – yilda Byarn Straustrop C tilining avlodi C++ tilini yaratdiki, unda strukturali va obektga yo`naltirilgan programmalash texnologiyasiga tayangan xolda programma yaratish imkoniyati tug`ildi.
С ++ funksiya va obyektlarning juda boy kutubxonasiga ega . Yani C++ da dasturlashni o`rganish ikki qismga bo`linadi . Birinchisi bu C++ ni o`zini o`rganish , ikkinchisi esa C++ ning standart kutubxonasidagi tayyor obyekt funksiyalarni qo`llashni o`rganishdir. C++ standart kutubxonasi bir nechta umumiy konteynerlarni, ushbu konteynerlardan foydalanish va boshqarish funktsiyalarini, funktsional ob'ektlarni, umumiy satrlarni va oqimlarni (jumladan, interaktiv va fayl kiritish-chiqarish), ba'zi til xususiyatlarini qo'llab-quvvatlashni va kvadratni topish kabi kundalik vazifalar uchun funktsiyalarni taqdim etadi. sonning ildizi . C++ standart kutubxonasi ISO C standart kutubxonasining ".h" bilan tugaydigan ko'pgina sarlavhalarini ham o'z ichiga oladi , ammo ulardan foydalanish eskirgan. C++ standart kutubxonasidagi boshqa sarlavhalar ".h" bilan tugamaydi. C++ standart kutubxonasining xususiyatlari std nomlar maydonida e'lon qilingan . C++ standart kutubxonasining diqqatga sazovor xususiyati shundaki, u umumiy algoritmlarning sintaksisi va semantikasini aniqlabgina qolmay, balki ularning ishlashiga ham talablar qo‘yadi. Ushbu ishlash talablari ko'pincha kutilgan, lekin ishlatilishi talab qilinmaydigan taniqli algoritmga mos keladi. Aksariyat hollarda buning uchun chiziqli vaqt O( n ) yoki chiziqli vaqt O( n log n ) kerak bo ladi, lekin ba zi hollardaʻ ʼ barqaror tartiblash uchun (o z ʻ o rnida ʻ ruxsat berish uchun) kvazizikli vaqt O( n log 2 n ) kabi yuqori chegaralarga ruxsat beriladi. birlashtirish tartibi ). Ilgari saralash faqat O( n.) ni olish uchun kerak edi log n ) o rtacha ʻ hisobda tezkor so rovdan ʻ foydalanishga imkon beradi , bu amalda tez, lekin eng yomon ko rsatkichlarga ega, biroq ʻ introsort ham tez o rtacha ʻ unumdorlikka, ham eng yomon holatlarning optimal murakkabligiga imkon berish uchun kiritilgan va C++11 dan boshlab , saralash eng yomon chiziqli bo'lishi kafolatlanadi. Boshqa hollarda talablar kabi, laxer
qoladi tanlash faqat (kabi o'rtacha chiziqli bo'lishi kerak, quickselect ,) kabi eng yomon-hodisa lineer talab qilmaydigan introselect . C++ standart kutubxonasi C++ ISO standartlashtirish sa’y-harakatlarining bir qismi sifatida ISO standartlashtirishdan o‘tdi va kengaytirilgan funksiyalarni standartlashtirish bo‘yicha keyingi ishlarni olib bormoqda. std:: C++ da valarray klassi C++ 98 massivlarda matematik amallarni samarali ushlab turish va ta'minlash uchun valarray deb nomlangan maxsus konteynerni taqdim etdi. U elementar matematik operatsiyalarni va umumlashtirilgan pastki kod operatorlarining turli shakllarini, kesish va bilvosita kirishni qo'llab- quvvatlaydi. Vektorlar bilan solishtirganda, valarraylar ma'lum matematik operatsiyalarda vektorlarga qaraganda samaralidir. Eslatmalar std::valarray va yordamchi sinflar taxalluslashning ma'lum shakllaridan xoli bo'lib, bu sinflar bo'yicha operatsiyalarniC dasturlash tilidagilimit kalit so'zining ta'siriga o'xshash optimallashtirishga imkon beradi. Bundan tashqari, valarray argumentlarniqabul qiluvchi funktsiyalar va operatorlargakompilyatorga ifodani optimallashtirishga imkon berish uchun proksi-server ob'ektlarini qaytarishga ruxsat beriladi. v1 = a * v2 + v3 ; bajaradigan yagona halqa sifatida v1 [ i ] = a * v2 [ i ] + v3 [ i ] ; har qanday vaqtinchalik yoki bir nechta o'tishlardan qochish. Biroq, ifoda shablonlari har qanday C++ konteyneri uchun bir xil optimallashtirish texnikasini taqdim etadi va raqamli kutubxonalarning aksariyati moslashuvchanlik uchun ifoda shablonlarini valarraylardan afzal ko'radi. Ba'zi C++ standart kutubxona dasturlari samarali operatsiyalarni amalga oshirish uchun ifoda shablonlaridan foydalanadi std::valarray (masalan, GNU libstdc++ va LLVM libc++). Valarraylar