logo

MA’LUMOT TUZILMALARI (SERIES, DADAFRAME)

Загружено в:

12.08.2023

Скачано:

0

Размер:

159.2509765625 KB
“ MA ’ LUMOT   TUZILMALARI  ( SERIES ,  DADAFRAME )” Reja
1. Asosiy tushuncha va ta’riflar.
2. Ma’lumotlarni tasvirlash ( ifodalash )  bosqichlari .
3. Ma’lumotlar tuzilmasini klassifikatsiya qilish .
4. Ma’lumotlarni toifalari.
Asosiy tushuncha va ta’riflar
Ma’lumotlar   tuzilmasi   bu   xotirada   tashkil   etiladigan   elementlar   yig’indisi
bo’lib, ular ustida dastur yordamida amallar bajariladi. 
Ma’lumotlar   tuzilmasi   –   bu   bironta   toifaga   tegishli   bo’lgan   va   o’zaro
ma’lum munosabatga ega bo’lgan elementlar to’plamiga aytiladi. 
Ma’lumot  – bironta qiymat yoki qiymatlar to’plami hisoblanadi.Misol uchun
bu   bironta   eksperiment   natijalari,   yoki   talabalarning   imtixon   ballari   bo’lishi
mumkin.
Ma’lumotlar   tuzilmasi   elementi   –   bu   qiymatlar   to’plamining   bir   bo’lagi
hisoblanadi.   Tuzilma   elementi   –   qiymatlar   jamlanmasi   bo’lib,   misol   uchun
talabalarning ismi, sharifi, yoshi har bir fandan olgan bahosi va x.k. larni keltirish
mumkin.
 Elementlar 2 taga bo’linishi mumkin:
- Element sifatida ma’lumotlar guruhi olib qaraladi. Bunda e;lementlar yana
qism   bo’lak;arga   bo’linishi   mumkin.   Masalan,   ota-onalar   maydoni
talabalarning   ota   va   onalari   xaqida   ma’lumot   saqlaydigan   alohida
maydonlardan tashkil topadi.
- Elementar, ya’ni bo’linmas, bunda element qism bo’laklarga ajratilmaydi. 
Ob’ekt   –   bu   xususiyatlar   va   attributlariga   ega   bo’lgan   va   bu   xususiyatlarga
qiymat   qabul   qilishi   mumkin   bo’lgan   tuzilma   hisoblanadi.   Masalan,   talaba   bu
ob’ekt deb qaralishi mumkin tuzilma.
Maydon   –   bu   ob’ektlarning   attributlari   yoki   xususiyatlarini   ifodalovchi
2 tushuncha bo’lib, sonli yoki son bo’lmagan qiymatlarni o’zlashtirishi mumkin.
Yozuv  – bu bironta ob’ektga tegishli turli toifadagi maydonlar to’plamidir.
Fayl -     bu   bir-biriga   bog’liq   bo’lgan   yozuvlar   to’plamidir.   Masalan,   barcha
talabalar xaqidagi yozuvlarni o’z ichiga olishi mumkin,   
Kalit  – bu yozuvdagi maydon bo’lib, aynan shu yozuvni boshqa yozuvlardan
ajratib   turishga   xizmat   qiladi,   uning   qiymati   boshqa   yozuvlarda   takrorlanmas
hisoblanadi.   Ba’zida   bittadan   ko’p   maydonlar   qiymatlari   elementlararo   betakror
bo’lishi   mumkin   va   bunga   karrali   kalit   deyiladi.   Ko’pincha   asosiy   kalit
hisoblanadigan   bitta   maydon   ma’lumoti   ishlatiladi   va   u   boshlang’ich   kalit
deyiladi, qolganlari esa   alternativ kalit   deyiladi. Ba’zida esa yozuvlaning yagona
qiymatlatli   kalit   maydonni   yo’qligi   sababli   kalit   sifatida   bir   nechta   maydonlar
olinadi   va   ularga   tarkibli   kalit   deyiladi.   Eng   yomon   holatda,   ba’zan   shunaqa
bo’lishi   mumkinki,   bironta   maydon   kalit   bo’la   olmasa,   xar   bit   elementga
qo’shimcha, qiymati yagona bo’lgan kalit maydon kiritiladi.
Axborot. Ko’pincha   ma’lumot   va   axborot   tushunchalarini   bir   xil   ma’noda
ishlatishadi.   Lekin   aslida   esa   axborot   bu   ma’lumotga   qaraganda   kengroq
tushunchadir.Axborot   bu   qayta   ishlangan   ma’lumotdir.Ma’lumot   esa   qiymatlar
yig’indisidir, yani bironta yakuniy xulosa bermaydi.Qaror qabul qilishda hali foyda
bermaydi.   Ma’lum   qoidalar   asosida   qayta   ishlangach,   yangi   hosil   qilingan
ma’lumotlar axborotga aylanadi va qaror qabul qilishda foydali hisoblanadi.
Ma’lumotlar   toifasi   –   qandaydir   qiymatlar   yig’indisi   bo’lib,   ular   ustida
ma’lum amallar o’rinli bo’ladi. Ma’lumotlar toifalari dasturda oldindan aniqlangan
yoki foydalanuvchi tomonidan aniqlangan bo’lishi mumkin va quyidagi aspektlarni
nazarda tutadi.
1. Qiymatlar to’plami
2. Amallar to’plami
Misol uchun  int  - butun toifalar va ustida bajariladigan arifmetik amallar(+,-,*,/). 
Ma’lumotlar toifalari 3 turga ajratiladi:
1. Primitiv (sozlangan) toifalar  (ma’lumotlarning sodda toifalari). Oldindan
ma’lum  bo’ladigan, sozlangan toifalar deb ham ataladigan toifalar bo’lib,
3 turli dasturlash tillarida turlicha bo’lishi  mumkin. Masalan, C++ tilida int
(long, short,… ), float(double), char,…
2. Foydalanuvchi   tomonidan   aniqlanadigan   toifalar ,   qachonki   mavjud
sozlangan   toifalar   qo’yilgan   masalani   yechishga   yetarli   bo’lmasa
qo’llaniladi. 
3. Abstrakt   toifalar .   Ma’lumotlar   toifalarining   mantiqiy   xususiyatlarini
aniqlashda   foydali   instrument   hisoblanadi.   “Abstrakt   toifa”   atamasi   bazaviy
matematik tushunchasiga  bog’liq. Ushbu toifalardagi  ma’lumotlar qisman apparat
va   dasturiy   ta’minot   yordamida   tuzilma   sifatida   fizik   amalga   oshirilishi   mumkin.
Biz   abstrakt   toifalarni   matematik   tushuncha   sifatida   aniqlaganimizda,   muhit   va
vaqtiy   munosabatlarni   e’tiborga   olmaymiz.   Bular   amalga   oshirish   masalalari
hisoblanadi.  
Ma’lumotlar tuzilmasi
Ma’lumotlar   turli   yo’lar   asosida   tashkil   etilishi   mumkin,   mantiqiy   yoki
matematik   modelni   tashkil   etilishi   ma’lumotlar   tuzilmasi   deyiladi.   Konkret   bir
ma’lumotlar tuzilmasini tanlash quyidagilarga bog’liq:
- Real voqe’likda elementlararo munosabatni yaqqol ifodalay olishi kerak;
- U   shunday   soda   tuzilishi   kerakki,   zarur   bo’lganda   ustida     samarali   amal
bajarish mumkin bo’lsin.
Ma’lumotlar tuzilmasini o’rganish quyidagilardan iborat:
- Tuzilmani mantiqiy ifodalash;
- Tuzilmani fiizik amalga oshirish;
- Tuzilmani   sifatiy   taxlili,   ya’ni   elementlarni   saqlash   uchun   qancha   xotira
xajmi   sarflanishini   aniqlash   (xotira   sarfi)   va   qayta   ishlashga   ketadigan
vaqtni (vaqt sarfi) xisoblash nazarda tutiladi.
Vaqt   sarfi.   Tuzilma   ustida   amal   bajarish   algoritmini   bajarilish   vaqtini
hisoblash   ko’zda   tutiladi.Buni   hisoblashda   mashxur   katta   “O”   notatsiya
tushunchasi ishlatiladi.
Xotira   sarfi.   Kirish   ma’lumotlarini   inobatga   olmagan   xolda,   ishlatilayotgan
algoritm uchun xotiradan talab qilinadigan qo’shimcha joy sarfi tushuniladi.Bunda
4 xam katta “O” notatsiyasi qo‘llaniladi.
Vaqt va xotira sarfini hisoblash uchun quyidagi yondashuvlar mavjud:
- Katta  O   notatsiya .  f(x)=O(g(n))   deb  belgilanadi,  faqat  va  faqat  shunday
musbat   c   va   m   konstanta   mavjud   bo’lib,   f(n)<=c*g(n)   tengsizlik   o’rinli
bo’lsa, barcha n, n>=m holatlarda. 
Masalan, ushbu funksiyani 3n+2=O(n)deb olish mumkin, chunki 3n+2<=4n, n>=2
tengsizlik o’rinli.
Ushbu   funksiyani6*2 n
+n 2
=O(2 n
)   deb   olish   mumkin,   chunki   6*2 n
+n 2
<=7*2 n
ifoda
o‘rinli,barcha   n>=4   larda.   O(1)   deb   hisoblash   vaqti   o’zgarmas   bo’lgan   holatni
belgilaymiz. O(n 2
) ni kvadratik, O(n 3
) ni kubik, O(2 n
) ni eksponensial deb ataladi.
Agar algoritmni bajarilish vaqti O(log n) bo‘lsa, O(n) ga qaraganda tezkor algoritm
deb hisoblanadi. 
- Omega notatsiya .  f(x) = Ω(g(n)) deb belgilanadi, faqat va faqat shunday
musbat   c   va   m   konstanta   mavjud   bo’lib,   f(n)<=c*g(n)   tengsizlik   o’rinli
bo’lsa, barcha n, n>=m holatlarda. 
Masalan,   3n+2=Ω(n)   deb   belgilash   mumkin,   chunki   3n+2>=3n,   n>=1   tengsizlik
o’rinli.6*2 n
+n 2
=Ω   (2 n
)   deb   olish   mumkin,   chunki   6*2 n
+n 2
>=6*2 n
  ifoda
