logo

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

Yuklangan vaqt:

08.08.2023

Ko'chirishlar soni:

0

Hajmi:

369.876953125 KB
 
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  kamdan-kam hollarda optimallashtiriladi, masalan,   Intel Integrated Performance 
Primitives   .
1. apply()   :- Bu funksiya   o z argumentlarida berilganʻ   manipulyatsiyani   bir 
vaqtning o zida	
ʻ   barcha   valarray elementlariga   qo llaydi	ʻ   va   manipulyatsiya 
qilingan qiymatlar bilan   yangi valarrayni qaytaradi   .
2. sum()   :- Bu funksiya   bir vaqtning o'zida valarraylarning barcha 
elementlarining   yig'indisini qaytaradi   .
3. min()   :- Bu funksiya   valarrayning   eng kichik   elementini   qaytaradi   .
4. max()   :- Bu funksiya   valarrayning   eng katta   elementini   qaytaradi   .
5. o'zgarish ()   : - Ushbu funktsiya keyin yangi valarray qaytadi   elementlarni 
o'zgaruvchan   tomonidan   qator   o'z argument ko'rsatilgan.   Agar   raqam ijobiy 
bo'lsa   ,   chapga siljish   , agar   raqam manfiy bo'lsa   ,   o'ngga siljish   qo'llaniladi.
6. cshift ()   : - keyin, bu funktsiya yangi valarray qaytadi   aylanma y 
(aylantirib)   elementlar   bilan   qator   uning argument ko'rsatilgan.   Agar   raqam 
ijobiy bo'lsa, chapga aylana   siljishi   qo'llaniladi, agar   raqam manfiy bo'lsa, 
o'ngga aylana siljishi   qo'llaniladi.
7. swap()   :- Bu funksiya   bir valarrayni boshqasiga   almashtiradi   .
1-misol.
Valarraydagi sonlarning minimumini toppish.
#include <valarray>
#include <iostream>
int main( )
{
   using namespace std;    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;
}           
  
                 Dastur kodini yozilishi      Dastur Javobi va dastur oynaga shunaqa kurinishda chiqadi.
 2-misol.
Valarrayda sonning kattasi (maximumi) ni toppish
#include <valarray>
#include <iostream>
int main( )
{
   using namespace std;
   int i, MaxValue;    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;
}                Dastur kodini yozilishi
Dastur Javobi va dastur oynaga shunaqa kurinishda chiqadi. Inglizcha versiyasi: Sstream
sstream - bu C ++ dasturlash tilidagi oqimlar interfeysi orqali satrlar bilan ishlashni
tashkil qilish uchun sinflar, funktsiyalar va o'zgaruvchilarga ega sarlavha fayli. U 
C ++ standart kutubxonasiga kiritilgan. Ism string ma'lumotlar turi nomining 
qisqartmasi va ingliz tilidan hosil bo'ladi. oqim. C ++ va undan oldingi C 
dasturlash tilida string ma'lumotlar turi bilan oqim uchun o'rnatilgan yordam yo'q. 
sstream string manipulyatsiyasini boshqarish uchun bitta sstream obyektidan 
foydalanadi. C ++ standart kutubxonasining bir qismi sifatida ushbu ob'ektlar 
standart nomlar maydonining bir qismidir – std.   std :: ostream va boshqa kerakli 
chiqish sinflari. sstream std:: sstream sinf shablonini va satrlar bilan ishlash uchun 
boshqa kerakli sinflarni amalga oshiradi
C I/O: fstream iomanip ios iosfwd iostream ostream, istream sstream streambuf 
Multithreading: atomik C 11 shart o‘zgaruvchisi C 11 kelajak
C I/O: fstream iomanip ios iosfwd iostream ostream, istream sstream streambuf 
Multithreading: atomik C 11 shart o‘zgaruvchisi C 11 kelajak
C I/O: fstream iomanip ios iosfwd iostream ostream, istream sstream streambuf 
Multithreading: atomik C 11 shart o‘zgaruvchisi C 11 kelajak
C I/O: fstream iomanip ios iosfwd iostream ostream, istream sstream streambuf 
Multithreading: atomik C 11 shart o‘zgaruvchisi C 11 kelajak
C I/O: fstream iomanip ios iosfwd iostream ostream, istream sstream streambuf 
Multithreading: atomik C 11 shart o‘zgaruvchisi C 11 kelajak.
Oqimli darslar
Xuddi ostream bilan istream kabi, satrlar uchun oqim sinflari ma'lumotlarni 
saqlash uchun buferni ta'minlaydi. Biroq, cin va coutdan farqli o'laroq, bu oqim 
sinflari kirish / chiqish trubasiga (masalan, klaviatura, monitor va boshqalar) 
ulanmagan. Satrlarni o'qish va yozish uchun 6 ta oqim sinflari mavjud:
    istringstream klassi (istream sinfining bolasi);
   ostringstream klassi (ostream sinfining bolasi);
   stringstream klassi (iostream sinfining bolasi);
   wistringstream klassi;
   wostringstream klassi;
   wstringstream klassi.
