logo

C++ Tilida navbat, stek, dek

Загружено в:

16.11.2024

Скачано:

0

Размер:

53.5556640625 KB
MAVZU:  C++ Tilida navbat, stek , dek .
Reja:
1.  C++  dasturlash tili haqida umumiy tushuncha.
2.  C++ dasturlash tilida navbat.
3.  C++ dasturlash tilida stek.
4.  C++ dasturlash tilida dek. 
5.  Xulosa.
C++  dasturlash tili haqida umumiy tushuncha .
C++   dasturlash   tili   1990   yilda   C++   standarti   ishlab   chiqildi   va   bu   standart
hozir ANSI C nomi bilan mashxur. Bu til juda kengayib ketdi va hozirgi kunda bu
tilning   imkoniyatlari   juda   cheksiz   hisoblanadi.   C++   funksiya   va   ob yektlarningʼ
boy kutubxonasiga ega. Bundan kelib chiqadiki C++ dasturlash tilini o rganish 2	
ʼ
qismga bo linadi: dastlab, C++ tili  sintaksisi  o rganiladi  va shundan so ng uning	
ʼ ʼ ʼ
asosiy   kutubxonalari   birma-bir   ko rib   chiqib,   yodlash   lozim   bo ladi.   Bundan	
ʼ ʼ
ko rinib turibdiki, bu til juda katta hajmni o z qamroviga oladi. C++ tilining egasi	
ʼ ʼ
yo q u hech kimga tegishli emas. Bu til S tilidan kelib chiqgani uchun bosh harf S,
ʼ
++  esa  bu  tildagi  qiymatni  bittaga  ko tarish   belgisi  hisoblanadi   va  bu  belgi  C++	
ʼ
dasturlash   tilida   paydo   bo ldi.   C++   dasturlash   tili   kompilyatsiya   qilinadigan   til	
ʼ
hisoblanadi bu degani yozilgan kod oldin mashina tiliga o giriladi va keyin ishga	
ʼ
tushiriladi.
#include <iostream>
using namespace std;
int main()
{
    cout << "Hello world!" << endl;
    return 0; }