o‘rinli,barcha n>=1 larda. 
- Teta   notatsiya .   f(x)   =   θ   (g(n))   deb   belgilanadi,   faqat   va   faqat   shunday
musbat   c   va   m   konstanta   mavjud   bo’lib,   c*g(n)<=   f(n)<=c2*g(n)
tengsizlik o’rinli bo’lsa, barcha n, n>=m holatlarda. 
Masalan,   3n+2=   θ   (n)   deb   belgilash   mumkin,   chunki   3n+2>=3n,   n>=1va
3n+2<=4nbarcha n>=2 da tengsizlik o’rinli.  6*2 n
+n 2
=θ (2 n
) deb olish mumkin,
Algoritmlar samaradorligini hisoblash
Algoritmlar   samaradorligini   hisoblashda   kirish   ma’lumotini   qanday   tanlash
ko’rilayotgan   algoritmni   bajarilishiga   yaxshigina   ta’sir   ko’rsatadi.   Masalan,   agar
kirish   ma’lumotlari   allaqachon   saralangan   bo‘lsa,   ba’zi   saralash   algoritmlari   juda
yaxshi   ishlaydi,   ayrimlari   ancha   past   samaradorlik   bilan   ishlashi   mumkin.   Agar
kirish   ma’lumotlari   saralanmagan,   tartibsiz   bo’lsa,   buni   aksi   bo’lishi   mumkin.
5 Shuni e’tiborga olgan holda, algoritmlar taxlil qilinishi kerak.
- Eng yaxshi holat .
Bunda   kirish   ma’lumotlari   algoritm   tez   bajarilishi   uchun   qulay   ko’rinishda
bo‘ladi, ya’ni algoritm kam sonli amallar bilan bajariladi va kam vaqt talab qiladi.
Misol   uchun,   agar   tuzimadan   qidirayotgan   element   tuzilmaning   birinchi   elementi
bo’lib   hisoblansa,   uni   qidirishga   eng   kam   vaqt   sarflanadi.Chunki   tuzilmaning
uzunligidan   qat’iy   nazar   bitta   solishtirish   yetarli.Algoritmlarni   eng   yaxshi
holatlarini   taxlil   qilishda   odatda,   bajarilish   vaqti   konstanta   1   ga   teng   bo‘lishi
sababli ko’pincha taxlillarda bu vaziyat ko’rilmaydi.   
- Eng og’ir holat.
Bunda  kirish  ma’lumotlari   algoritm   bajarilishi  uchum   eng yomon  holatda  bo’ladi
va   juda   sekin   bajariladi.   Eng   og’ir   holat   tahlilda   muxim   hisoblanadi,   chunki   bu
algoritm   bajarilishi   uchun   ketishi   mumkin   bo’lgan   maksimal   vaqtni   tasavvur
qilishimizga sabab bo‘ladi. Misol uchun, qidirilayotgan element tuzilmaning oxirgi
elementi bo’lsa, uni toppish uchun barcha solishtirishlar amalga oshiriladi.
- O’rtacha holat.
Bunda   algoritmning   o’rtacha   ishlash   imkoniyatini   beruvchi   kirish   ma’lumotlari
to’plami olib qaraladi.
Ma’lumotlar tuzilmalari ustida quyidagi amallarni bajarish mumkin:
1. Ko’rikdan   o’tkazish   (traversing)   -     tuzilma   elementlariga   1   martadan
murojaat qilish amali.
2. Kiritish – tuzilmaga yangi element kiritish amali.
3. O’chirish   –   tuzlmadan   bironta   elementni   o’chirish   amali.   Bunda   element
shunday   o’chirilishi   kerakki,   qolgan   elementlar   stabil   holatda   bo’lishi
kerak, ya’ni ayrim tuzilmalarda nosozlik sezilishi kerak emas. 
4. Qidirish – tuzilmadan bironta elementni joylashgan o’rnini aniqlash amali.
5. Saralash – elementlarni ma’lum bir tartibda joylashtirish amali.
6. Birlashtirish (merging) – ikkita tuzilmani birlashtirish amali.
Algoritm. Bironta   masalani   echish   uchun   mo’ljallangan   amallarningma’lum
ketma-ketligi hisoblanadi. Algoritmlar quyidagi tamoyillarga asoslanishi kerak:
6 1. Kiritish  – bo’sh qiymat yoki bir nechta qiymatlarni kiritish mumkin bo’lishi;
2. Chiqarish  – kamida bitta qiymat chiqarilishi;
3. Aniqlik  – xar bir amal aniq va bitta ma’noga ega bo’lishi;
4. Cheklilik –algoritm chekli sondagi amallardan tashkil topishi;
5. Samaradorlilik  – xar bit amal oddiy va soda bo’lishi kerak.
Algoritm   samaradorligining   asosiy   ikkita   o’lchami   b   uvaqt   va   xotira   xajmi
hisoblanadi.  
Ma’lumotlar   tuzilmasi   (MT)   –   informatsion   ob’ektning   umumiy   xossasi
bo‘lib, mazkur xossa bilan biror bir dastur o‘zaro aloqador bo‘ladi. Ushbu umumiy
xossa quyidagilar orqali tavsiflanadi:
1)   mazkur   tuzilmaning   mumkin   (qabul   qilishi   mumkin)   bo‘lgan   qiymatlari
to‘plami;
2) mumkin bo‘lgan amallar (operatsiyalar) majmuasi;
3) tashkil etilganlik tasnifi.
Oddiy ma’lumotlar tuzilmasini ba’zan ma’lumotlar toifalari deb ham ataladi.
Odatda,   ma’lumotlarni   tasniflash   quyidagi   ko‘rinishdagi   bosqichlarga
ajratiladi:
1) abstrakt (matematik) bosqich;
2) mantiqiy bosqich;
3) fizik (jismoniy) bosqich.
Ma’lumki,   ixtiyoriy   ob’ekt,   xodisa   yoki   biror   bir   jarayon   tadqiq
qilinayotganda   uning   modeli   qurib   olinadi.   Model   turlicha   bo‘lishi   mumkin,
masalan,   matematik  model,  fizik  model  va  boshqa  modellar.  Ob’ekt,   xodisa  yoki
biror   bir   jarayonni   matematik   model   qurildi   degani   o‘sha   qaralayotgan   tizimni
ma’lum   bir   matematik   qonuniyatlar   orqali,   ya’ni   matematik   formulalar   orqali
ifodalanishidir.
Mantiqiy   bosqichda   ma’lumotlar   tuzilmasini   biror   bir   dasturlash   tilida
ifodalanishi tushuniladi.
Fizik(jismoniy) bosqichda esa informatsion ob’ektni mantiqiy tavsiflanishiga
mos   ravishda   EXM   xotirasida   akslantirilish   tushiniladi.   EXM   xotirasi   chekli
7 bo‘lganligi sababli, xotirani taqsimlash va uni boshqari muammosi yuzaga keladi.
Yuqoridan   ko‘rinib   turibdiki,   mantiqiy   bosqich   bilan   fizik   bosqichlar   bir
biridan   farq   qiladi.   Shu   sababli,   hisoblash   tizimlarida   mantiqiy   bosqichni   fizik
bosqichga   va   aksincha,   fizik   bosqichni   mantiqiy   bosqichga   akslantirish   muamosi
vujudga keladi.
Bu yerda MMT – mantiqiy ma’lumotlar tuzilmasi; FMT – fizik  ma’lumotlar
tuzilmasi; 
Abstrakt   bosqichda   ihtiyoriy   tuzilmani   <D,R>   juftlik   korinishda   ifodalash
mumkin, bu yerda D – elementlarning chekli to’plami bo’lib, ular, ya’ni elementlar
ma’lumotlar   turlari   yoki     ma’lumotlar     tuzilmasi   bo’lishi   mumkin,   R   –   esa
munosabatlar   to’plami   bo’lib,   mazkur     munosabatlar   hususiyatlari   abstrakt
bosqichda   ma’lumotlar tuzilmalarini turlarini aniqlaydi.
Ma’lumotlar tuzilmasini asosiy ko‘rinishlari (turlari):
1)  To‘plam - munosabat to‘plami bo‘sh R=0 bo‘lgan elementlar majmuasi.
2)   Ketma-ketlik   –   shunday   abstrakt   tuzilmaki,   bunda   R   to‘plam   faqatgina   bitta
chiziqli munosabatdan iborat (ya’ni, birinchi va ohirgi elementdan tashqari har bir
element uchun o‘zidan oldin va keyin keladigan element mavjud.
3)   Matritsa   –   shunday   tuzilmaki,   bunda   R   munosabatlar   to‘plami   ikkita   chiziqli
munosabatdan tashkil topgan bo‘ladi.
8ММТ  ustidagiamallar
ММТ
F МТ  ustida amallar
FMT а kslantirish 4)   Daraxt   –   bunda   R   to‘plam   iyerarxik   tartibdagi   bitta   munosabatdan   tashkil
topgan bo‘ladi.
5)Graf   –   bunda   R   munosabatlar   to‘plami   faqatgina   bitta   binar   tartibli
munosabatdan tashkil topgan bo‘ladi.
6)   Gipergraf   –   bu   shunday   ma’lumotlar   tuzilmasiki,   bunda   R   to‘plam   ikki   yoki
undan ortiq turli tartibdagi munosabatlardan tashkil topgan bo‘ladi.
Foydalanuvchi dasturida va EHM hotirasida MT klassifikatsiya qilish
MT   klassifikatsiya   qilishda   asosiy   belgi   bu   ma’lumotlar   tuzilmasini   dastur
ishlashi   mobaynida   o‘zgarishi   hisoblanadi.   Masalan,   agar   dastur   bajarilishi
mobaynida elementlar soni  va/yoki  ular orasidagi  munosabatlar  o‘zgarsa, u holda
bunday   MT   dinamik   ma’lumotlar   tuzilmasi,   aks   holda   statik   ma’lumotlar
tuzilmasi deyiladi.
Ma’lumotlar tuzilmasiga misollar: 
9Foydalanuvchi dasturida MT 
sozlanganMT  Hosil qilingan MT 
Ma’lumotlar 
toifalari 
(“atomlar”)  Tuzilmaviy MT 
(“molekulalar”)  Chiziqli MT  chiziqsizMT  Ma’lumki,   matematikada   o‘zgaruvchilarni,   ularning   ba’zi   bir   kerakli
tavsiflariga   mos   ravishda   klassifikatsiya   qilish   qabul   qilingan.   O‘zgaruvchilarga
misol   sifatida   quyidagilarni   keltirib   o‘tish   mumkin:   haqiqiy   o‘zgaruvchilar,
kompleks   o‘zgaruvchilar,   mantiqiy   o‘zgaruvchilar,   bundan   tashqari   ba’zi   bir
qiymatlarni   qabul   qiluvchi   o‘zgaruvchilar   va   boshqalar.   Ma’lumotlarni   qayta
ishlashda   ularni   klassifikatsiya   qilish   ham   katta   ahamiyatga   ega.   Bu   yerda   ham
klassifikatsiya   qilinayotganda   har   bir   konstanta,   o‘zgaruvchi,   ifoda   yoki   funksiya
biror bir toifarga tegishli bo‘ladi, degan tamoyilga asoslanadi.    
Umuman   olganda   toifalar   o‘zgaruvchi   yoki   ifoda   qabul   qilishi   mumkin
bo‘lgan qiymatlar to‘plami orqali tavsiflanadi.
Ko‘plab   dasturlash   tillarida   ma’lumotlar   standart   va   foydalanuvchi
tomonidan beriladigan toifalar ga ajratiladi. 
Ma’lumotlarni  standart toifalariga  quyidagi 5 ta tur o‘zgaruvchilari kiradi: 
a) butun (INT);
b) haqiqiy (FLOAT) ;
c) mantiqiy (BOOL);
d) belgili (simvol) (CHAR);
e) ko‘rsatkichli (*). 
Foydalanuvchi tomonidan aniqlanadigan toifalar esa:
a) sanaladigan;
b) diapazonli (oraliqli).
Ma’lumotlarning   ixtiyoriy   toifasi   qiymatlar   sohasi   va   ular   ustida   bajarilishi
mumkin bo‘lgan amallar orqali tavsiflanadi. 
Butun toifa – INT
                   Mazkur toifa butun sonlar to‘plamini qandaydir qism to‘plami bo‘lib,
