logo

Bir o`lchovli massivlar steyk . navbat

Загружено в:

15.08.2023

Скачано:

0

Размер:

447.4228515625 KB
BIR O`LCHOVLI 
MASSIVLAR STEYK . 
NAVBAT
VA  ULA R UCHUN  
UMUMI Y  
MA SA LA LA R    R eja:
1.Bir o`lchovli massivlar haqida.
2.Steyk nima ?
3.Navbat nima ?
4.Ularga doir masalalar.
5.Xulosa. 1.BIR O`LCHOVLI MASSIVLAR HAQIDA.

  Agar struktura bir hil kattalikdagi tiplardan tuzilgan bo'lsa, uning nomi massiv 
(array) deyiladi. Massivlar dasturlashda eng ko'p qo'laniladigan ma'lumot tiplaridir. 
Bundan tashqari strukturalar bir necha farqli tipdagi o'zgaruvchilardan tashkil 
topgan bo'lishi mumkin. Buni biz klas (Pascalda record) deymiz. Masalan bunday 
strukturamiz ichida odam ismi va yoshi bo'lishi mumkin. Bu bo'limda biz massivlar 
bilan yaqindan tanishib o'tamiz. Bu bo'limdagi massivlarimiz C uslubidagi, 
pointerlarga (ko'rsatkichlarga) asoslan strukturalardir. Massivlarning boshqa 
ko'rinishlarini keyingi qismlarda o'tamiz.  Massivlar hotirada ketma-ket joylashgan, 
bir tipdagi o'zgaruvchilar guruhidir. Dasturda ikki asosiy tur ma'lumot strukturalari 
mavjuddir. Birinchisi statik, ikkinchisi dinamikdir. Statik deganimizda hotirada 
egallagan joyi o'zgarmas, dastur boshida beriladigan strukturalarni nazarda 
tutamiz. Dinamik ma'lumot tiplari dastur davomida o'z hajmini, egallagan hotirasini

o'zgartirishi mumkin.  Alohida bir o'zgaruvchini ko'rsatish uchun massiv nomi va 
kerakli o'zgaruvchi indeksini yozamiz. C++ dagi massivlardagi elementlar indeksi 
har doim noldan boshlanadi.

Massiv bir o`lchamli deyiladi, agar uning elementiga bir indeks orqali murojaat 
qilish mumkin bo`lsa. 
Bir o`lchamli massivni e`lon qilish quyidagicha bo`ladi:

1) float a[5];

2) int m[6];

3) bool b[10];

Massiv ni e'lon qilish

# include <iostream>

using   namespace   st d ;

int   main (){

     long  a[100],  double  b[100];

     ret urn  0;

} 
1) a elementlari haqiqiy sonlardan iborat bo`lgan, 5 ta elementdan tashkil topgan

massiv. Indekslari esa 0 dan 4 gacha bo`lgan sonlar

float a[5];

Massiv a[0] a[1] a[2] a[3] a[4]

elementilari qiymati 4 -7 15 5.5 3

2) m elementlari butun sonlardan iborat bo`lgan, 6 ta elementdan tashkil topgan

massiv. Indekslari esa 0 dan 5 gacha bo`lgan sonlar.

int m[6];

Massiv m[0] m[1] m[2] m[3] mas2[4] mas2[5]

elementilari qiymati 2 -17 6 7 13 -3

3) b elementlari mantiqiy qiymatlardan (true, false ) iborat bo`lgan 10 ta elementdan tashkil 
topgan massiv. Indekslari esa 0 dan 9 gacha bo`lgan sonlar.

Massiv elementlariga murojaat qilish oddiy o`zgaruvchilarga murojaat qilishdan biroz farq 
qiladi. Massiv elementiga murojaat qilish uning indeksi orqali bo`ladi.

a[1] = 10; a massivining 1 – elementi 10 qiymat o’ zlashtirsin;

cin >> a[2]; a massivining 2 – elementi kirtilsin;

cout << a[3]; a massivining 3 – elementi ekranga chiqarilsin;

Massivni e'lon qilishda uning elementlariga boshlang'ich qiymat berish mumkin va buning bir 
nechta usuli mavjud. 2.STEYK NIMA ?

St ack  bu yana bir  chiziqli ma’lumot tuzilmasi  bo’lib, u ham Linked listning maxsus 
bir ko’rinishi hisoblanadi. Stackda har bir tugunda ma’lumot va o’zidan oldingi 
tugun adresi saqlanadi. Shuning uchun unda faqat oxirgi qo’shilgan ma’lumot 
ustidagina qandaydir amal bajarish mumkin.

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.

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.

Stacklar bilan ishlashda doim eng oxirgi element adresi “esda saqlanadi” va bu 
element ko’pincha  t op  deb ataladi.

St ack  ust idagi 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 ) 3.NAVBAT NIMA ?

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(1)

Queuega dasturiy misollar sifatida printerga narsalarni chop qilishni uzatishni, yoki 
protsessor operatsiyalarni amalga oshirish jarayonini misol keltirish mumkin 
(protsessor ishlashi har doim ham FIFO ga asoslanmaydi). Yanayam qiziqrog’i 
hammamiz yoshligimizda (yoki hozir ham) o’ynashni yaxshi ko’rgan iloncha o’yinini 
Queuega misol qilish mumkin.(2)

Queueda biz ikkita tugun adresini xotirada saqlashimiz kerak bo’ladi. Navbat 
boshida turgan element uchun  front ,  eng oxirgi element uchun  rear  yoki  back .

Que ue  ust idagi 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 ) (1)
(2) •
Rasmda ko'rinib turganidek,  st ek  bu 
obyektlarning ro'yxati bo'lib, eng oxirgi 
qo'shilgan obyekt xar doim birinchi bo'lib 
qaytadi. Masalan, ushbu rasmdagi stekka 
yangi qiymat qo'shilsa  A  bitta pastga tushadi, 
yangi qo'shilgan obyekt "top" o'rinni 
egallaydi. Keyingi murojaat vaqtida aynan 
yangi qo'shilgan obyekt qaytariladi.
•
Ushbu ro'yxatda Stekning tarkibida bo'lgan 
operatsiyalar berilgan.
•
Push(value) stekka yangi qiymat qo'shadi. 
Aytib o'tilganidek, yangi qaiymat "top" o'ringa 
borib tushadi.
•
Pop()eng oxirgi qo'shilgan obyekt qaytariladi 
va stekdan o'chiriladi.
•
Peek()eng oxirgi qo'shilgan qaytariladi leki 
stekdan o'chirilmaydi.
•
IsEmpty() stek bo'shmi? degan savolga 
javobgar metod.
•
Size() stekdagi obyektlar sonini qaytaradi. 4.ULARGA DOIR MASALALAR
O'lchami ko'rsatilgan massivning barcha 
elementlariga boshlang'ich qiymat 0 berish
 
#include <iostream.h>
int main()
{
int a[10] = { 0 };
for (int i = 0; i < 10; i++)
cout << "a[" << i << "]=" << a[i] << endl;
return 0;
} Berilgan massiv elimentlarini yig`indisini topish 
dasturini tuzing
#include <iostream.h>
int main()
{
int s=0;
int a[10] ;
for (int i = 0; i < 10; i++)
{
cout << "a[" << i << "]="; cin >> a[i];
s=s+a[i];
}
cout << "Massivning yig`indisi=" <<s<< endl;
return 0;
}BIR O`LCHAMLI MASSIVLARGA DOIR MISOLLAR YECHISH   STEYKGA DOIR MISOLLAR YECHISH
#incl ude <i ost ream> using namespace st d; int  
main() { 
int  st ek [20]; int  i = -1; 
for (int  j  = 0; j < 6; j++) { int  a;
cin >> a;
i++; 
st ek [i ] = a; } 
if (i == -1) cout  << " St ek  boʻsh" ;
cout  << st ek [i] << "  st ek ning y uqori 
element i" <<endl; cout  << " Yuqori el ement i ni  
oʻchirish" ; 
i--; 
ret urn 0; } using namespace st d; int  mai n()
{ 
st ack  <int > st ek ; // St ek  y arat ish
int  i  = 0;
cout  << " Ist al gan olt i t a son k irit i ng: "  << endl ; 
w hile (i  != 6) 
{
int  a; 
cin >> a;
st ek .push(a); // Sonni st ek k a qoʻshish i ++; 
} 
if (!st ek .empt y ())
cout  << " St ek  boʻsh emas" ; //St ek ni boʻshligini  
t ek shirish 
cout  << " St ek ning y uqori element i: "  << st ek .t op() 
<< endl ; // Eng y uqori element ni chop et ish 
cout  << " Eng y uqori element ni oli b t ashl ash "  << 
endl ; // st ek .pop(); // y uqori element ni oʻchiri sh
cout  << " Bu endi y angi y uqori element : "  << 
st ek .t op(); ret urn 0; 
}  NAVBATGA OID MISOLLAR YECHISH
#include <i ost ream>
#include <queue> // Queue k ut ubxonasini ulash 
using namespace st d;
int  main() { 
queue <int > N ; // Nav bat  y arat ish
cout  << " Yet t it a son k irit ing: "  << endl ; for (int  h = 
0; h < 7; h++) 
{ 
37 
int  a;
ci n >> a;
N.push(a); // N av bat ga element  qoʻshish 
}
cout  << endl ;
cout  << " Eng bi rinchi element i: "  << N.front () << 
endl; N.pop(); // N av bat dan element  oʻchirish
cout  << " Birinchi element : "  << N .front () << endl;
if (!N .empt y ()) cout  << " N boʻsh emas!" ;
ret urn 0; 
}  #incl ude <i ost ream>
#incl ude <queue> // queue k ut ubxonasini ulash 
using namespace st d;
int  main()
{ 
int  N[7];
int  st art  = 0, ends = 0;
cout  << " 7 t a son k iri t ing: "  << endl; for (int  h = 0; h 
< 7; h++) 
{
int  a; 
cin >> a; 
N[ends++] = a; // N av bat ga (massiv ga) element  
qoʻshish } 
cout  << " Eng birinchi element : "  << N[st art ] << 
endl ; 
st art ++;
cout  << " Nav bat ni ng eng ox irgi element i: "  << 
N[ends - 1]; if (st art  != ends) cout  << " Nav bat  
t oʻlgan!" ; 
}  6.XULOSA.
Yuqorida biz bir o`lchovli massivlar , steyk , navbat haqida nazariy malumotlar va 
ularga doir misollarni ko`rib chiqdik.Bular algaritmlashning eng zaruriy 
mavzularidan hisoblanadi.
Xulosa o`rnida bu mavzular , umuman algaritmlash bizga dasturchilik 
faoliyatimizda vaqtdan yutish va samaradorlik uchun zarur 
hisoblanadi.Algaritmlashni o`rganish orqali biz dasturlashning mohiyatini tushunib 
boramiz.

BIR O`LCHOVLI MASSIVLAR STEYK . NAVBAT VA ULA R UCHUN UMUMI Y MA SA LA LA R

R eja: 1.Bir o`lchovli massivlar haqida. 2.Steyk nima ? 3.Navbat nima ? 4.Ularga doir masalalar. 5.Xulosa.

1.BIR O`LCHOVLI MASSIVLAR HAQIDA.    Agar struktura bir hil kattalikdagi tiplardan tuzilgan bo'lsa, uning nomi massiv (array) deyiladi. Massivlar dasturlashda eng ko'p qo'laniladigan ma'lumot tiplaridir. Bundan tashqari strukturalar bir necha farqli tipdagi o'zgaruvchilardan tashkil topgan bo'lishi mumkin. Buni biz klas (Pascalda record) deymiz. Masalan bunday strukturamiz ichida odam ismi va yoshi bo'lishi mumkin. Bu bo'limda biz massivlar bilan yaqindan tanishib o'tamiz. Bu bo'limdagi massivlarimiz C uslubidagi, pointerlarga (ko'rsatkichlarga) asoslan strukturalardir. Massivlarning boshqa ko'rinishlarini keyingi qismlarda o'tamiz.  Massivlar hotirada ketma-ket joylashgan, bir tipdagi o'zgaruvchilar guruhidir. Dasturda ikki asosiy tur ma'lumot strukturalari mavjuddir. Birinchisi statik, ikkinchisi dinamikdir. Statik deganimizda hotirada egallagan joyi o'zgarmas, dastur boshida beriladigan strukturalarni nazarda tutamiz. Dinamik ma'lumot tiplari dastur davomida o'z hajmini, egallagan hotirasini  o'zgartirishi mumkin.  Alohida bir o'zgaruvchini ko'rsatish uchun massiv nomi va kerakli o'zgaruvchi indeksini yozamiz. C++ dagi massivlardagi elementlar indeksi har doim noldan boshlanadi.  Massiv bir o`lchamli deyiladi, agar uning elementiga bir indeks orqali murojaat qilish mumkin bo`lsa.

 Bir o`lchamli massivni e`lon qilish quyidagicha bo`ladi:  1) float a[5];  2) int m[6];  3) bool b[10];  Massiv ni e'lon qilish  # include <iostream>  using namespace st d ;  int main (){      long a[100], double b[100];      ret urn 0;  }

 1) a elementlari haqiqiy sonlardan iborat bo`lgan, 5 ta elementdan tashkil topgan  massiv. Indekslari esa 0 dan 4 gacha bo`lgan sonlar  float a[5];  Massiv a[0] a[1] a[2] a[3] a[4]  elementilari qiymati 4 -7 15 5.5 3  2) m elementlari butun sonlardan iborat bo`lgan, 6 ta elementdan tashkil topgan  massiv. Indekslari esa 0 dan 5 gacha bo`lgan sonlar.  int m[6];  Massiv m[0] m[1] m[2] m[3] mas2[4] mas2[5]  elementilari qiymati 2 -17 6 7 13 -3  3) b elementlari mantiqiy qiymatlardan (true, false ) iborat bo`lgan 10 ta elementdan tashkil topgan massiv. Indekslari esa 0 dan 9 gacha bo`lgan sonlar.  Massiv elementlariga murojaat qilish oddiy o`zgaruvchilarga murojaat qilishdan biroz farq qiladi. Massiv elementiga murojaat qilish uning indeksi orqali bo`ladi.  a[1] = 10; a massivining 1 – elementi 10 qiymat o’ zlashtirsin;  cin >> a[2]; a massivining 2 – elementi kirtilsin;  cout << a[3]; a massivining 3 – elementi ekranga chiqarilsin;  Massivni e'lon qilishda uning elementlariga boshlang'ich qiymat berish mumkin va buning bir nechta usuli mavjud.