C++   tilida   ma’lumotlarning   elementlari .   C++   tilida   so z   deb   bir   nechta   belgilarʼ
ketma-ketligi   tushuniladi.   Xizmatchi   so z   deb   C++   tilidagi   standart   nom	
ʼ
tushuniladi. Bu maxsus ma noni anglatadi va uni ma lumotlarga berib bo lmaydi.	
ʼ ʼ ʼ
Masalan: int, float, for, while va boshqalar. C++ tilida ma lumotlarning elementlari	
ʼ
bo lib quyidagilar xizmat qiladi:	
ʼ
1.O’zgaruvchilar
2.O’zgarmaslar
3.Izohlar
C++   dasturlash   tilida   o’zgaruvchilar .   O zgaruvchi   -   xotiraning   nomlangan   qismi	
ʼ
bo lib, o zida ma lum bir toifadagi qiymatlarni saqlaydi. O zgaruvchining nomi va	
ʼ ʼ ʼ ʼ
qiymatlari   bo ladi.   O zgaruvchining   nomi   orqali   qiymat   saqlanayotgan   xotira	
ʼ ʼ
qismiga   murojaat   qilinadi.   Programma   ishlashi   jarayonida   o zgaruvchining	
ʼ
qiymatini   o zgartirish   mumkin.   Har   qanday   o zgaruvchini   ishlatishdan   oldin,   uni	
ʼ ʼ
e lon   qilish   lozim.   Demak   butun   sonlardan   foydalanish   uchun   int,   haqiqiy	
ʼ
sonlardan foydalanish uchun float, yozuvlarni e lon qilish uchun string va boshqa	
ʼ
ma lumotlarning turlariga qarab o zgaruvchisilar kiritiladi.	
ʼ ʼ
C++   dasturlash   tilida   o zgarmaslar	
ʼ .   va   izohlar   O zgarmaslar   –   deb   hisoblash	ʼ
jarayonida   qiymatini   o zgartirmaydigan   kataliklarga   aytiladi.   Ular   const   so zi	
ʼ ʼ
orqali   qo llaniladi.   Masalan:   float   const   pi   =   3.14;   Izohlar   -   programmaning	
ʼ
ma lum   qismini   tavsiflash   uchun   ishlatiladi   va   bu   qatorda   hech   qanday   amal	
ʼ
bajarilmaydi,   ya ni   programmaning   biror   qismini   yaxshiroq   tushuntirish   uchun	
ʼ
xizmat   qiladi.   Izoh   «/*»   va   «*/»   simvollari   orasida   beriladi.   Bundan   tashqari
birsatrli   izohlardan   ham   foydalanish   mumkin.   Buning   uchun   izoh   boshiga   «//»
belgisi qo yiladi.	
ʼ
C++ dasturlash tilida navbat  Navbat   bu   shunday   tuzilmaki,   u   elementlar   qo’shilishi   bilan   kengayib   boradi   va
elementlarni   faqatgina   bir   tomondan   qabul   qiladi.   Stekdan   farqli   holda,   navbat
tuzilmasi   har   ikkala   tomondan   ham   ochiq   hisoblanadi,   lekin   element   kiritish   bir
tomondan, chiqarish esa ikkinchi tomonidan amalga oshiriladi. Navbat  FIFO(first
in   first   out   –   birinchi   kelgan   birinchi   ketadi)   ko’rinishidagi   tuzilmadir.   Navbatda
ham   xuddi   stekdagi   kabi   C++   da   alohida   kutubxona   mavjud.   #include   Navbatni
dasturda   e’lon   qilish   quyidagicha:   Queue   nav1;   Navbat   ustida   quyidagi   amallar
bajariladi:   -   Clear()   -   navbatni   tozalash.   -   isEmpty()   –   navbatni   bo’shlikka
tekshirish   -   enqueue(el)—el   elementni   navbatga   joylashtirish   -   dequeue()   —
navbatdan birinchi elementni olish - firstEl() — navbatning birinchi elementini uni
o’chirmasdan   qaytaradi   Navbatda   bajariladigan   enqueue   va   dequeue   amallari   4.7
rasmda   keltirilgan.   Steklardan   farqli   ravishda   navbatlarda   o’zgarishlar   uning
oxirida   va   boshida   bo’lishi   nazorat   qilinishi   lozim.   Elementlar   navbatga   oxiridan
joylashtiriladi, olish esa boshidan amalga oshiriladi.
Queue (Navbat
Queue ham Stack singari   chiziqli ma’lumot tuzilmasi   bo’lib, hayotdagi oddiy 
navbat singari ishlaydi. Shu sababli Stackdan farqli o’laroq Queueda eng oxirgi 
qo’shilgan elementga emas birinchi qo’shilgan elementga birinchi bo’lib “xizmat 
ko’rsatiladi”. Operatsiyalarni bunday ko’rinishda amalga oshirilishi esa FIFO (First 
In First Out) deb ataladi.  Queueni tasavvur etish uchun quyidagi rasmning o’zi 
yetarli deb o’ylayman Queue ustidagi asosiy amallar
 Elementni navbat oxiriga qo’shish ( Enqueue )
 Elementni navbat boshidan chiqarib olish.  Element o’chiriladi ( Dequeue )
 Navbat boshidagi elementni ko’rish. Element o’chirilmaydi ( Peek )
 Navbatni bo’shlikka tekshirish ( isEmpty )
C++ dasturlash tilida Queue obyektlarini yaratish uchun "queue" nomli sinfni
ishlatamiz.   Quyidagi   C++   kodida   Queue   sinfini   qanday   yaratish   va   uningga
elementlar qo'shish va o'chirishni ko'ramiz:
#include <iostream>
#include <queue>
using namespace std;
int main() {
    queue<int> myQueue;
    myQueue.push(10); // 10 ni Queue ga qo'shamiz
    myQueue.push(20); // 20 ni Queue ga qo'shamiz
        cout   <<   "Queue   ning   ilk   elementi:   "   <<
myQueue.front() <<endl;
        myQueue.pop();   //   Queue   ning   birinchi   elementini
o'chiramiz
        cout   <<   "Queue   ning   ilk   elementi:   "   <<
myQueue.front() <<endl;     return 0;
}
Bu   kodda,   std::queue   sinfi   yaratiladi   va   unda   int   turidagi   ma'lumotlar   saqlanadi.
push()   metodi   orqali   ma'lumotlar   qo'shiladi,   front()   metodi   orqali   birinchi
elementni   olishimiz   mumkin,   va   pop()   metodi   orqali   birinchi   elementni
o'chirishimiz mumkin.
C++ dasturlash tilida stek.
Steklar
Stek   -   chiziqli   ma’lumotlar   tuzilmasi   bo’lib,   ma’lumotlarni   kiritish   va   chiqarish
uning   bir   tomonidan   amalga   oshiriladi.   Bunday   stek   kafeteriyadagi   tarelkalar
to’plamini eslatadi. Yangi elementlar stekning uchiga qo’yiladi va yuqori qismidan
olinadi. Oxirgi qo’yilgan element stek uchidan birinchi bo’lib olinadi. Shu sababli,
stek   LIFO   (last   in   first   out)   tuzilishidagi   ma’lumotlar   tuzilmasi   bo’ladi,   ya’ni,
“oxirgi kelgan birinchi ketadi” prinsipi bo’yicha ishlaydi. 
Stek o’lchami  cheklangan  bo’lsa,  elementni   stekka  qo’yilishi  stekda  kamida bitta
elementga   joy   bo’lgan   holdagina   amalga   oshiriladi.   Shuning   uchun   stek   ustida
amal bajarishdan oldin stek holatini tekshirish lozim bo’ladi,ya’ni
 - Stekka element kiritilishidan oldin joy borligini tekshirish;
  - Stekdan elementni o’chirishdan oldin element borligini tekshirish. Steklar bilan
ishlash   uchun   C++   tilida   tayyor   kutubxona   mavjud   bo’lib,   unga   dastur   boshida
Stek - chiziqli ma’lumotlar tuzilmasi bo’lib, ma’lumotlarni kiritish va
chiqarish uning bir tomonidan amalga oshiriladi. Bunday stek kafeteriyadagi
tarelkalar to’plamini eslatadi. Yangi elementlar stekning uchiga qo’yiladi va
yuqori qismidan olinadi. Oxirgi qo’yilgan element stek uchidan birinchi bo’lib
olinadi. Shu sababli, stek LIFO (last in first out) tuzilishidagi ma’lumotlar
tuzilmasi bo’ladi, ya’ni, “oxirgi kelgan birinchi ketadi” prinsipi bo’yicha
ishlaydi.
Stek o’lchami cheklangan bo’lsa, elementni stekka qo’yilishi stekda
kamida bitta elementga joy bo’lgan holdagina amalga oshiriladi. Shuning uchun
stek ustida amal bajarishdan oldin stek holatini tekshirish lozim bo’ladi,ya’ni - Stekka element kiritilishidan oldin joy borligini tekshirish;
- Stekdan elementni o’chirishdan oldin element borligini tekshirish.
Steklar bilan ishlash uchun C++ tilida tayyor kutubxona mavjud bo’lib, unga
dastur boshida #include<stack.h> deb murojaat qilish kerak. Dasturda stek e’lon
qilish uchun quyidagicha yozish kerak.
Stack <toifa> stek_nomi;
Misol uchun,
Stack <int> stek1;
Stekda quyidagi amallar o’rinli:
- Clear() - Stekni tozalash.
- isEmpty() – Stekni bo’shlikka tekshirish
- push(el) - stekka element kiritish.
- pop() – Stekdan element o’chirish.
- topEl() - stekni uchidagi elementni o’chirmasdan o’qib olish.
Ulardan foydalanish esa quyidagicha:
stek1.push(x) – x ni stekka tashlash;
Stekka element qo’shish va chiqarish amallari quyidagi yozish kerak.
 Stack stek_nomi;
 Misol uchun, Stack stek1; 
Stekda quyidagi amallar o’rinli:
 - Clear() - Stekni tozalash.
 - isEmpty() – Stekni bo’shlikka tekshirish
 - push(el) - stekka element kiritish.
 - pop() – Stekdan element o’chirish.
  -   topEl()   -   stekni   uchidagi   elementni   o’chirmasdan   o’qib   olish.   Ulardan
foydalanish esa quyidagicha:
 stek1.push(x) – x ni stekka tashlash;
  Stack   ustidagi asosiy amallar 
Stackga element qo’shish ( Push )

Stackdan elementni olish. Element o’chiriladi ( Pop )

Stackdagi top elementni ko’rish. Element o’chirilmaydi ( Peek )

Stackni bo’shlikka tekshirish ( isEmpty )
C ++ tilida stekni realizatsiya qilish. Dastur boshida stek shablonidan foydalanish
uchun   kutubxonasini   yoqishimiz   kerak.   Stek   yaratish   uchun   biz   quyidagi   sxema
bilan ishlashimiz kerak: stack ; Yangi satrda stack kalit so zini yozishimiz kerak. -ʻ
bu yerda stekda saqlanadigan ma‘lumotlar turini yozishimiz kerak. - bu stek nomi.
Steklar bilan ishlash metodlari. Metodlar - navbat va stek kabi konteynerlar uchun
ishlatiladigan funksiyalar. Quyida stekda ishlatiladigan metodlarni qarab chiqamiz:
#include   #include   //stek   kutubxonasini   ulash   33   using   namespace   std ;   int   main()
{   stack   stek ;   //   Stek   yaratish   int   i   =   0;   cout   <<   "Istalgan   oltita   son   kiriting:   "   <<
endl; while (i != 6) { int a; cin >> a; stek.push(a); // Sonni stekka qo shish i++; } if	
ʻ
(!stek.empty()) cout << "Stek bo sh emas"; //Stekni bo shligini tekshirish cout <<	
ʻ ʻ
"Stekning yuqori elementi: " << stek.top() << endl; // Eng yuqori elementni chop
etish cout << "Eng yuqori elementni olib tashlash " << endl; // stek.pop(); // yuqori
elementni o chirish cout << "Bu endi yangi yuqori element: " << stek.top(); return	
ʻ
0;   }   Dasturda   berilgan   push()   funksiyasi   yordamida   stekka   element   qo shamiz.	
ʻ
Qavslar ichida biz qo shmoqchi bo lgan qiymat bo lishi kerak. Dastur kodida stek	
ʻ ʻ ʻ
bo shligini   tekshirish   uchun   empty()   metodidan   foydalanamiz.  Agar   bu   funksiya	
ʻ
natijasi true bo lsa, u holda stek bo sh bo ladi. Agar natija false bo lsa, unda stekda	
ʻ ʻ ʻ ʻ
element   mavjud   bo ladi.   Stekning   eng   yuqori   elementini   o chirish   uchun   pop()	
ʻ ʻ
funksiyasi ishlatilgan. pop() funksiyasida, push() funksiyasidan farqli o laroq, qavs	
ʻ
ichida biror narsani ko rsatishning hojati yo q, lekin qavsning o zi bo lishi kerak.	
ʻ ʻ ʻ ʻ Stekning eng yuqori elementini olish uchun top() funksiyasidan foydalanamiz. 34
peek()   funksiyasi.   stack   kutubxonasiga   yangi   peek   ()   funksiyasi   qo shildi,   uʻ
yordamida   stekning   N-elementiga   murojaat   qilishingiz   mumkin   (yuqoridan).   Shu
holatda endi stek massivga o xshash holatda bo ladi. Quyida peek() funksiyasidan	
ʻ ʻ
foydalanib   uchinchi   elementni   chiqaramiz.   Ushbu   funksiya   C++11   standartidan
keyin qo shilgan.	
ʻ
Stackga   hayotiy   misol   sifatida   bir   uchi   yopiq   bo’lgan   trubani   keltirish   mumkin.
Trubaga do’stingiz bir nechta turli rangdagi sharlar tashladi. Endi siz sharlar rangini
bilish   uchun   faqatgina   do’stingiz   oxirgi   bo’lib   truba   ichiga   tashlagan   sharning
ranginigina   ko’ra   olasiz.   Qolgan   sharlarni   ko’rish   uchun   do’stingiz   tashlagan
tartibdan teskari tartibda ularni olib chiqishingiz kerak bo’ladi.
Rekursiv   funksiyalar   ham   huddi   shunday   ishlaydi.   Oxiriga   yetmagan   funksiyalar
(return   bo’lmagan)   kelgan   joyidan   rekursiya   stekiga   tashlab   ketilaveradi   va   keyin
ular   orqadan   oldinga   qarab   bajariladi.   Operatsiyalarning   bunday   ko’rinishda
bajarilish jarayoni   LIFO   (Last In First Out) deb ataladi.
Ko’pchilikni “hayotini saqlab qolgan” CTRL+Z operatsiyasini ko’z oldingizga keltiring.
Har safar bu tugmalarni bosganda oxirgi qilgan ishlaringiz orqadan oldinga qarab chiqib
keladi (bekor qilinadi). Huddi shu yerda stack tuzilmasi ishlatilganini ko’rishimiz mumkin. Stek, dasturlashda ma'lumotlarni o'z ichiga olgan o'zgaruvchilar ketma-ketligi 
bo'lgan ma'lumot turi. Bu ketma-ketlikda birinchi kiritilgan obyekt birinchi 
chiqqanda, ikkinchi kiritilgan obyekt ikkinchi chiqqanda chiqadi. Agar bitta obyekt
chiqqanda, undan keyin uni o'chirish kerak bo'lsa, obyektni qaytarib olish mumkin.
Bu shunday sababli, stek asosan "birinchi kiritilgan, birinchi chiqqan" prinsipi 
bo'yicha ishlaydi.
1. Stekni yig'ish:  Stek, bitta ma'lumotni saqlash uchun juda foydali bo'lib, ushbu 
ma'lumotlar bitta joyda saqlanadi. Odatda, bu kerakli bo'lgan dasturlash 
vazifalarini o'z ichiga oladi, masalan, funksiyalardan chiqqan ma'lumotlarni 
saqlash uchun.
2. Bos stek:  Agar stek bo'sh bo'lsa, unda hech qanday ma'lumot saqlanmaganligi 
bildiriladi.  Bunday holatda stekda hech qanday ma'lumotni olish mumkin emas.
3. Stekga qo'shish:  Ma'lumotni stekga qo'shish uchun, "push" operatsiyasidan 
foydalaniladi.  Bu operatsiya stekning oxiriga yangi ma'lumotni qo'shadi.
4. Stekdan olish:  Ma'lumotni stekdan olish uchun, "pop" operatsiyasidan 
foydalaniladi. Bu operatsiya stekning oxiridagi ma'lumotni o'chirib tashlaydi va uni
qaytaradi.
5. Stekning kengayishi:  Stekning kengayish darajasi, ne'mat da'vo qiladi, chunki 
unda eng oxirgi kiritilgan ma'lumot stekning boshiga, ya'ni oxiriga eng qavvinchi 
kiritilgan ma'lumot chiqqanida, chiqadi.  Bu, "birinchi kiritilgan, birinchi chiqqan" 
prinsipi bilan mos keladi.
Steklar, algoritmlar, bo'sh yadrosi qo'shimcha ma'lumotlarni saqlash uchun juda 
foydali bo'lib, umuman shu turdagi dasturlarni yozishda juda ko'p ishlatiladi.
C++ dasturlash tilida std::stack sinfi stekni amalga oshirish uchun ishlatiladi.
Bu sinfning asosiy metodlari push(), pop(), top() va empty().
Quyidagi C++ kodida stekning qanday ishlatilishini ko'ramiz:
#include <iostream> #include <stack>
using namespace std;
int main() {
    stack<int> myStack;
    myStack.push(10); // 10 ni stekka qo'shamiz
    myStack.push(20); // 20 ni stekka qo'shamiz
        cout   <<   "Stekning   oxirgi   elementi:   "   <<
myStack.top() <<endl;
    myStack.pop(); // Oxirgi elementni olib tashlaymiz
        cout   <<   "Stekning   yangi   oxirgi   elementi:   "   <<
myStack.top() <<endl;
    return 0;
}
Bu   misolda,   push()   yordamida   10   va   20   sonlari   stekka   qo'shiladi.   Keyin,   top()
yordamida oxirgi elementni ko'rishimiz, va pop() yordamida oxirgi elementni olib
tashlaymiz.   O'tgan   hollarda,   stekning   yangi   oxirgi   elementini   ko'rish   uchun   yana
bir marta top() yordamidan foydalanamiz.
C++ dasturlash tilida dek.
C++ dasturlash tilida  deque  (dek) ma'lumotlar tuzilmasi yoki "double-ended 
queue" deb ataladi. Bu o'zgaruvchan uzunlikdagi ro'yxatga o'xshash bo'lib, u 
ro'yxatning boshini va ohirini boshqarish imkoniyatini beradi.
1. O'rnatish va foydalanish :  deque  ni ishlatish uchun  #include <deque>  ni 
kutishingiz kerak. Dek obyektini yaratish uchun esa  std::deque<T> deq;  shaklidagi usuldan foydalanishingiz mumkin, bu yerda  T  sizning ma'lumot turingizni 
anglatadi.
2. Elementlarni qo'shish va o'qish : Dekka element qo'shish uchun  .push_back()  va
.push_front()  metodlaridan foydalanishingiz mumkin.  .push_back()  metodi dekka 
ohiriga element qo'shadi ,  .push_front()  esa boshiga. Elementni o'qish uchun esa
.front()  va  .back()  metodlaridan foydalanishingiz mumkin.
3. Elementlarni o'chirish :  .pop_front()  va  .pop_back()  metodlari yordamida siz 
dekdan elementlarni olib tashlashingiz mumkin.  .pop_front()  dekning boshidan,
.pop_back()  esa ohiridan o'chiradi.
4. Hajmi va bo'shligi : Dekning hajmi  .size()  metodi bilan aniqlanadi. Dek bo'sh 
bo'lsa,  .empty()  metodi  true  qaytaradi, aks holda  false .
deque ning boshqa foydali metodlari ham mavjud, masalan, elementni indeks 
bo'yicha olish, elementlarni kesib olish, boshqa konteynerlarga nusxa qilish va h.k.
Umuman, dekkalar ro'yxatlarga o'xshash bo'lib, lekin bir necha afzalliklarga ega, 
masalan, bosh va ohirga element qo'shish va o'chirishda ro'yxatdan boshqa 
operatsiyalar bilan ta'minlangan bo'lishi.
DEK (DEQ - Double Ended Queue) Dek so‘zi (DEQ - Double Ended Queue) 
ingliz tilidan olingan bo‘lib 2 ta chetga ega navbat degan ma’noni bildiradi. 
Dekning o’ziga xos xususiyati shundan iboratki, elementlarni yozish va o’qishni 
har ikkala chetidan ham amalga oshirish mumkin.
Dekni   quyi   chegaralari   birlashtirilgan   ikkita   stek   ko’rinishda   qarash   mumkin.
Deklar bilan ishlash uchun ham C++ da alohida kutubxona mavjud:
Dek ustida bajariladigan amallar: 
 boshidan element kiritish. Push_front() 
 Oxiridan element kiritish. Push_back() 
 boshidan element chiqarish. pop_front()
 oxiridan element chiqarish. Pop_back() 
 Empty() – bo’shlikka tekshirish. Dekka oid misol keltiramiz:
#include<iostream>
 #include<deque>
Using namespace std; 
int main (){
 deque mydeque (2,100); // two ints with a value of 100
mydeque.push_front (200);
 mydeque.push_front (300);
 cout << "mydeque contains:";
 for (deque::iterator it = mydeque.begin(); it != 
mydeque.end(); ++it)
 cout << ' ' << *it;cout << '\n';
 return 0;
 }
 Natija:
 300 200 100   100 
Xulosa
Quyidagi xususiyatlar C++ dasturlash tilini ajralib chiqadi:
1. OOP (Object-Oriented Programming - Ob'ektga yo'naltirilgan dasturlash) : 
C++ o'zida ob'ektoriy dasturlashning boshlang'ich ta'sirchanligi bo'lib, ob'ektga 
yo'naltirilgan dasturlash prinsiplarini o'z ichiga oladi. Bu tilda ob'ekt, sinflar, turli 
xil farzand sinflar, interfeyslar va boshqa ob'ektga yo'naltirilgan dasturlashning 
barcha xususiyatlari yozilishi mumkin.
2. Yopiq tarchilik : C++ tilda yopiq tarchilik prinsipi o'zgaruvchilarning (variable) 
e'tibor qilish va ularga murojaat qilishga qaror qilishga yordam beradi. Bu tili 
yopiq funksiyalar va sinflar yaratish imkoniyatiga ega bo'lgan kuchli tili 
hisoblanadi.
3. Portativlik : C++ kod portativligi, ya'ni uni bir joyda yozilgan dastur boshqa 
joylarda ham to'g'ri ishlay oladigan xususiyatga ega. Bu tilda yozilgan dasturlar  ko'pchilikning qo'llab-quvvatlaydi bo'lib, C++ turli platformalarda (masalan, 
Windows, Linux, macOS) ham ishlaydi.
4. Yaxshi boshqa tillar bilan integratsiya : C++ ko'pchilikning boshqa tillar 
bilan o'rtasidagi interfeysslarga qo'llaniladi. Masalan, C++ kodlari C tilida 
yozilgan funksiyalarga murojaat qilish mumkin.
5. To'liq imkoniyatlar : C++ kuchli dasturlash tili bo'lib, dasturchilarga keng 
imkoniyatlar beradi. Bu til orqali bajariladigan dasturlarning juda yuqori 
tezlikda ishlaydi. C++ xususiyatlari tajribali dasturchilar uchun keng 
ishlatiladi.
Barchasini birga olganda, C++ dasturlash tilini keng doiraga ega va juda mashhur 
bo'lgan bir til hisoblaymiz . 
C++ dasturlash tilida "stek"  ko'p o'zgaruvchilikni o'z ichiga olgan ma'lumotlar 
tizimini ifodalovchi o'zgaruvchilar jamlanmasidir. U "birinchidan kiritilgan, 
birinchidan chiqarilgan" prinsipi bo'yicha ishlaydi (FILO - First In, Last Out). Bu 
degani, eng oxirgi kiritilgan element eng birinchi chiqariladi.
C++ dasturlash tilida "navbat" (queue)  - bu ham ma'lumotlarni o'z ichiga olgan 
o'zgaruvchiliklar jamlanmasi, ammo ularni "birinchidan kiritilgan, birinchidan 
chiqarilgan" prinsipi bo'yicha ishlatadi (FIFO - First In, First Out). Bu degani, biror
bir ma'lumot birinchidan kiritilganda, u stekning oxirgi joyiga qo'shiladi va 
birinchidan chiqarilganda, u stekning boshidan chiqariladi.
C++ dasturlash tilida "dek" (deque)  - bu "birinchidan kiritilgan, birinchidan 
chiqarilgan" prinsipi bo'yicha ishlaydigan o'zgaruvchiliklar jamlanmasi. Bu, "stek" 
va "navbat"ning barchasini birlashtiradi, ya'ni "birinchidan kiritilgan, birinchidan 
chiqarilgan" va "birinchidan kiritilgan, oxiridan chiqarilgan" prinsiplariga amal 
qiladi
  Adabiyotlar:   1.   AdamDrozdek.   Data   structure   and   algorithms   in   C++.   Fourthedition.   2013.
Chapter 4. 
2.   Data   structure   and   algorithms.   Made   easy   guide.   Fast   track   student   edition.
2014. Chapter 5,6.
  https://play.google.com/books/reader?id=jnnCAwAAQBAJ&printsec=front
cover&output=reader&hl=ru&pg=GBS.PA8

MAVZU: C++ Tilida navbat, stek , dek . Reja: 1. C++ dasturlash tili haqida umumiy tushuncha. 2. C++ dasturlash tilida navbat. 3. C++ dasturlash tilida stek. 4. C++ dasturlash tilida dek. 5. Xulosa. C++ dasturlash tili haqida umumiy tushuncha . C++ dasturlash tili 1990 yilda C++ standarti ishlab chiqildi va bu standart hozir ANSI C nomi bilan mashxur. Bu til juda kengayib ketdi va hozirgi kunda bu tilning imkoniyatlari juda cheksiz hisoblanadi. C++ funksiya va ob yektlarningʼ boy kutubxonasiga ega. Bundan kelib chiqadiki C++ dasturlash tilini o rganish 2 ʼ qismga bo linadi: dastlab, C++ tili sintaksisi o rganiladi va shundan so ng uning ʼ ʼ ʼ asosiy kutubxonalari birma-bir ko rib chiqib, yodlash lozim bo ladi. Bundan ʼ ʼ ko rinib turibdiki, bu til juda katta hajmni o z qamroviga oladi. C++ tilining egasi ʼ ʼ yo q u hech kimga tegishli emas. Bu til S tilidan kelib chiqgani uchun bosh harf S, ʼ ++ esa bu tildagi qiymatni bittaga ko tarish belgisi hisoblanadi va bu belgi C++ ʼ dasturlash tilida paydo bo ldi. C++ dasturlash tili kompilyatsiya qilinadigan til ʼ hisoblanadi bu degani yozilgan kod oldin mashina tiliga o giriladi va keyin ishga ʼ tushiriladi. #include <iostream> using namespace std; int main() { cout << "Hello world!" << endl; return 0;

} C++ tilida ma’lumotlarning elementlari . C++ tilida so z deb bir nechta belgilarʼ ketma-ketligi tushuniladi. Xizmatchi so z deb C++ tilidagi standart nom ʼ tushuniladi. Bu maxsus ma noni anglatadi va uni ma lumotlarga berib bo lmaydi. ʼ ʼ ʼ Masalan: int, float, for, while va boshqalar. C++ tilida ma lumotlarning elementlari ʼ bo lib quyidagilar xizmat qiladi: ʼ 1.O’zgaruvchilar 2.O’zgarmaslar 3.Izohlar C++ dasturlash tilida o’zgaruvchilar . O zgaruvchi - xotiraning nomlangan qismi ʼ bo lib, o zida ma lum bir toifadagi qiymatlarni saqlaydi. O zgaruvchining nomi va ʼ ʼ ʼ ʼ qiymatlari bo ladi. O zgaruvchining nomi orqali qiymat saqlanayotgan xotira ʼ ʼ qismiga murojaat qilinadi. Programma ishlashi jarayonida o zgaruvchining ʼ qiymatini o zgartirish mumkin. Har qanday o zgaruvchini ishlatishdan oldin, uni ʼ ʼ e lon qilish lozim. Demak butun sonlardan foydalanish uchun int, haqiqiy ʼ sonlardan foydalanish uchun float, yozuvlarni e lon qilish uchun string va boshqa ʼ ma lumotlarning turlariga qarab o zgaruvchisilar kiritiladi. ʼ ʼ C++ dasturlash tilida o zgarmaslar ʼ . va izohlar O zgarmaslar – deb hisoblash ʼ jarayonida qiymatini o zgartirmaydigan kataliklarga aytiladi. Ular const so zi ʼ ʼ orqali qo llaniladi. Masalan: float const pi = 3.14; Izohlar - programmaning ʼ ma lum qismini tavsiflash uchun ishlatiladi va bu qatorda hech qanday amal ʼ bajarilmaydi, ya ni programmaning biror qismini yaxshiroq tushuntirish uchun ʼ xizmat qiladi. Izoh «/*» va «*/» simvollari orasida beriladi. Bundan tashqari birsatrli izohlardan ham foydalanish mumkin. Buning uchun izoh boshiga «//» belgisi qo yiladi. ʼ C++ dasturlash tilida navbat