uning o‘lchami mashina, ya’ni EHM konfiguratsiyasiga  bog‘liq ravishda o‘zgarib
turadi. Agar butun sonni mashinada tasvirlash uchun p ta razryaddan foydalanilsa
(bunda   qo‘shimcha   koddan   foydalanilganda),   u   holda   x   butun   sonning   qiymat
10 qabul   qilish   oralig‘i   quyidagicha   bo‘lishi   zarur,   ya’ni   quyidagi   shartni
qanoatlantirishi lozim: -2 n-1<= x< 2 n-1.
Butun   toifadagi   ma’lumotlar   ustida   bajariladigan   barcha   amallar   to‘g‘ri
amalga   oshiriladi   deb   hisoblanib,   ushbu   amallar   arifmetikada   qabul   qilgan
qoidalariga   bo‘ysunadi.   Agar   ushbu   toifada   amallar   bajarilganda   natija   ruxsat
etilgan   oraliqdan   chiqib   ketsa,   u   holda   hisoblash   to‘xtatiladi.   Bunday   hol   to‘lib
ketish deb ataladi.
Mazkur   toifaga   kiruvchi   sonlar   ikkitaga   bo‘linadi:   ishorali   va   ishorasiz.
Ularning har bir uchun mos ravishda qiymat qabul qilish oralig‘i mavjud: 
a) ishorasiz sonlar uchun (0..2n-1);
b) ishoralilar uchun (-2N-1.. 2N-1-1).
  Sonlar   mashinada   qayta   ishlanayotganda   ularning   ishorali   ko‘rinishidan