Stringstream sinfidan foydalanish uchun siz sstream sarlavha faylini kiritishingiz 
kerak. Stringstreamga ma'lumotlarni qo'shish uchun biz kiritish operatoridan 
foydalanishimiz mumkin (<<
1
2
3
4
5
6
7
8 #include <iostream>
#include <sstream> //  для  stringstream
 
int main()
{
std::stringstream myString;
myString << "Lorem ipsum!" << std::endl; //  вставляем  "Lorem 
ipsum!"  в  stringstream
}  1
2
3
4
5
6
7
8 #include <iostream>
#include <sstream> //  для  stringstream
 
int main()
{
std::stringstream myString;
myString.str("Lorem ipsum!"); //  присваиваем   буферу  
stringstream  значение  "Lorem ipsum!"
}
Xuddi shunday, stringstream-dan ma'lumotlarni qaytarish uchun biz str () 
funktsiyasidan foydalanishimiz mumkin:
#include <iostream>
#include <sstream> //  для  stringstream
 
int main()
{
std::stringstream myString;
myString << "336000 12.14" << std::endl;
std::cout << myString.str();
}
Std:MAP:
C++ standart andozalar kutubxonasidagi
xarita (STL)
 Qiyinchilik darajasi:   o'rta
 Oxirgi yangilangan:   2018 yil 22-noyabr
Xaritalar - bu elementlarni xaritalangan tarzda saqlaydigan assotsiativ 
konteynerlar.   Har bir element asosiy qiymatga va xaritalangan qiymatga ega.   Hech 
qanday ikkita xaritalangan qiymat bir xil kalit qiymatlarga ega bo'lishi mumkin 
emas.
 
Map bilan bog liq ba zi bir asosiy funksiyalar:ʻ ʼ
begin()   – iteratorni xaritadagi birinchi elementga   qaytaradi
end()   – iteratorni map size()   dagi oxirgi elementdan keyingi nazariy elementgaʼ   qaytaradi. xaritaga
max_size ()   - xarita ushlab mumkin elementlar maksimal sonini qaytaradi
bo'sh ()   xarita bo'sh yoki yo'qligini qaytaradi -
juft Insert (joy KeyValue, mapvalue)   - qo'shimchalar xaritaga yangi element
o'chirish (iterator joy) – Iterator tomonidan ko‘rsatilgan joydagi elementni
o‘chiradi (const g)   – “g” kalit qiymatini xaritadan
clear()   olib tashlaydi –   Xaritadan   barcha elementlarni olib tashlaydi.
  Xaritaning barcha funktsiyalari ro'yxati:
               C++ STL da map insert()           - Xarita konteyneriga ma'lum bir kalit bilan 
elementlarni joylashtiring.   .
               C++ STL da map count() funksiyasi           – Xaritadagi “g” kalit qiymatiga ega 
elementga mos keladiganlar sonini qaytaradi.
               C++ STL da map equal_range()           – juftlik iteratorini qaytaradi.   Bu juftlik k ga 
ekvivalent kalitga ega bo'lgan konteynerdagi barcha elementlarni o'z ichiga 
olgan diapazon chegaralarini bildiradi.
               C++ STL da map erase() funksiyasi – Elementni           konteynerdan o‘chirish 
uchun ishlatiladi.
               C++ STL da map rend() funksiyasi – Xaritadagi           birinchi kalit-qiymat juftligi 
oldidagi nazariy elementga ishora qiluvchi teskari iteratorni qaytaradi (bu 
uning teskari tomoni hisoblanadi).
               map rbegin() funksiyasi C++ STL da           – Xaritaning oxirgi elementiga ishora 
qiluvchi teskari iteratorni qaytaradi.
               map find() funksiyasi C++ STL           – Agar topilsa, xaritadagi “g” kalit qiymatiga 
ega elementga iteratorni qaytaradi, aks holda iteratorni oxirigacha qaytaradi.
               map crbegin() va crend() funksiyalari C++ STL da           –   crbegin()   xarita 
konteyneridagi oxirgi elementga ishora qiluvchi doimiy teskari iteratorni 
qaytaradi.   crend()   xaritadagi birinchi elementdan oldingi nazariy elementga 
ishora qiluvchi doimiy teskari iteratorni qaytaradi.
               C++ STL da map cbegin() va cend() funksiyalari           –   cbegin()   xarita 
konteyneridagi birinchi elementga ishora qiluvchi doimiy iteratorni 
qaytaradi.   cend()   multimapdagi oxirgi elementdan keyingi nazariy elementga 
ishora qiluvchi doimiy iteratorni qaytaradi.
               map emplace() C++ STL da           – kalit va uning elementini xarita konteyneriga 
kiritadi.
               map max_size() C++ STL da           – xarita konteyneri   sig‘adigan      elementlarning 
maksimal sonini qaytaradi.
               map upper_bound() funksiyasi C++ STLda           – “g” kalit qiymatiga ega bo lgan 	
ʻ
xaritalangan qiymatga ekvivalent bo lgan birinchi elementga iteratorni 	
ʻ
qaytaradi yoki xaritadagi “g” kalit qiymatiga ega elementdan keyin ketadi.                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 oshiradi.  Binar – xarakterli oqim esa fizik xotiradan o‘qish yozishni to‘g‘ridan –
to‘g‘ri amalga oshiradi.
Orientatsiya:   Faylni ochishda oqim hech qanday orientatsiyaga ega
bo‘lmaydi. Bajarilayotgan amalga bog‘liq ravishda chiqariluvchi miqdorlar keng
formatli bitlar yoki baytlar ko‘rinishida bo‘ladi.
Indikatorlar:   Oqimning joriy holatini aniqlovchi va bir qator chiqarish
amallarini bajaruvchi ichki aniqlangan ichki indikatorlar mavjud bo‘lib, ular
quyidagilar:
Xatolik indikatori.   Bu indikator oqimga bog‘liq bo‘lgan xatoliklar ro‘y
berganda ishlaydi. Bu indekator ―ferror  funksiyasi hisoblanadi.‖
Fayl oxirini ko’rsatuvchi indekator.   Agar fayl oxirini ko‘rsatuvchi
indekator o‘rnatilgan bo‘lsa, u oxirgi o‘qilgan ma‘lumotni nazorat qiladi. U ―feof	
‖
funksiyasi hisoblanadi.
Holat indekatori.   Bu oqim uchun ma‘lumotlarni kiritish chiqaarish
indekatori hisoblanadi. Uning qiymatini ―ftall  funksiya yordamida olish mumkin.	
‖
Funksiyalar:
Fayl ustida amal bajaruvchi funksiyalar:
remove   faylni qayta yuklash.
29
rename   faylni qayta nomlash.
Tmpnam   vaqtinchalik faylni nomini qo‘yish.
Tmpfile   vaqtinchalik fayl ochish.
Faylga bog’lanishni amalga oshiruvchi funksiyalar:
fclose   faylni yopish
fflush   flush   oqimi.
fopen   faylni ochish.
freopen   faylni turli usullarda ochish.
setbuf   oqimdagi ma‘lumotlar buferi.
setvbuf   bufferni o‘zgartirish oqimi.
Kiritish chiqarish formati:
fprintf   formatlangan ma‘lumotlarni oqimga yozish.
fscanf   formatlangan ma‘lumotlarni oqimga qo‘shish.
printf   stdout fayliga formatlangan ma‘lumotlarni chiqarish.
scanf   stdin faylidan formatlangan ma‘lumotlarni o‘qish.
snprintf   ma‘lum o‘lchamga ega ma‘lumotni bufferga yozish.
sprintf   formatlangan ma‘lumotlarni satrga yozish.
sscanf   formatlangan ma‘lumotlarni satrdan o‘qish.
vfprintf   o‘zgaruvchidagi formatlangan ma‘lumotlarni oqimga
yozish.
vfscanf   oqimdan formatlangan ma‘lumotlarni o‘zgaruvchiga o‘qish.
vprintf   o‘zgaruvchidan stdout fayliga formatlangan ma‘lumotlarni
chiqarish. vscanf   stdin   faylidan formatlangan ma‘lumotlarni o‘zgaruvchidan
o‘qish.
vsnprintf   o‘zgaruvchidagi formatlangan ma‘lumotlarni ma‘lum
o‘lchamga ega bufferga chiqaradi.
vsprintf   o‘zgaruvchidagi formatlangan ma‘lumotlarni satrga
chiqarish.
30
vsscanf   satrdan formatlangan ma‘lumotlarni o‘zgaruvchiga o‘qish.
Belgilarni kiritish chiqarish xarakteri:
fgetc   oqimdan belgini o‘qish.
fgets   oqimdan satrni o‘qish.
fputc   belgini oqimga chiqarish.
fputs   satrni oqimga chiqarish.
getc   oqimdan belgini o‘qish.
putc   oqimga belgini chiqarish.
getchar   stdin   faylidan belgini o‘qish.
gets   stdin   faylidan satrni o‘qish.
putchar   stdout   fayliga belgini chiqarish.
Puts   stdout   fayliga satrni chiqarish.
ungetc   oqimdan belgini yo‘qotish.
Ma’lumotlarni bevosita kiritish chiqarish:
fread   ma‘lumotlar blokini oqimdan o‘qish.
fwrite   ma‘lumotlar blokini oqimga chiqarish.
Faylning joylashuvi:
fgetpos   oqimning joriy holatini aniqlash.
fseek   oqimning holatini aniqlovchi indekator.
fsetpos   oqimlar to‘plarining joylashuvini aniqlovchi indekator.
ftell   oqimning joriy holatini aniqlash.
rewind   oqimlarning boshlang‘ich holatini aniqlash.
Xatolarga ishlov berish:
clearerr   xatolik indekatorini o‘chirish.
feof   fayl oxiri indekatorini tekshirish.
ferror   xatolik indekatorini tekshirish.
perror   bosmalashdagi xatolik xabari.
Makroaniqlovlar:
BUFSIZ   buffer o‘lchami
31
EOF   fayl oxiri
FILENAME
MAX
bir vaqtda ochilish mumkin bo‘lgan oqimlarning miqdori.
FOPEN MAX   bir vaqtda ochilish mumkin bo‘lgan oqimlarning 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. system   sistema buyruqlarini bajarish.
Exit   chaqirilgan jarayonni tugatish.
Qidiruv va saralash funksiyalari:
B search   massivda   binar   qidiruv.
qsort   massiv elementlarini saralash.
Matematik funksiyalar bilan ishlovchi kutubxonalar
C++ tilidan foydalanuvchiar bu kutubxonadan juda keng foydalanadilar.
math.h kutubxonasi turli matematik funksiyalar, makrokonstantalar va matematik
turlar bilan boyitilgan. Quyida biz ularning tavsifini keltiramiz:
math.h   kutubxonasining funksiyalari
Funksiya Bajaradigan amali
Trigonometrik funksiyalar:
cos   Radianga t е ng bo‘lgan burchakning kosinusini qaytaradi
sin   Radianga t е ng bo‘lgan burchakning sinusini qaytaradi
tan   Radianga t е ng bo‘lgan burchakning   tangensini qaytaradi
acos   Radianda b е rilgan argum е ntning arkkosinus qiymatini
qaytaradi
asin   Radianda b е rilgan argum е ntning arksinus qiymatini
qaytaradi
atan   Radianda b е rilgan argum е ntning arktangens qiymatini
qaytaradi
atan2   Radianda b е rilgan x/y argum е ntning arktangens qiymatini
qaytaradi
Giperbolik funksiyalar:
cosh   Radianda b е rilgan burchakning giperbolik kosinusini
qaytaradi
sinh   Radianda b е rilgan burchakning gip е rbolik sinusini
qaytaradi
tanh   Radianda b е rilgan burchakning gip е rbolik tangensini
qaytaradi
acosh   Radianda b е rilgan burchakning gip е rbolik arkkosinusini
qaytaradi
asinh   Radianda b е rilgan burchakning gip е rbolik arksinusini
qaytaradi
42
atanh   Radianda b е rilgan burchakning gip е rbolik arktangensini
qaytaradi
Logarifmik funksiyalar exp   е x qiymatni qaytaradi
frexp   Sonning mantissasini va   darajasining qiymatini ajratib ,
mantissa qiymatini qaytaradi va darajasini ko‘rsatilgan
adr е sga joylashtiradi
ldexp(x)   x*2 е xp qiymatni qaytaradi
log   Sonning natural logarifmini qaytaradi
log10   Sonning 10 asosli logarifmini qaytaradi
modf   Haqiqiy sonning butun va haqiqiy qismalarini ajratish
exp2   Funksiyaning ikkilik ko‘rsatkichini aniqlash
expm1   -1 ko‘rsatkich bilan hisoblah
ilogb   Ikkita predmetdan iborat nabordagi butun son logarifmi
log1p   Logarifmni +1 ko‘rsatkich bilan hisoblash
log2   Ikkilik logarifmni hisoblash
logb   Logarifmni suzuvchu vergulli son asosida hisoblash
Darajaga ko’tarish funksiyalari
pow   Darajaga ko‘taradi
pow10   10 sonining   darajasini hisoblaydi
sqrt   Sondan kvadrat ildiz chiqaradi
cbrt   Sondan kub ildiz chiqaradi
hypot   to‘g‘ri burchakli uchburchakning kat е tlari bo‘yicha
gipot е nuzasini hisoblaydi
Xatolik funksiyalari va gamma funksiyalari
erf   Xatolik funksiyasini hisoblash
erfc   Qo‘shimcha xatolik funksiyasini hisoblash
tgamma   Gamma funksiyani hisoblash
lgamma   Ro‘yxatdan o‘tkazuvchi gamma funksiyani hisoblash
43
Yaxlitlash va qoldiqni hisoblash funksiyalari:
ceil   haqiqiy qiymatni unga eng yaqin katta butun songacha
aylantiradi va uni haqiqiy ko‘rinishini qaytaradi
floor   haqiqiy qiymatni eng yaqin kichik songa aylantiradi va uni
haqiqiy son ko‘rinishida qaytaradi
fmod   Ikkita sonni bo‘lish natijasidagi qoldiqni qaytaradi. %
amaliga o‘xshagan,   faqat haqiqiy son qaytaradi
trunc   Sonni yaxlitlash
round   Sonni yaqin butun songa yaxlitlash
lround   Uzun sonni yaxlitlash
llround   Ikkilik uzun sonni yaxlitlash
rint   Butun songa yaxlitlash
lrint   Uzun butun songa yaxlitlash
llrint   Ikkilik uzun butun songa yaxlitlash
nearbyint   Butun songa yaqin bo‘lgan qiymat bilan yaxlitlah remainder   Qoldiqni hisoblash
remquo   Qoldiqni va faktorni hisoblash
Absolyut qiymatni hisoblash funksiyalari
abs   Sonning   absolyut qiymatini qaytaradi
fabs   Haqiqiy sonning absolyut qiymatini qaytaradi
labs   Uzun butun sonning absolyut qiymatini qaytaradi
Turlar
double_t   Haqiqiy sonlar turi
float_t   Haqiqiy sonlar turi                                                        XULOSA .
        Xulosa  q ilib shuni aytish  mumkinki , C++ dasturlash tilida  ishlash
boshqa  dasturlash  tillariga  nisbatan ancha qulay va imkonoyati ham
kengroq.   Men   C ++  dasturi   strukturasi   xaqida ,  belgilar   bayoni  ,
Algoritm   va   dastur   tushunchasi ,  ma ’ lumotlarni   kiritish   va   chikarish
operatorlari   xamda   dasturda   massivlar   va   satrlar   bilan   ishlash   xaqida
o`zimga  keraklicha   bilim   va   ko`nikmaga   ega   bo ` ldim .
C++ dasturi  Windows   muhitida   ishlaydigan   dastur   tuzish   uchun
qulay   bo ` lgan   vosita   bo ` lib ,  kompyuterda   dastur   yaratish   ishlarini
avtomatlashtiradi ,  xatoliklarni   kamaytiradi   va   dastur   tuzuvchi
mehnatini  y engillashtiradi .
C++ dasturlash tilida kutubxonalarning ishlatilishi boshqa
dasturlash tillariga qaraganda bir muncha afzalliklarga ega.
kutubxona  bilan  ishlash  bazi  hisoblash  masalalarida  ancha
qulayliklar  tug`diradi.  Ularning  xotirada  egallaydigan  joyini
hisobga  olsak  dasturning  ishlash  tezligi  xam  bir  necha  marta
ortadi.
Men bu kurs ishimda shuni  yoritib  berganmanki , kutubxonalar
(vallaray,sstream,map) xaqida umumiy ma`lumot ,ularning
xotiradan  egallaydigan  tartibi, saralash, tartiblash, funksiyalar
bilan  bog`lash , dasturlarda  foydalanish  kabi yechimlariga oid turli
masalalarni  misollar yordamida yoritib  chiqdim. Bundan  shuni
xulosa  qilishim  mumkinki ,  bundan  keyingi  ishlarimni  yanada
boyitgan  xolda   (vallaray,sstream,map). Kutubxonalaridan
foydalanib misollar yechaman  FOYDALANILGAN  ADABIYOTLAR
1.                 https://en.cppreference.com/   
2.
3.                 https://www.geeksforgeeks.org/   
4.
5.                 https://docs.microsoft.com/   
6.
7. 1. A.A. Xoidjigitov ,  Sh.f.Madraximov, U.E.Adamboyev  
“Informatika  va  programmalash  ” .O`quv  qo`llanma, 
O`z.MU . 2005-yil. 
8.
9.
10. 2.  B. Straustrop. “Yazik  programmirovaniya  C++. ” Binom  
press, 2006-yil.
11.
12.
13. 3. I. Qobulov   “C++ tili “
14.
15. Toshkent nash. 2008-yil.
16.
17. 4.   WWW.C++dastur.uz
18.
19. 5.Madraximov. F “C++ dasturlash  tili” uslubiy  qo`llanma.
20.
21. 2009-yil.
22.
23. 6.  Sayfiyev J.F “C++ tiliga  kirish”-uslubiy  qo`llanma
24.
25. Buxoro-2005.
26.
27. 7.http.//dastur.uz

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