Navbat bu shunday tuzilmaki, u elementlar qo’shilishi bilan kengayib boradi va elementlarni faqatgina bir tomondan qabul qiladi. Stekdan farqli holda, navbat tuzilmasi har ikkala tomondan ham ochiq hisoblanadi, lekin element kiritish bir tomondan, chiqarish esa ikkinchi tomonidan amalga oshiriladi. Navbat FIFO(first in first out – birinchi kelgan birinchi ketadi) ko’rinishidagi tuzilmadir. Navbatda ham xuddi stekdagi kabi C++ da alohida kutubxona mavjud. #include Navbatni dasturda e’lon qilish quyidagicha: Queue nav1; Navbat ustida quyidagi amallar bajariladi: - Clear() - navbatni tozalash. - isEmpty() – navbatni bo’shlikka tekshirish - enqueue(el)—el elementni navbatga joylashtirish - dequeue() — navbatdan birinchi elementni olish - firstEl() — navbatning birinchi elementini uni o’chirmasdan qaytaradi Navbatda bajariladigan enqueue va dequeue amallari 4.7 rasmda keltirilgan. Steklardan farqli ravishda navbatlarda o’zgarishlar uning oxirida va boshida bo’lishi nazorat qilinishi lozim. Elementlar navbatga oxiridan joylashtiriladi, olish esa boshidan amalga oshiriladi. Queue (Navbat Queue ham Stack singari chiziqli ma’lumot tuzilmasi bo’lib, hayotdagi oddiy navbat singari ishlaydi. Shu sababli Stackdan farqli o’laroq Queueda eng oxirgi qo’shilgan elementga emas birinchi qo’shilgan elementga birinchi bo’lib “xizmat ko’rsatiladi”. Operatsiyalarni bunday ko’rinishda amalga oshirilishi esa FIFO (First In First Out) deb ataladi. Queueni tasavvur etish uchun quyidagi rasmning o’zi yetarli deb o’ylayman