foydalaniladi.   Agar   mashina   so‘zi   yozuv,   komandarani   qayta   ishlash   va
ko‘rsatkichlar   uchun   foydalanilayotgan   bo‘lsa,   u   holda   sonning   ishorasiz
ko‘rinishidan foydalaniladi.
Butun   sonlar   ustida   –   qo‘shish,   ayrish,   ko‘paytirish,   butunsonli   bo‘lish
(qoldiqni   tashlab   yuborish   orqali),   berilgan   modul   bo‘yicha   hisoblash   (bo‘lishda
qolgan   qoldiqni   hisoblash),   berilgan   sonlar   to‘plamining   eng   katta   va   eng   kichik
elementini   aniqlash,   butun   darajaga   oshirish,   sonning   qiymatiga   qarab   o‘zidan
oldingi   yoki   keyingi   sonni   aniqlash.   Bu   operatsiyalarning   natijalari   ham   butun
sonlar bo‘ladi.
Butun sonlar ustida ==,!=, <, <=, >, >= operatorlar bilan taqqoslash amallarni
ham   bajarish   mumkin.   Ammo   bu   operatsiyalarning   natijalari   INT   toifasiga
kirmaydi, ular BOOL toifasiga kiradi.
Haqiqiy toifa 
Haqiqiy   toifaga   kasr   qismlari   bor   chekli   sonlar   to‘plami   kiradi.   To‘plamni
11 chekli   bo‘lish   sharti   EXMda   sonlarni   ifodalash   chegaralanganligi   bilan   bog‘liq.
Haqiqiy   sonlar   ustida   quyidagi   amallarni   bajarish   mumkin:   qo‘shish,   ayrish,
bo‘lish,   ko‘paytirish,   trigonometrik   funksiyalarini   xisoblash,   darajaga   oshirish,
kvadrat ildiz chiqarish, logarifmlash, minimum va maksimum  elementlarni topish
va boshqalar. Bularning natijalari ham haqiqiy toifaga kiradi. Bu yerda ham binar
amallarga nisbatan masalaning yechimlari mantiqiy toifaga tegishli bo‘ladi.
EHM   xotirasida   haqiqiy   sonlar   asosan   qo‘zg‘aluvchan   nuqta   formatida
saqlanadi. Bu formatda x haqiqiy son quyidagi ko‘rinishda ifodalanadi: 
x = +/- M * q(+/-P) – soning yarimlogarifmik shakldagi ifodalanishi quyidagi
chizmada keltirilgan.
937,56 = 93756 * 10-2 = 0,93756 * 103
Mantiqiy toifa 
Mazkur   toifa   mantiqiy   mulohazalarni   to‘g‘riligini   aniqlash   uchun,   turli   hil
dasturlash   tillarida   turlicha   ifodalaniladigan   ifodalarni   2   ta   true(1),
false(0)ko‘rinishdaaniqlaydi.   Mantiqiy   ma’lumotlar   ustida   quyidagi   mantiqiy
operatsiyalarni   bajarish   mumkin:   kon’yunksiya   (va),   diz’yunksiya   (yoki)   i   inkor
(yo‘q), hamda qiyinroq bo‘lgan ekvivalentlik, implikatsiya, chiqarib tashlash, yoki
va   boshqa   operatsiyalar.   Yuqorida   keltirilgan   ixtiyoriy   operatsiyaning   natijasi   –
mantiqiy qiymatga ega bo‘ladi. Mantiqiy qiymatni xotirada saqlash uchun bitta bit
yetarli.
Asosiy mantiqiy funksiyalarning chinlik jadvali 
12 Belgili toifa 
Belgili toifaga belgilarning chekli to‘plami yoki liter, ularga lotin alifbosidagi
xarflar va unda yo‘q kirill xarflar, o‘nlik raqamlar, matematik va maxsus belgilar
kiradi.   Belgili   ma’lumotlar   hisoblash   texnikasi   bilan   inson   o‘rtasidagi   aloqani
o‘rnatishda   katta   ahamiyatga   ega.Ko‘pincha,   dasturlashning   har   bir   tizimida
belgilar to‘plami fiksirlangan bo‘lib, ular turli tizimlarda turli hil bo‘lishi mumkin.
Bundan   tashqari   ular   tartiblangan   bo‘lib,   har   bir   uning   elementiga   aniq   bir   sonli
kod   mos   qo‘yilib,   u   to‘plamdagi   tartib   raqamini   aniqlaydi.   Belgini   sonli   kodiga
o‘tib,   relyatsion   operatorlardan   foydalanib,   simvollarni   taqqoslash
mumkin.Bunday taqqoslashlarning natijalari BOOL toifasiga kiradi.
C++   tilida   belgili   toifadan   tashqari   belgilar   massividan   tashkil   topgan   satrli
toifalar bilan ham ishlash mumkin, ya’ni char []. Shu o‘rinda aytib o‘tish kerakki,
satrlar   bilan   ishlashda   belgilar   massividan   tashqari   satrlar   bilan   ishlashga
mo‘ljallangan maxsus kutubxona mavjud bo‘lib, u  “ String “ deb nomlanadi. Satr
(qator,   String)   –   bu   qandaydir   belgilar   ketma-ketligi.   Satr   bitta,   bo‘sh   yoki   bir
nechta belgilar birlashmasidan iborat bo‘lishi mumkin. C++ tilida satr 0 dan to 255
tagacha   uzunlikka   ega   bo‘lishi   mumkin.   Agar   o‘zgaruvchi   satr   toifasiga   tegishli
bo‘lsa,   u   holda   o‘zgaruvchi   toifasi   yozilayotganda   2   xil   ko‘rinishda   char   []   yoki
String deb aniqlanadi.
Belgili toifadagi amallar:
a) O‘zlashtirish;
b) Taqqoslash;
13 Ko‘rsatkichli toifa(Pointer)
Ko‘rsatkichlitoifama’lumotlarni   ko‘rsatkichlari   yoki   manzillari   (adres)
to‘plamini   namoyon   qiladi,   ya’ni   ko‘rsatkichlar   ma’lumotlarni   emas   balki   bu
ma’lumotlar   joylashgan   xotiradagi   manzilni   o‘z   ichiga   oladi.   Ko‘rsatkichlar
xotirada bori yo‘g‘i 4 bayt joyni egallab, u ko‘rsatayotgan ma’lumotlar ancha katta
joyni egallagan bo‘lishi mumkin. Pointer  toifasi  ma’lumoti  ixtiyoriy boshqa biror
ma’lumot   yoki   ma’lumotlar   guruhiga   yo‘naltirilgan   bo‘ladi.   Ko‘rsatkichga
mumkin bo‘lgan u yoki bu qiymatni o‘zlashtirib, ushbu ko‘rsatkich orqali kerakli
ma’lumotga murojatni amalga oshirish mumkin. Pointer toifasidagi ma’lumotlarni
qiymatlar   to‘plamida   bitta   maxsus   qiymat   bo‘lib,   uni   o‘zlashtirish   hech   qayerga
yo‘naltirilmaganligini   ko‘rsatadi,   ya’ni   nol   yoki   bo‘sh   ko‘rsatkich   xisoblanadi.
Masalan, C++ tilida bunday qiymat sifatida NULLdan foydalaniladi.Ko‘rsatkichlar
ustida   amallar   quyidagicha   bo‘lishi   mumkin:   biror   bir   ko‘rsatkichga   boshqa
ko‘rsatkich   qiymatini  o‘zlashtirish   mumkin  yoki  boshqa   ma’lumot  egallab   turgan
xotira   sohasi   adresini   o‘zlashtirish   mumkin.   Ko‘rsatkichlar   o‘zaro   bog‘langan
ma’lumotlar   tuzilmasini   yaratishda   va   qayta   ishlashda   katta   ahamiyatga   ega.
Xotirada ko‘rsatkichlarni ifodalash uchun  asosan dasturlash tizimiga mos ravishda
manzilni   maksimal   uzunligicha   joy   ajratiladi.   Ko‘rsatkichlarni   qiymati   nomanfiy
butun sonlar sifatida sohada bitlarni ketma-ketligi ko‘rinishida saqlanadi.C++ tilida
ko‘rsatkichli o‘zgaruvchilarni e’lon qilish uchun ularning toifasini aniqlash kerak.
Buning uchun ko‘rsatkich xotirada qanaqa toifadagi ma’lumotlarni ko‘rsatayotgan
bo‘lsa, ko‘rsatkichli o‘zgaruvchiga ham xuddi shunday toifa beriladi. 
int a=9;
int *p=&a;
float f=4.6;
float *d=&f;
FILE*f=fopen(“talaba.txt”,’r’);
Foydalanuvchi tomonidan aniqlanadigan toifalar
14 Sanaladigan  toifalar 
Qiymatlarning o‘zgaruvchan toifalari standartlardan farqliroq yangi toifalarni
yaratishga imkon beradi. Bu guruhga sanaladigan va chegaralangan toifalar kiradi. 
Qiymatlarning   sanaladigan   toifalarning   bunday   atalishiga   sabab,   ular   qat’iy
aniqlangan tartibda sanaladigan ko‘rinishda beriladi va xamma qiymatlarning soni
qat’iy   chegaralangan   xamda   ko‘rilayotgan   toifadagi   qiymatlarni   qabul   qilishi
mumkin.   Sanaladigan   toifa   yechilayotgan   masalaga   qarab   foydalanuvchi
tomonidan berilishi mumkin.
Sanaladigan   toifa   konstantalar   ro‘yxatidan   tashkil   topadi.Bu   toifadagi
o‘zgaruvchilar  ro‘yxatidagi  ixtiyoriy  qiymatni  qabul  qilishi   mumkin.  Sanaladigan
toifaning umumiy yozilish shakli quyidagicha: 
enum toifaning nomi {konstantalar ro’yxati};
toifaning nomi o’zgaruvchi nomi;
Buyerda   konstanta   tushunchasifoydalanuvchitomonidanberilaganmaxsus
konstanta   ko‘rinishi   tushuniladi.   Konstantalar   ro‘yxati   bir-biridan   vergul
bilanajratiladi va ular oddiy qavslar ichiga olinadi. 
Masalan:
enum Ranglar{oq, qora, qizil, yashil};
Ranglar   rang;
Buyerda   Ranglar   –   sanaladigan   toifaning   nomi;oq,   qora,   qizil,   yashil-
konstantalar.Rang   -   o‘zgaruvchi   nomi   bo‘lib   u   yuqoridagi   konstantalardan
ixtiyoriysini qabul qilishi mumkin. 
Har bir konstanta tartib raqamiga ega bo‘lib, xisobdan boshlanadi, ya’nioq=0,
qora=1,   qizil=2,   yashil=3raqamlarigaega.   Konstantalar   tartiblangani   uchun   ularga
solishtirish amallari <, <=,==,!=, >=, > shuningdek standart funksiyalarni qo‘llash
mumkin. 
Strukturalar
Strukturalar   turli   toifadagi   maydonlardan   tashkil   topgan   yozuv
xisoblanadi.Strukturalarni   e’lon   qilish   uchun   struct   kalit   so‘zi   ishlatiladi.   Undan
keyin toifaga nom beriladi va {} qavs ichida maydonlar toifalari va nomlari e’lon
15 qilinadi. 
struct G{
charch;
} talaba, talabalar[10];
Ushbu toifadagi o‘zgaruvchiyoki massiv elementi maydonlariga murojaat: 
• Jadval_elementi[indeks].maydon_nomi=qiymat;
• Ya’ni,  talabalar[i].ch=’a’;
16 Statik ma’lumotlar tuzilmasi haqida tushuncha
Kalit   so’zlar :   statik   ma’lumotlar   tuzilmasi,   tuzilma   uzunligi,   xotira,   massivlar,
matrisalar, strukturalar, funksiyalar
Ma’lumotlar tuzilamasi (MT) ni dasturda ifodalashning 2 ta usuli mavjud:
1. Statik MT.   Bunday tuzilmalar  uzunligi  (elementlar  soni)  oldindan aniqlangan
bo’ladi   va   dastur   bajarilish   mobaynida   o’zgarmas   hisoblanadi.   Elementlar
orasidagi  munosabatlar  ham o‘zgarmas bo’ladi.   Bunday tuzilmalar elementlar
soni   ma’lum   va   o’zgarmas   bo’lgan   masalalarda   yaxshi   qo’l   keladi.   Statik
tuzilma elementlariga qanday qiymat berilsa berilaveradi, ammo tuzilma uchun
ajratilgan xotira xajmi o’zgartirilmaydi.  
2. Dinamik   MT.   Bu   tuzilmalar   elementlar   soni   oldindan   ma’lum   bo’lmagan
xollarda   qo’llaniladi.   Bunda   elementlar   soni   dastur   bajarilishi   mobaydina
o’zgaruvchan   hisoblanadi.   Ammo   imkoni   bo’lsa,   dasturchi   xotirada
ziddiyatlarga duch kelmaslik uchun tuzilma o’lchamini oldindan aniqlasa ham
bo’ladi. 
Quyida statik va dinamik tuzilmalar qiyosi keltirilgan.
Dinamik tuzilmalar Statik tuzilmalar
Elementlar   xotirada   tarqoq   xolda
joylashishi mumkin. Elementlar   xotiraja   ketma-ket
yachseykalarda joylashadi.
Elementlar   soni   cheklanmagan.   Ajar
xotirada   fizik   joy   mavjud   bo’lsa,
element kiritilishi mumkin.  Elementlar   soni   cheklangan.   Dastur
bajarilishi   mobaynida   tuzilma
uzunligini o’zgartirib bo’lmaydi. 
Tuzilma   elementlarida   indeks   degan
tushuncha   yo’q.   Tuzilmaning   istalgan
joyiga   element   kiritish   va   o’chirish
amallari   oson   bajariladi.   Lekin   ba’zi
amallar   qiyin   bajariladi.   Chunki
elementlar   orasida   qat’iy   ketma-ketlik Tuzilmada   indeks   degan   tushuncha
mavjud.   Shu   sababli   saralash   amalini
bajarish   oson.   Lekin   eng   og’ir   holatni
olib   qaraydigan   bo’lsak,   tuzilma
boshiga   yangi   element   kiritish   va
o’chirish amalini bajarish noqulay. 
17 mavjud. 
 Statik MT ga quyidagilarni kiritish mumkin:
1. Massivlar
2. Yozuvlar
3. Jadvallar
Massivlar
Massiv   bir   toifadagi   elementlarning   tartibli   ketma   –   ketligi   hisoblanadi.
Massiv bironta nom va undagi elementlar toifasi orqali ifodalanadi. 
Massivlar: 
- bir o’lchamli
- ikki o’lchamli 
- ko’p o’lchamli 
bo’lishi   mumkin.   1   o’lchamli   massivlar   sodda   bo’lib,   undagi   xar   bir   element
xotirada   ketma-ket   joylashadi.   Uning   uchun   xotiradan   joy   ajratilganda   xar   bir
elementiga   massivning   toifasidan   kelib   chiqib   sarflanadigan   xotira   xajmi
elementlar soniga ko’paytiurilib topiladi.  
A
0 A
1 A
2 … A
n 
Masalan,   int   a[n]   massiv   qaraladigan   bo’lsa,   uning   bitta   elementiga   4   bayt   joy
ketadigan   bo’lsa,   massiv   uchun   ajratiladigan   xotira   sarfi   4*n   bayt   shaklida
hisoblanadi.
H=∑i=1
n	
h            
H – bu massivga sarflanadigan xotira xajmi;
h – bu 1ta elementga ajratiladigan xotira xajmi
Ikki   o’lchamli   massivlarda   bir   nechta   qator   va   bir   nechta   ustunlar   mavjud
bo’ladi.  Ustun va qatorlar kesishgan joyda massivning elementi joylashgan bo’ladi
u elementni massivning qator va ustun raqami bilan aniqlanadi. Masalan, beshinchi
qator va uchinchi ustunda turgan B matritsaning elementi  B[5][3]  kabi belgilanadi.
Massivlar ustida matematik amallarni bajarish mumkin.
Ikki o’lchovli massivlarni matrisalar deb ham atashadi. Matrisalar ham statik
18 tuzilma hisoblanadi. 
Chunki   uni  dasturda  ifodalaganda,  o’lchamini   ko’rsatish  kerak.  Dastur  ishga
tushishidan oldin matrisaning satr va ustunlar soni va toifasini aniqlanishidan kelib
chiqib kompyuter uning uchun xotiradan joy ajratadi. Matrisa elementlari xotirada
ketma-ket   yacheykalarda   joylashtiriladi,   garchi   uning   alohida   satr   elementlari
mantiqan   quyidagicha   keltirilsada,   bitta   satr   elementlari   xotirada   ketma-ket
joylashtirilgandan keyin uning davomidan ikkinchi qator elementlari joylashtiriladi
va uchunchi va x.k. 
A
00 A
01 A
02 … A
0m  A
10 A
11 A
12 … A
1m  A
20 A
21 A
22 … A
2m
Undan   tashqari   ma’lumotlar   tuzilmasi   sifatida   massivlar   ustida   boshqa
maxsus   amallarni   ham   bajarish   mumkin.   Dasturda   massiv   ustida   ishlash   uchun
avval uning toifasi va  o’lchami e’lon qilinadi. Massivni e’lon qilish ikki xil usulda
amalga oshirilishi mumkin.
1. Initsializatsiya   qilmasdan   e’lon   qilish   –   bu   holda   massiv   toifasi   va   nomi
ko’rsatilib kvadrat qavs ichida uning elementlari soni ko’rsatiladi:  int A[50].
2. Initsializatsiya qilish orqali e’lon qilish – bu holda massiv toifasi ko’rsatilib
elementlariga qiymat o’zlashtiriladi. Masalan,  A[5]={1,2,3,5,4}
Massiv   elementlari   bir   toifaga   tegishli   bo’lgani   uchun   ular   hotiradan   bir   xil
hajmli   joyni   egallaydi   va   ular   operativ   hotirada   joylashadi.   Massiv   dasturda
foydalanilayotgan o’rniga qarab global yoki lokal bo’lishi mumkin. 
Global turda bo’lganda dasturni boshida, ya’ni asosiy dastur tanasidan oldin,
int main()   dan oldin e’lon qilinadi, lokal turda esa dasturni kerakli qismida e’lon
19A
00 A
01 A
02 … A
0m 
A
10 A
11 A
12 … A
1m 
A
20 A
21 A
22 … A
2m 
… … … …
… 
A
n0 A
n1 A
n2 … A
nm  qilinadi.   Lokal   massivdan   foydalanilganda   uni   chegaralari   dastur   davomida
aniqlanadi va qism dasturdan tashqarida bu massivdan foydalanib bo’lmaydi. 
Quyida   matritsa   quyi   uchburchak   elementlarini   aniqlab   ularni   no’lga
aylantiruvchi dastur kodi keltirilgan(C++ tilida ):
int main()
{ int n,m,i,j;
cin>>n>>m;
int a[n][m];
cout<<"kiriting:  "<<endl;
for(i=0;i<n;i++){
for(j=0;j<m;j++)
cin>>a[i][j];}
for(i=0;i<n;i++){
    for(j=0;j<m;j++)
         if(i>j) a[i][j]=0;}     
     for(i=0;i<n;i++){
for(j=0;j<m;j++){
    cout<<a[i][j]<<" ";}
cout<<endl;}    
    return 0;
    getch();
}
Dastur natijasi:
20 Yozuvlar
Yozuvlar   –   bu   turli   toifadagi   maydonlar   yig’indisidir.   Maydon   –   bu   bironta
nom   va   toifaga   ega   bo’lgan   tuzilmadir   (o’zgaruvchi).   Yozuv   bu   statik   tuzilma
hisoblanadi.   Chunki   yozuvning   maydonlari   xotirada   ketma-ket   yacheykalarga
joylashtiriladi.   Yozuv   uchun   xotiradan   joy   uning   maydonlari   toifalaridan   kelib
chiqib ajratiladi, ya’ni xar bir maydonga sarflanadigan joylar yig’indisi olinadi.
tartir nomeri  talaba ‘fio’si adres balli 
   int i
 (4 bayt) char