Queue ustidagi asosiy amallar  Elementni navbat oxiriga qo’shish ( Enqueue )  Elementni navbat boshidan chiqarib olish. Element o’chiriladi ( Dequeue )  Navbat boshidagi elementni ko’rish. Element o’chirilmaydi ( Peek )  Navbatni bo’shlikka tekshirish ( isEmpty ) C++ dasturlash tilida Queue obyektlarini yaratish uchun "queue" nomli sinfni ishlatamiz. Quyidagi C++ kodida Queue sinfini qanday yaratish va uningga elementlar qo'shish va o'chirishni ko'ramiz: #include <iostream> #include <queue> using namespace std; int main() { queue<int> myQueue; myQueue.push(10); // 10 ni Queue ga qo'shamiz myQueue.push(20); // 20 ni Queue ga qo'shamiz cout << "Queue ning ilk elementi: " << myQueue.front() <<endl; myQueue.pop(); // Queue ning birinchi elementini o'chiramiz cout << "Queue ning ilk elementi: " << myQueue.front() <<endl;

return 0; } Bu kodda, std::queue sinfi yaratiladi va unda int turidagi ma'lumotlar saqlanadi. push() metodi orqali ma'lumotlar qo'shiladi, front() metodi orqali birinchi elementni olishimiz mumkin, va pop() metodi orqali birinchi elementni o'chirishimiz mumkin. C++ dasturlash tilida stek. Steklar Stek - chiziqli ma’lumotlar tuzilmasi bo’lib, ma’lumotlarni kiritish va chiqarish uning bir tomonidan amalga oshiriladi. Bunday stek kafeteriyadagi tarelkalar to’plamini eslatadi. Yangi elementlar stekning uchiga qo’yiladi va yuqori qismidan olinadi. Oxirgi qo’yilgan element stek uchidan birinchi bo’lib olinadi. Shu sababli, stek LIFO (last in first out) tuzilishidagi ma’lumotlar tuzilmasi bo’ladi, ya’ni, “oxirgi kelgan birinchi ketadi” prinsipi bo’yicha ishlaydi. Stek o’lchami cheklangan bo’lsa, elementni stekka qo’yilishi stekda kamida bitta elementga joy bo’lgan holdagina amalga oshiriladi. Shuning uchun stek ustida amal bajarishdan oldin stek holatini tekshirish lozim bo’ladi,ya’ni - Stekka element kiritilishidan oldin joy borligini tekshirish; - Stekdan elementni o’chirishdan oldin element borligini tekshirish. Steklar bilan ishlash uchun C++ tilida tayyor kutubxona mavjud bo’lib, unga dastur boshida Stek - chiziqli ma’lumotlar tuzilmasi bo’lib, ma’lumotlarni kiritish va chiqarish uning bir tomonidan amalga oshiriladi. Bunday stek kafeteriyadagi tarelkalar to’plamini eslatadi. Yangi elementlar stekning uchiga qo’yiladi va yuqori qismidan olinadi. Oxirgi qo’yilgan element stek uchidan birinchi bo’lib olinadi. Shu sababli, stek LIFO (last in first out) tuzilishidagi ma’lumotlar tuzilmasi bo’ladi, ya’ni, “oxirgi kelgan birinchi ketadi” prinsipi bo’yicha ishlaydi. Stek o’lchami cheklangan bo’lsa, elementni stekka qo’yilishi stekda kamida bitta elementga joy bo’lgan holdagina amalga oshiriladi. Shuning uchun stek ustida amal bajarishdan oldin stek holatini tekshirish lozim bo’ladi,ya’ni