FIO[30]
(30 bayt) char
adres[20] 
(20 bayt) float ball
 (4 bayt)
Bu yerda ushbu tuzilmaga 4+30+20+4=58 bayt xotiradan joy ajratiladi. Yozuvlarni
dasturda  ifodalash:
struct Talaba{
int i;
     char fio[30];
char adres[20];
float ball;
}
Yuqorida   biz   yozuv   toifasini   e’lon   qildik.   Bu   foydalanuvchi   tomonida
aniqlanadigan toifa hisoblanadi. Endi shu toifadagi o’zgaruvchini e’lon qilishimiz
mumkin. 
Talaba t1;
  Bu   yerda   endi   t1   nomli   talabaning   yuqorida   keltirilganidek   maydonlardan
iborat   yozuv   paydo  bo’ldi.  Uning   maydonlariga   murojaat   qilish   va   qiymat   berish
quyidagicha amalga oshiriladi.
t1.fio = ”Narzulloyev Jaloliddin”;
Yozuvlar ustida turli amallarni bajarish mumkin.
21 - Maydonlariga qiymat o’zlashtirish
- Solishtirish
- Maydonlarining   toifasidan   kelib   chiqqan   xolda   maydonlar   ustida   amal
bajarish mumkin.
Quyida   ba’zi   bir   misollarni   keltiramiz,   unda   myCar   nomli   yozuivning
maydonlariga qiymatlar o’zlashtiriladi:
struct Car
{ 
        int x_coor; 
        int y_coor; 
        string name;
};
Car myCar;
myCar.x_coor = 40;
myCar.y_coor = 40;
myCar.name = "Porche";
Yozuvlar bilan ishlashga doir to’liq dastur matnini keltiramiz:
#include <iostream>
using namespace std;
struct PlayerInfo {
        int skill_level;
        string name;
};
using namespace std;
int main() {
    PlayerInfo players[5];
        for (int i = 0; i < 5; i++) {
                cout << "Please enter the name for player : " << i << '\n'; 
                cin >> players[ i ].name;
                cout << "Please enter the skill level for " << players[ i ].name << '\n';
22                 cin >> players[ i ].skill_level;        
}
        for (int i = 0; i < 5; ++i) {
        cout << players[ i ].name << " is at skill level " << players[i].skill_level << '\
n';
        }
}
Ko’pincha   funksiyalar   bilan   ishlaganda   strukturalarni   funksiyalarning
argument   sifatida   uzatishga   to’g’ri   keladi   yoki   strukturalarni   funksiyada
qaytarishga extiyoj tug’iladi. Bunday hollarda quyidagicha yondashish mumkin.
struct EnemySpaceShip 
{ 
        int x_coordinate;
        int y_coordinate;
        int weapon_power;
}; 
EnemySpaceShip getNewEnemy(){ 
        EnemySpaceShip ship;
        ship.x_coordinate = 0;
        ship.y_coordinate = 0;
        ship.weapon_power = 20;
        return ship;
}
   Bu   yerda   funksiya   ship   nomli   local   yozuv   nusxasini   yaratadi   va
maydonlarga   qiymatlar   beriladi.   Endi   yangi   o’zgaruvchini   xosil   qilish   uchun
quyidagini keltirish mumkin:
EnemySpaceShip ship = getNewEnemy();  
Bu o’zgaruvchini funksiyaga uzatish mumkin:
EnemySpaceShip upgradeWeapons (EnemySpaceShip ship)
{ 
23         ship.weapon_power += 10;
        return ship;
}
O’zgaruvchi maydonlariga o’zgartirish kiritilgach, uni albatta funksiyada qaytarish
kerak, aks holda u qilingan o’zgarish yo’qolishi mumkin. 
Quyida shu misolni to’liq dastur matnini keltiramiz;
struct EnemySpaceShip {
        int x_coordinate;
        int y_coordinate;
        int weapon_power;
};
EnemySpaceShip getNewEnemy() {
        EnemySpaceShip ship;
        ship.x_coordinate = 0;
        ship.y_coordinate = 0;
        ship.weapon_power = 20;
        return ship;
}
EnemySpaceShip upgradeWeapons(EnemySpaceShip ship) {
        ship.weapon_power += 10;
        return ship;
}
  int main() {
        EnemySpaceShip enemy = getNewEnemy();
        enemy = upgradeWeapons(enemy);
}
Bundan tashqari strukturalarga ko’rsatkichlar xam yaratish mumkin:
#include <iostream>
using namespace std;
struct xampl {
24         int x;
};
int main(){
        xampl structure;
        xampl *ptr;
        structure.x = 12;
        ptr = &structure;
        cout<< ptr->x;
        cin.get();
}
Jadvallar
Jadval   -   bu   yozuvlarning   chekli   to’plamidir.   Jadval   ham   statik   tuzilma
bo’lib,   uning   elementlari   bir   xil   toifaga   ega.   Jadval   yozuvlar   massividan   tashkil
topadigan tuzilma hisoblanadi.
Uni yuqoridagi misoldan foydalanib dasturda quyidagicha idodalaymiz:
EnemySpaceShip name[20];
Bu yerda name nomli 20 ta elementdan iborat massiv yaratildi va uning elementlari
EnemySpaceShip struktura ko’rinishida bo’ladi. Xar bir elementning 
int  x_coordinate;
          int y_coordinate;
          int weapon_power;
kabi   maydonlari   mavjud.   Jadvalni   bironta   qatoriga   murojaat   massiv   elementiga
mos   indeksi   orqali   va   undan   keyin   aynan   kerakli   maydoniga   (.)   nuqta   bilan
murojaat  amalga oshiriladi.
int  x_coordinate int y_coordinate int weapon_power
Name[0] Name[o].   x_coordinate=35 Name[o].   y_coordinate=15 Name[o]. weapon_power  =12
Name[1] Name[1].   x_coordinate=45 Name[1].   y_coordinate=42 Name[1]. weapon_power  =3
25 …
Misol . Funksiyalar  bilan ishlashda  jadvallarni kirish argument  sifatida ishlatishga
to’g’ri keladi. Quyida ana shunday holatga misol keltiramiz.
#include<iostream>
using namespace std;
struct Size 
{
int breast; 
int waist;    
int hips;    
 };
struct WonderfulWoman{
          char name[64];
int age;
int height;
int weight;
Size volume;    
bool engKnowledge;
};
void showData(const WonderfulWoman Obj[], int amount);
  int main(){
const int amountOfGirl = 7;
WonderfulWoman Woman[amountOfGirl] = {};
  for (int i = 0; i < amountOfGirl; i++){
cin.getline(Woman[i].name, 32);
cin >> Woman[i].age;
cin >> Woman[i].height;
cin >> Woman[i].weight;
cout << "english(1 - yes, 0 - no): ";
cin >> Woman[i].engKnowledge;
cin >> Woman[i].volume.breast;
cin >> Woman[i].volume.waist;
26 cin >> Woman[i].volume.hips; 
cin.get();
cout << endl;   
} 
  showData(Woman, amountOfGirl);
  return 0;
}
  void showData(const WonderfulWoman Obj[], int amount){
for (int i = 0; i < amount; i++){ 
cout << i + 1 << '\t' << Obj[i].name << '\t' << Obj[i].age<< '\t' << Obj[i].height <<
'\t' << Obj[i].weight << '\t'<< Obj[i].volume.breast << '/' << Obj[i].volume.waist <<
'/' << Obj[i].volume.hips<< '\t' << Obj[i].engKnowledge << endl;
 } 
 }
Bu   yerda   bitta   strukturaning   ichidagi   maydon   o’z   navbatida   boshqa   strukturaga
tegishli   o’zgaruvchi   olingan.   Bunday   yozuvlarga   murakkab   yozuvlar   deyiladi,
ya’ni  yozuvning  elementlarini  o’zi  ham  yozuv hisoblanadi.  Bu holatda murakkab
ierarxik MT vujudga keladi. 
Jadval   ustida   massiv   ustida   bajariladigan   amallar   o’rinli,   lekin   jadval
elementiga emas, elementi maydoniga qiymat beriladi.
- Element kiritish, o’chirish
- Element maydoni qiymatlarini o’zgartirish
27 Otasining 
ismiismifamiliyasi talaba
Tartib 
nomeri
Talaba 
FIO Talaba 
guruhi        - Jadval   elementlarini   solishtirish,   bunda   2   ta   yozuvning   mos   maydonlari
qiymatlari solishtiriladi.  
Asosiy adabiyotlar
1. Data   structure   and   algorithms.   Made   easy   guide.   Fast   track   student
edition. 2014. Chapter 1,2,3.
2. AdamDrozdek.   Data   structure   and   algorithms   in   C++.   Fourthedition.
2013. Chapter1
3. SedjvikRobert. Fundamentaln ы ye algoritm ы  na S++. 2001.  Glava 3,4.
4. StefanR.Devis. C++ dlya chaynikov.  2003, Dialektika.  Glava 8, 9.
5. DinmanM.I.   C++   osvoynaprimerax.   SPb.   BXV-Peterburg.   2006.   Glava
2.2
6. O.J.   Dahl,   E.W.   Dijkstra.   Structured   programming.   Academik   press.
NewYork and London. 1972. Chapter2.
Asosiy internet manbalar
1. https://play.google.com/books/reader?   
id=jnnCAwAAQBAJ&printsec=frontcover&output=reader&hl=ru&pg=
GBS.PA8
2. http://www.teachct.com/as_as_computing/ocr/H447/F453/3_3_5/   
data_structures/miniweb/pg3.htm
3. http://purecodecpp.com/archives/category/strukturi_c   
4. http://cppstudio.com/post/5377/   
5. http://easy-code.ru/lesson/structures-in-cpp   
6. http://www.cprogramming.com/tutorial/lesson7.html   
28

“ MA ’ LUMOT TUZILMALARI ( SERIES , DADAFRAME )”

Reja 1. Asosiy tushuncha va ta’riflar. 2. Ma’lumotlarni tasvirlash ( ifodalash ) bosqichlari . 3. Ma’lumotlar tuzilmasini klassifikatsiya qilish . 4. Ma’lumotlarni toifalari. Asosiy tushuncha va ta’riflar Ma’lumotlar tuzilmasi bu xotirada tashkil etiladigan elementlar yig’indisi bo’lib, ular ustida dastur yordamida amallar bajariladi. Ma’lumotlar tuzilmasi – bu bironta toifaga tegishli bo’lgan va o’zaro ma’lum munosabatga ega bo’lgan elementlar to’plamiga aytiladi. Ma’lumot – bironta qiymat yoki qiymatlar to’plami hisoblanadi.Misol uchun bu bironta eksperiment natijalari, yoki talabalarning imtixon ballari bo’lishi mumkin. Ma’lumotlar tuzilmasi elementi – bu qiymatlar to’plamining bir bo’lagi hisoblanadi. Tuzilma elementi – qiymatlar jamlanmasi bo’lib, misol uchun talabalarning ismi, sharifi, yoshi har bir fandan olgan bahosi va x.k. larni keltirish mumkin. Elementlar 2 taga bo’linishi mumkin: - Element sifatida ma’lumotlar guruhi olib qaraladi. Bunda e;lementlar yana qism bo’lak;arga bo’linishi mumkin. Masalan, ota-onalar maydoni talabalarning ota va onalari xaqida ma’lumot saqlaydigan alohida maydonlardan tashkil topadi. - Elementar, ya’ni bo’linmas, bunda element qism bo’laklarga ajratilmaydi. Ob’ekt – bu xususiyatlar va attributlariga ega bo’lgan va bu xususiyatlarga qiymat qabul qilishi mumkin bo’lgan tuzilma hisoblanadi. Masalan, talaba bu ob’ekt deb qaralishi mumkin tuzilma. Maydon – bu ob’ektlarning attributlari yoki xususiyatlarini ifodalovchi 2

tushuncha bo’lib, sonli yoki son bo’lmagan qiymatlarni o’zlashtirishi mumkin. Yozuv – bu bironta ob’ektga tegishli turli toifadagi maydonlar to’plamidir. Fayl - bu bir-biriga bog’liq bo’lgan yozuvlar to’plamidir. Masalan, barcha talabalar xaqidagi yozuvlarni o’z ichiga olishi mumkin, Kalit – bu yozuvdagi maydon bo’lib, aynan shu yozuvni boshqa yozuvlardan ajratib turishga xizmat qiladi, uning qiymati boshqa yozuvlarda takrorlanmas hisoblanadi. Ba’zida bittadan ko’p maydonlar qiymatlari elementlararo betakror bo’lishi mumkin va bunga karrali kalit deyiladi. Ko’pincha asosiy kalit hisoblanadigan bitta maydon ma’lumoti ishlatiladi va u boshlang’ich kalit deyiladi, qolganlari esa alternativ kalit deyiladi. Ba’zida esa yozuvlaning yagona qiymatlatli kalit maydonni yo’qligi sababli kalit sifatida bir nechta maydonlar olinadi va ularga tarkibli kalit deyiladi. Eng yomon holatda, ba’zan shunaqa bo’lishi mumkinki, bironta maydon kalit bo’la olmasa, xar bit elementga qo’shimcha, qiymati yagona bo’lgan kalit maydon kiritiladi. Axborot. Ko’pincha ma’lumot va axborot tushunchalarini bir xil ma’noda ishlatishadi. Lekin aslida esa axborot bu ma’lumotga qaraganda kengroq tushunchadir.Axborot bu qayta ishlangan ma’lumotdir.Ma’lumot esa qiymatlar yig’indisidir, yani bironta yakuniy xulosa bermaydi.Qaror qabul qilishda hali foyda bermaydi. Ma’lum qoidalar asosida qayta ishlangach, yangi hosil qilingan ma’lumotlar axborotga aylanadi va qaror qabul qilishda foydali hisoblanadi. Ma’lumotlar toifasi – qandaydir qiymatlar yig’indisi bo’lib, ular ustida ma’lum amallar o’rinli bo’ladi. Ma’lumotlar toifalari dasturda oldindan aniqlangan yoki foydalanuvchi tomonidan aniqlangan bo’lishi mumkin va quyidagi aspektlarni nazarda tutadi. 1. Qiymatlar to’plami 2. Amallar to’plami Misol uchun int - butun toifalar va ustida bajariladigan arifmetik amallar(+,-,*,/). Ma’lumotlar toifalari 3 turga ajratiladi: 1. Primitiv (sozlangan) toifalar (ma’lumotlarning sodda toifalari). Oldindan ma’lum bo’ladigan, sozlangan toifalar deb ham ataladigan toifalar bo’lib, 3

turli dasturlash tillarida turlicha bo’lishi mumkin. Masalan, C++ tilida int (long, short,… ), float(double), char,… 2. Foydalanuvchi tomonidan aniqlanadigan toifalar , qachonki mavjud sozlangan toifalar qo’yilgan masalani yechishga yetarli bo’lmasa qo’llaniladi. 3. Abstrakt toifalar . Ma’lumotlar toifalarining mantiqiy xususiyatlarini aniqlashda foydali instrument hisoblanadi. “Abstrakt toifa” atamasi bazaviy matematik tushunchasiga bog’liq. Ushbu toifalardagi ma’lumotlar qisman apparat va dasturiy ta’minot yordamida tuzilma sifatida fizik amalga oshirilishi mumkin. Biz abstrakt toifalarni matematik tushuncha sifatida aniqlaganimizda, muhit va vaqtiy munosabatlarni e’tiborga olmaymiz. Bular amalga oshirish masalalari hisoblanadi. Ma’lumotlar tuzilmasi Ma’lumotlar turli yo’lar asosida tashkil etilishi mumkin, mantiqiy yoki matematik modelni tashkil etilishi ma’lumotlar tuzilmasi deyiladi. Konkret bir ma’lumotlar tuzilmasini tanlash quyidagilarga bog’liq: - Real voqe’likda elementlararo munosabatni yaqqol ifodalay olishi kerak; - U shunday soda tuzilishi kerakki, zarur bo’lganda ustida samarali amal bajarish mumkin bo’lsin. Ma’lumotlar tuzilmasini o’rganish quyidagilardan iborat: - Tuzilmani mantiqiy ifodalash; - Tuzilmani fiizik amalga oshirish; - Tuzilmani sifatiy taxlili, ya’ni elementlarni saqlash uchun qancha xotira xajmi sarflanishini aniqlash (xotira sarfi) va qayta ishlashga ketadigan vaqtni (vaqt sarfi) xisoblash nazarda tutiladi. Vaqt sarfi. Tuzilma ustida amal bajarish algoritmini bajarilish vaqtini hisoblash ko’zda tutiladi.Buni hisoblashda mashxur katta “O” notatsiya tushunchasi ishlatiladi. Xotira sarfi. Kirish ma’lumotlarini inobatga olmagan xolda, ishlatilayotgan algoritm uchun xotiradan talab qilinadigan qo’shimcha joy sarfi tushuniladi.Bunda 4

xam katta “O” notatsiyasi qo‘llaniladi. Vaqt va xotira sarfini hisoblash uchun quyidagi yondashuvlar mavjud: - Katta O notatsiya . f(x)=O(g(n)) deb belgilanadi, faqat va faqat shunday musbat c va m konstanta mavjud bo’lib, f(n)<=c*g(n) tengsizlik o’rinli bo’lsa, barcha n, n>=m holatlarda. Masalan, ushbu funksiyani 3n+2=O(n)deb olish mumkin, chunki 3n+2<=4n, n>=2 tengsizlik o’rinli. Ushbu funksiyani6*2 n +n 2 =O(2 n ) deb olish mumkin, chunki 6*2 n +n 2 <=7*2 n ifoda o‘rinli,barcha n>=4 larda. O(1) deb hisoblash vaqti o’zgarmas bo’lgan holatni belgilaymiz. O(n 2 ) ni kvadratik, O(n 3 ) ni kubik, O(2 n ) ni eksponensial deb ataladi. Agar algoritmni bajarilish vaqti O(log n) bo‘lsa, O(n) ga qaraganda tezkor algoritm deb hisoblanadi. - Omega notatsiya . f(x) = Ω(g(n)) deb belgilanadi, faqat va faqat shunday musbat c va m konstanta mavjud bo’lib, f(n)<=c*g(n) tengsizlik o’rinli bo’lsa, barcha n, n>=m holatlarda. Masalan, 3n+2=Ω(n) deb belgilash mumkin, chunki 3n+2>=3n, n>=1 tengsizlik o’rinli.6*2 n +n 2 =Ω (2 n ) deb olish mumkin, chunki 6*2 n +n 2 >=6*2 n ifoda o‘rinli,barcha n>=1 larda. - Teta notatsiya . f(x) = θ (g(n)) deb belgilanadi, faqat va faqat shunday musbat c va m konstanta mavjud bo’lib, c*g(n)<= f(n)<=c2*g(n) tengsizlik o’rinli bo’lsa, barcha n, n>=m holatlarda. Masalan, 3n+2= θ (n) deb belgilash mumkin, chunki 3n+2>=3n, n>=1va 3n+2<=4nbarcha n>=2 da tengsizlik o’rinli. 6*2 n +n 2 =θ (2 n ) deb olish mumkin, Algoritmlar samaradorligini hisoblash Algoritmlar samaradorligini hisoblashda kirish ma’lumotini qanday tanlash ko’rilayotgan algoritmni bajarilishiga yaxshigina ta’sir ko’rsatadi. Masalan, agar kirish ma’lumotlari allaqachon saralangan bo‘lsa, ba’zi saralash algoritmlari juda yaxshi ishlaydi, ayrimlari ancha past samaradorlik bilan ishlashi mumkin. Agar kirish ma’lumotlari saralanmagan, tartibsiz bo’lsa, buni aksi bo’lishi mumkin. 5