logo

DOIMIY MA’LUMOTLAR STRUKTURASI

Yuklangan vaqt:

08.08.2023

Ko'chirishlar soni:

0

Hajmi:

517.9794921875 KB
“DOIMIY MA’LUMOTLAR STRUKTURASI” MAVZUSIDA
YOZGAN
KURS  ISHI
SAMARQAND – 2021                                                       Mundarija:
KIRISH………………………………………………………………….3
ASOSIY QISM………………………………………………….………4
Ma lumotlar tuzilmasiʼ .............................................................................4
Ma’lumot turlari…………………………………….………………….6
Fundamental ma’lumot turlari…………………………….….……….6
Murakkab ma’lumot turlari……………………………….….……….9
Ma’lumot strukturalari………………………………………….…….20
Statik ma’lumot strukturalari……………………………………..….24
Dinamik ma’lumot strukturalari………………………………….….24
Xulosa……………………………………………………………….….25
Foydalanilgan adabiyotlat ro’yhati………………………………..….26          Kirish  
Doimiy   malumotlar   strukturasi   ma'lumotlar   strukturasining   barqarorligi   -   bu
ma'lumotlar   strukturasining   tarixiy   holatini   saqlab   qolish,   shunda   biz   ilgari
bajarilgan   operatsiya   natijalarini   tezda   topishimiz   mumkin.   Albatta,   bu   muqarrar
ravishda vaqt va makonni sezilarli darajada yo'qotishga olib keladi, shuning uchun
yuqori   chidamlilik   vaqt   va   makonning   murakkabligini   kamaytirish   uchun
ma'lumotlar strukturasining tarixiy holatida o'xshash qismlardan to'liq foydalanish
imkonini beradi. 
     Shubhasiz, juda oddiy va doimiy ishora bor: ma'lumotlar strukturasidagi har bir
tugun   uchun   ma'lumotlar   strukturasini   (masalan,   B-daraxt   yoki   STL   tuzilmalari)
kiriting   va   keyin   tarixiy   holatni   saqlab   qolish   uchun   vaqtni   kalit   so'z   sifatida
ishlating.Doimiy   ma'lumotlar   strukturasi   ma'lum   bir   ma'lumotlar   strukturasiga
oldingi   tarixiy   versiyaga   doimiy   kirish   imkoniyatini   berish   uchun   mo'ljallangan,
lekin   ayni   paytda   doimiy   qator   segmenti   daraxti   kabi   tarixiy   versiyadan
ma'lumotlar   strukturasining   yangi   versiyasini   yaratishi   va   to'plamni   tasdiqlashi
jarayoni.   Ma'lumotlar   strukturasi   -   bu   hisoblashda   o'xshash   va/yoki   mantiqiy
bog'liq bo'lgan  turli  xil  ma'lumotlarni   saqlash  va  qayta  ishlash  imkonini  beruvchi
dastur   birligi.   Ma'lumotlarni   qo'shish,   qidirish,   o'zgartirish   va   o'chirish   uchun
ma'lumotlar   strukturasi   uning   interfeysini   tashkil   etuvchi   funktsiyalar   to'plamini
taqdim   etadi.   Har   xil   turdagi   ma'lumotlar   tuzilmalari   turli   ilovalar   uchun   mos
keladi,   ularning   ba'zilari   ma'lum   vazifalar   uchun   tor   ixtisoslashgan.   Masalan,   B-
daraxtlar  odatda  ma'lumotlar  bazalarini  yaratish  uchun mos keladi, xesh-jadvallar
esa   hamma   joyda   turli   xil   lug'atlarni   yaratish   uchun,   masalan,   kompyuterlarning
Internet manzillarida domen nomlarini ko'rsatish uchun ishlatiladi. ASOSIY QISM.
Ma lumotlar tuzilmasiʼ
Informatika   sohasida   ma lumotlar   tuzilmasi	
ʼ   —   samarali   kirish   va   o zgartirishga	ʻ
imkon beradigan ma lumotlarni tashkil qilish, managment va saqlash formati.	
ʼ [1] [2] [3]
Aniqrog i,   ma lumotlar   tuzilmasi   ma lumotlar   qiymatlari,   ular   orasidagi	
ʻ ʼ ʼ
munosabatlar   va   ma lumotlarga   qo llanilishi   mumkin   bo lgan   funksiyalar   yoki	
ʼ ʻ ʻ
operatsiyalar to plami hisoblanadi.	
ʻ
Kompyuter   xotirasida   saqlanadigan   ma'lumotlar   nol   va   birliklar   (bitlar)
yig'indisidir.   Bitlar   ketma-ketlikda   birlashtiriladi:   baytlar,   so'zlar   va   boshqalar.
Operativ   xotiraning   bir   bayt   yoki   so'zni   sig'dira   oladigan   har   bir   qismiga   tartib
raqami (manzil) beriladi.
Ma'lumotlarning   ma'nosi   nima,   ular   qanday   belgilar   bilan   ifodalangan   -
alifbo yoki raqamli, u yoki bu raqam nimani anglatadi - bularning barchasi ishlov
berish   dasturi   bilan   belgilanadi.   Amaliy   muammolarni   hal   qilish   uchun   zarur
bo'lgan barcha ma'lumotlar bir necha xil  turlarga va kontseptsiyaga  bo'linadi   turi
nafaqat   ma'lumotlarning   manzillar   maydonida   ko'rinishi   bilan,   balki   bilan   ham
aloqa qiladi  ularni qayta ishlash usuli .
Har qanday ma'lumotlarni ikki turdan biriga bo'lish mumkin: asosiy (oddiy),
shakli   kompyuter   arxitekturasi   tomonidan   belgilanadigan   yoki   foydalanuvchi
tomonidan muayyan muammolarni hal qilish uchun ishlab chiqilgan murakkab. Oddiy  ma'lumotlar   turlari   -  bu  belgilar,  raqamlar  va   boshqalar.  elementlar,  ularni
keyingi   maydalash   mantiqiy   emas.   Elementar   ma'lumotlardan   ma'lumotlar
tuzilmalari (murakkab tiplar) tuziladi. Ma’lumotlar tuzilmalari 
Barcha dastur yoki dasturiy mahsulotning asosida ikkita birlik yotadi: ma’lumotlar
va   ular   ustida   qandaydir   amallar   bajaradigan   algoritmlar.   Algoritmlar
ma’lumotlarni biz yoki dastur  uchun foydali  bo’lgan axborot ko’rinishiga keltirib
beradi.   Algoritmlar   shu   ma’lumotlar   ustida   amallarni   (o’qish,   yozish,   yangilash,
o’chirish)   samarali   va   tez   bajara   olishi   uchun   biz   shu   ma’lumotlarni   ma’lum   bir
strukturaga solgan holda saqlashimiz kerak bo’ladi. Demak shunday qilib,
Ma’lumotlar   tuzilmasi   —   bu   ma’lumotlarni   samarali   o’qish   va   o’zgartirish
imkonini beruvchi, ma’lumotlarni saqlash va boshqarishning bir formatga solingan
shaklidir. Soddaroq   qilib   aytganda,   ma’lumotlar   tuzilmasi   —   bu   ma’lumotlarning
ma’lum bir strukturaga solingan, ular o’rtasida ma’lum bir bog’lanishlar yaratilgan
va ular ustida ma’lum amallar bajaruvchi funksiyalardan tashkil topgan guruh. Eng
sodda   ma’lumotlar   tuzilmasiga   misol   qilib   massiv   (array) ni   ko’rsatishimiz
mumkin. Ma’lumot turlari.
C++   da   ma’lumot   turlari   ikki   kategoriyaga
bo’linadi:   fundamental   va   murakkab   ma’lumot turlari.
Quyidagi ma’lumot turlari   fundamental turlar   hisoblanadi:
void   - bu tur   tugallanmaydigan   (ya’ni, bu tur bilan obyekt, massiv va adres
(reference,   ссылка )   lar   e’lon   qilinmaydi   va   aniqlanmaydi)   ma’lumot   turi
hisoblanib   hech   qanday   qiymat   qabul   qilmaydi.   Lekin   bu   tur   bilan   ko’rsatgichlar
e’lon   qilinishi   va   aniqlanishi   mumkin.   Bundan   tashqari   bu   tur   qiymat   hosil
qilmaydigan   funksiyalarni   e’lon   qilish   va   aniqlashda   foydalanilishi   mumkin.
Masalan, quyidagilar to’g’ri hisoblanadi:
void   * Ptr ;                   // istalgan turdagi obyekt uchun ko’rsatgich
  void  DoSomething ()   {   }       // funksiya
std::nullptr_t   ( C++   11   dan   boshlab ).   Bu   tur   nol   ko’rsatgich   nullptr   ning   turi
hisoblanadi,   ya’ni   nullptr   std::nullptr_t   ma’lumot   turiga   ega.   0
yoki   nullptr   qiymatlarini qabul qiladi. Hajmi   sizeof ( void *) ga teng. Misol:
int   * IntPtr  =  nullptr ;       // IntPtr ning qiymati   0
bool .   Mantiqiy   ma’lumotlar,   o’zgaruvchilar   turi.   Faqat   true   va   false   qiymatlarini
qabul qiladi. Hajmi kompillyatorga bo’g’liq, lekin kamida 1 bayt. Misol:
bool  BoolningHajmiBirgaTeng  =   sizeof ( bool )   ==   1 ;
char ,   signed   char ,   unsigned   char .   Bular   belgilar   turlari   bo’lib,   uchchalasi   alohida
turlar   hisoblanadi.   Uchchalasi   bir   xil   hajmga   ega   va   1   baytga   teng.   char   asosan
belgilar   to’plami,   satrlar   hosil   qilishda   foydalaniladi.   U   kompillyatorga   bog’liq
ravishda   signed char   yoki   unsigned char   bilan aynan bir xil bo’ladi. Shuning uchun
-128 dan 127 gacha yoki 0 dan 255 gacha bo’lgan qiymatlarni qabul qiladi.   signed
char   kichik hajmli, ishorali butun sonlar talab qilinganda foydalanilishi mumkin va
-128 dan 127 gacha bo’lgan qiymatlarni qabul qiladi.   unsigned char   kichik hajmli, ishorasiz butun sonlar talab qilinganda foydalanilishi mumkin va 0 dan 255 gacha
bo’lgan qiymatlarni qabul qiladi. Misol:
char  Harf  =  ‘A’ ;
  char  DT []   =  “C ++ ” ;
  const   signed   char  N  =   - 90 ;
  unsigned   char  IP [ 4 ]   =   { 192, 168, 1, 1 } ;
char16_t   ( C++   11   dan   boshlab ).   Unicode   formatidagi   belgilar   uchun   ishlatiladi.
Qiymatlari   uchun   UTF-16   belgilar   to’plami   foydalaniladi.   Hajmi   kompillyatorga
bog’liq, lekin kamida 2 bayt. Misol:
char16_t Harf  =  u‘A’ ;
  char16_t DT []   =  u“C ++ ” ;
char32_t   ( C++ 11 dan boshlab ). Unicode formatidagi belgilar uchun ishlatiladi va
UTF-32   belgilar   to’plami   foydalaniladi.   Hajmi   kompillyatorga   bog’liq,   lekin
kamida 4 bayt. Misol:
char32_t Harf  =  U‘A’ ;
  char32_t DT []   =  U“C ++ ” ;
wchar_t .  Unicode   formatidagi   belgilar   uchun   ishlatiladi   va   UTF-16   yoki   UTF-32
belgilar to’plami foydalaniladi. Hajmi kompillyatorga, ya’ni foydalanilgan belgilar
to’plamiga bo’g’liq. Misol:
wchar_t  Harf  =  L‘A’ ;
  wchar_t  DT []   =  L“C ++ ” ; int .   Butun   sonlarning   asosiy   ( базовый )   turi   hisoblanadi.   Uning   hajmi   kamida   2
baytga teng. Lekin 32/64 bit arxitekturali tizimlarda uning hajmi kamida 4 bayt. Bu
tur   o’zgartirgich ( модификатор )   lar bilan birga ishlatilishi mumkin.      
   Quyidagi   o’zgartirgichlar   mavjud:   signed,   unsigned   (ishorasini
belgilaydi) va   short, long, long long   (hajmini belgilaydi). Demak,
 short ,   short int ,   signed short ,   signed short int   lar aynan bir xil bo’lib, ishorali
butun   sonlar   turi   hisoblanadi.   Hajmi   kamida   2   bayt   va   -32768   dan   32767
gacha bo’lgan sonlarni qabul qiladi.
 unsigned   short ,   unsigned   short   int   lar   aynan   bir   xil   bo’lib,   ishorasiz   butun
sonlar turi hisoblanadi. Hajmi kamida 2 bayt va 0 dan 65535 gacha bo’lgan
sonlarni qabul qiladi.
 signed ,   signed   int ,   int   lar   aynan   bir   xil   bo’lib,   ishorali   butun   sonlar   turi
hisoblanadi.   Hajmi   kamida   4   bayt   va   -2147483648   dan   2147483647  gacha
bo’lgan   sonlarni   qabul   qiladi.   Ba’zi   16   bitli   tizimlarda   uning   hajmi   2   bayt
( short   variantidek).
 unsigned ,   unsigned   int   lar   aynan   bir   xil   bo’lib,   ishorasiz   butun   sonlar   turi
hisoblanadi.   Hajmi   kamida   4   bayt   va   0   dan   4294967295   gacha   bo’lgan
sonlarni   qabul   qiladi.   Ba’zi   16   bitli   tizimlarda   uning   hajmi   2   bayt
( short   variantidek).
 long ,   long   int ,   signed   long   ,   signed   long  int   lar   aynan   bir   xil   bo’lib,  ishorali
butun   sonlar   turi   hisoblanadi.   Hajmi   kamida   4   bayt   va   -2147483648   dan
2147483647   gacha   bo’lgan   sonlarni   qabul   qiladi.   Ba’zi   64   bitli   tizimlarda
uning   hajmi   kamida   8   bayt   va   -9223372036854775808   dan
9223372036854775807 gacha bo’lgan sonlarni qabul qiladi.
 unsigned   long ,   unsigned   long   int   lar   aynan   bir   xil   bo’lib,   ishorasiz   butun
sonlar   turi   hisoblanadi.   Hajmi   kamida   4   bayt   va   0   dan   4294967295   gacha
bo’lgan sonlarni qabul qiladi. Ba’zi 64 bitli tizimlarda buning hajmi kamida
8   bayt   va   0   dan   18446744073709551615   gacha   bo’lgan   sonlarni   qabul
qiladi.  long long ,   long long int ,   signed long long ,   signed long long int   lar aynan bir
xil  bo’lib, ishorali  butun sonlar  turi  hisoblanadi.  Hajmi  kamida 8 bayt  va  -
9223372036854775808  dan  9223372036854775807  gacha  bo’lgan  sonlarni
qabul qiladi.
 unsigned long long ,   unsigned long long int   lar aynan bir xil bo’lib, ishorasiz
butun   sonlar   turi   hisoblanadi.   Hajmi   kamida   8   bayt   va   0   dan
18446744073709551615 gacha bo’lgan sonlarni qabul qiladi.
Float   -   yagona   aniqlikga   ega   bo’lgan   haqiqiy   sonlar   turi   hisoblanadi.   Bunday
aniqlikga   ega   sonlar   odatda   4   bayt   hajmga   ega   va   1.17E-38   dan   3.4E38   gacha
bo’lgan sonlarni qabul qiladi.
double .   float   ga nisbatan ikki karra yuqori aniqlikga ega bo’lgan haqiqiy sonlar turi
va   odatda   8   bayt   hajmga   ega.   2.23E-308   dan   1.79E308   gacha   bo’lgan   sonlarni
qabul qiladi.
long double . Kengaytirilgan aniqlikga ega bo’lgan haqiqiy sonlar turi va odatda 10
yoki   16   bayt   (kompillyatorga   bog’liq)   hajmga   ega.   3.36E-4932   dan   1.18E4932
gacha bo’lgan sonlarni qabul qiladi.
Quyidagilar   murakkab turlar   hisoblanadi:
Massiv .   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];
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] m[4] m[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.
1) O'lchami ko'rsatilgan massivni to'liq initsializatsiyalash.
int k[5] = { 2, 3, 7, 8, 6};
Bu yerda 5 ta elementdan iborat bo'lgan k massivi e'lon qilingan va massivning
barcha elemantlariga boshlang'ich qiymat berilgan.
2) O'lchami ko'rsatilgan massivni to'liqmas initsializatsiyalash.
int k[5] = { 2, 3, 7 };
Bu yerda 5 ta elementdan iborat bo'lgan k massivi e'lon qilingan va massivning
dastlabki 3 ta elemantlariga boshlang'ich qiymat berilgan.
3) O'lchami ko'rsatilmagan massivni to'liq initsializatsiyalash.
int k[] = { 2, 3, 7, 8, 6};
Shuni   takidlash   lozimki,   agar   massiv   o'lchami   ko'rsatilmasa,   uni   to'liq
initsializatsiyalash   shart.   Bu   xolda   massiv   o'lchami   kompilyatsiya   jarayonida
massiv elementlari soniga qarab aniqlanadi. Bu yerda massiv o'lchami 5 ga teng.
4) O'lchami ko'rsatilgan massivning barcha elementlariga boshlang'ich qiymat 0
berish:
int k[5] = { 0 };
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;
}
Funksiyalar .   C++   da   dasturlashning   asosiy   bloklaridan   biri   funksiyalardir.
Funksiyalar   dasturchi   ishini   juda   yengillashtiradi.   Funksiyalar   yordamida
programma   modullashadi,   qismlarga   bo'linadi.   Bu   esa   keyinchalik   dasturni
rivojlantirishni   osonlashtiradi.   Bunda   dasturchi   yozgan   funksiyalar   C++   ning
standart   kutubhonasi   va   boshqa   kutubhonalar   ichidagi   funksiyalar   bilan
birlashtiriladi.   Bu   esa   ishni   osonlashtiradi.   Ko'p   holda   dasturda   takroran
bajariladigan   amalni   funksiya   sifatida   yozish   va   kerakli   joyda   ushbu   funksiyani
chaqirish mumkin. Dastur  yozilish davrida hatolarni  topishni  yengillashtiradi. Bir
misolda funksiyaning asosiy qismlarini ko'rib chiqaylik:
int foo(int k, int t)
{
int result; result = k * t;
return (result);
}
Yuqoridagi foo funksiyamizning ismi, () qavslar ichidagi parametrlar – int tipidagi
k   va   t   lar   kirish   argumentlaridir ,   ular   faqat   ushbu   funksiya   ichida   ko'rinadi   va
qo'llaniladi.   Bunday   o'zgaruvchilar   lokal   (local   -   mahalliy)   deyiladi.   result   foo()
ning   ichida   e’lon   qilinganligi   uchun   u   ham   lokaldir.   Demak   biz   funksiya   ichida
o'zgaruvchilarni va sinflarni (class) e’lon qilishimiz mumkin ekan. Lekin funksiya
ichida   boshqa   funksiyani   e’lon   qilib   bo'lmaydi.   foo()   funksiyamiz   qiymat   ham
qaytaradi.   Qaytish   qiymatining   tipi   foo()   ning   e’lonida   eng   boshida   kelgan   -   int
tipiga   ega.   Biz   funksiyadan   qaytarmoqchi   bo'lgan   qiymatning   tipi   ham   funksiya
e’lon qilgan qaytish qiymati tipiga mos kelishi kerak - ayni o'sha tipda bo'lishi yoki
o'sha   tipga   keltirilishi   mumkin   bo'lgan   tipga   ega   bo'lishi   shart.   Funksiyadan
qiymatni   return   ifodasi   bilan   qaytaramiz.   Agar   funksiya   hech   narsa   qaytarmasa
e’londa void tipini yozamiz. Ya’ni:
void funk()
{
int g = 10;
cout << g;
return;}
Bu   funksiya   void   (bo’sh,   hech   narsasiz)   tipidagi   qiymatni   qaytaradi.   Boshqacha
qilib   aytganda   qaytargan   qiymati   bo’sh   to’plamdir.   Lekin   funksiya   hech   narsa
qaytarmaydi   deya   olmaymiz.   Chunki   hech   narsa   qaytarmaydigan   mahsus
funksiyalar   ham   bor.   Ularning   qaytish   qiymati   belgilanadigan   joyga   hech   narsa
yozilmaydi. Biz unday funksiyalarni keyinroq ko’rib chiqamiz. Bu yerda bir nuqta shuki, agar
funksiya mahsus bo’lmasa, lekin oldida qaytish qiymati tipi ko’rsatilmagan bo'lsa,
qaytish qiymati int tipiga ega deb qabul qilinadi.
void qaytish tipli funksiyalardan chiqish uchun return; deb yozsak yetarlidir. Yoki
return ni qoldirib ketsak ham bo’ladi.
Funksiyaning   qismlari   bajaradan   vazifasiga   ko’ra   turlicha   nomlanadi.   Yuqorida
korib   chiqqanimiz   funksiya   aniqlanishi   (function   definition)   deyiladi ,   chunki   biz
bunda   funksiyaning   bajaradigan   amallarini   funksiya   nomidan   keyin,   {}   qavslar
ichida   aniqlab   yozib   chiqyapmiz.   Funksiya   aniqlanishida   {}   qavslardan   oldin
nuqta-vergul   (;)   qo'yish   hatodir.   Bundan   tashqari   funksiya   e’loni,   prototipi   yoki
deklaratsiyasi (function prototype) tushunchasi qo'llaniladi.
Bunda funksiyaning nomidan keyin hamon nuqta-vergul qo'yiladi, funksiya tanasi
esa berilmaydi. C++ da funksiya qo’llanilishidan oldin uning aniqlanishi yoki hech
bo'lmaganda   e’loni   kompilyatorga   uchragan   bo'lishi   kerak.   Agar   funksiya   e’loni
boshqa   funksiyalar   aniqlanishidan   tashqarida   berilgan   bo'lsa,   uning   kuchi   ushbu
fayl  ohirigacha boradi. Biror  bir  funksiya ichida berilgan bo'lsa  kuchi  faqat  o'cha
funksiya   ichida   tarqaladi.   E’lon   fayllarda   aynan   shu   funksiya   e’lonlari   berilgan
bo’ladi.   Funksiya   e’loni   va   funksiya   aniqlanishi   bir-biriga   mos   tushishi   kerak.
Funksiya e’loniga misol:
double square(char, bool);
float average(int a, int b, int c);
Funksiya e’lonlarda kirish parametrlarining faqat tipi yozish kifoya, huddi square()
funksiyasidek.   Yoki   kiruvchi   parametrlarning   nomi   ham   berilishi   mumkin ,   bu
nomlar   kompilyator   tarafidan   etiborga   olinmaydi,   biroq   dasturning   o'qilishini
ancha   osonlashtiradi.   Bulardan   tashqari   C++   da   funksiya   imzosi   (function
signature) tushunchasi bor. Funksiya imzosiga funksiya nomi,   kiruvchi parametrlar tipi ,   soni,   ketma-ketligi   kiradi.   Funksiyadan   qaytuvchi   qiymat   tipi   imzoga
kirmaydi.
int foo(); //No1 int foo(char, int); //No2 double foo(); //No3 - No1 funksiya bilan
imzolari ayni. void foo(int, char); //No4 - No2 bilan imzolari farqli. char foo(char,
int);   //No5   -   No2   bilan   imzolari   ayni.   int   foo(void);   //No6   -   No1   va   No3   bilan
imzolari   ayni,   Yuqoridagi   misolda   kirish   parametrlari   bo'lmasa   biz   ()   qavsning
ichiga   void   deb   yozishimiz   mumkin   (No6   ga   qarang).   Yoki   ()   qavslarning   quruq
o’zini yozaversak ham bo’ladi (No1 ga qarang). 64 Yana bir tushuncha - funksiya
chaqirig'idir.   Dasturda   funksiyani   chaqirib,   qo'llashimiz   uchun   uning   chaqiriq
ko'rinishini   ishlatamiz.   ()   qavslari   funksiya   chaqirig'ida   qo'llaniladi.   Agar
funksiyaning kirish argumentlari bo’lmasa, () qavslar bo’sh holda qo’llaniladi.
Ma’lumki,   funksiyalarni   aniqlashda   ulaming   qaytarishi   lozim   bo‘lgan
qiymatlar  tipi  va funksiya uchun  zarur  bo‘lgan parametrlar  tipini  ko'rsatish  lozim
edi.   Faraz   qilaylik ,   ikkita   butun   sonni   qo‘shish   uchun   funksiya   qurilgan   bo‘lsin.
Agar uchta butun sonni qo‘shish talab qilingan bo‘lsa, ular uchun boshqa nomdagi
funksiyani   qurish   talab   qilinadi.   Ikkita   haqiqiy   sonni   qo‘shish   uchun   esa   boshqa
funksiya qurish lozim bo'ladi. Bunday hollarda bir xil funksiyani  takror va takror
yozishning o'miga, C++ tili bir xil nomdagi funksiyalarni  qurish imkonini beradi.
Dastumi   kompilatsiya   qilish   jarayonida   C++   funksiyalaming   har   biridagi
argumentlar miqdori e’tiborga olinadi va aynan kerak bo'lgan funksiyani chaqiradi.
Kompilyatorga   bir   nechta   funksiyalar   orasidan   kcragini   tanlash   imkoniyati
funksiyalarni  qayta yuklash deb ataladi. Funksiyalami qayta yuklash amali bir xil
nomdagi   parametrlami   har   xil   tipga   mansub   bo‘lgan   turli   funksiyalar   uchun
qo‘llashga   ruxsat   beradi.   Masalan,   quyidagi   dastur   add_values   nomli   ikkita
funksiyani qayta yuklash uchun xizmat qiladi:
#include <iostream>
using namespace std; int add_values (int a, int b)
{
return(a + b);
}
int add_values (int a, int b, int c)
{
return(a + b + c);
}
int main(){ 
cout « “200 + 801 = “ « add_values(200, 801) « endl;
cout « “100 + 201 + 700 = “ « add_values(100, 201, 700) « endl;}
Dastur natijasi quyidagicha aks etadi:
             Ko‘rinib   turibdiki , dasturda ikkita bir xil nomdagi, ammo parametrlari soni
har   xil   bo‘lgan   add_values   funksiyasi   aniqlangan.   Bu   holda   kompilyator
parametrlar soniga ko‘ra qaysi funksiyani qo‘llash haqida mustaqil ravishda xulosa
qiladi.
Agar   funksiya   o‘zidan   yordamchi   funksiya   sifatida   foydalanadigan   bo‘lsa,
bunday funksiyalar rekursiv deyiladi. Rekursiv funksiyalar ikki turga bo‘linadi: a) to‘g‘ri rekursiya. Bunda dastur o‘ziga-o‘zi murojaat qiladi.
b) yondosh rekursiya.
Bunda   A   funksiya   B   ga,   B   funksiya   A   ga   murojaat   qiladi.   Rekursiv   funksiya
yozish   uchun   avvalo   :   1)   rekkurent   munosabat ;   2)   shu   munosabat   uchun
boshlang‘ich   holatlar   aniqlangan   bo‘lishi   shart.   Rekkurent   munosabat   deganda
qaralayotgan   jarayonga   doir   muayyan   bosqichlami   avvalgi   bosqichlar   bilan
bog‘lovchi munosabatlar tushuniladi. Masalan, N! =N*(N—1) formulani N! uchun
rekurent   munosabat   deb   qarash   mumkin.   Boshlang‘ich   holat   sifatida   esa   1!=1
olinadi.
Keltirilgan   ma’lumotlami   hisobga   olsak,   faktorialni   hisoblash   masalasi
uchun   rekkurent   va   boshlang‘ich   munosabatlar   quyidagicha   bo'ladi:
Ko‘rinib turibdiki, N! ni hisoblash uchun (N-1)! ma’lum bo‘lishi kerak. Lekin,
(N-1)!=(N-1)*(N-2)! bo‘lgani uchun o‘z navbatida (N-2)! ni inpish talab qilinadi.
(N-2)! esa (N-3)!*(N-2) ga teng va hokazo. Bu yerda N! ni hisoblash algoritmi o
‘zining   ichiga   o   ‘zi   “cho‘kib”   borishi   hodisasi   ro‘y   bermoqda.   Cho‘kish   jarayoni
boshlang‘ich   holat   sodir   bo‘lgunga   qadar,   ya’ni   1!   gacha   davom   etadi.   Shundan
keyin ,   “cho‘-   kish”   jarayoni   to‘xtaydi,   1!=1   ekanligi   haqida   ko‘rsatma   olgan
kompyuter yuqoriga qarab “suzib” chiqish bosqichini boshlaydi.  Ya’ni, 2!=1, 2!=l-
2=2, 3 !=2!-3=6 va hokazo. Bu holat to N! hisoblanmaguncha davom etaveradi.
Yuqorida keltirilgan masala dasturi quyidagicha bo’ladi:
#include <iostream>
using namespace std;
long fak(int m)
{ long f; if (m==1) f=1; else f=fak(m-1)*m;
return f;
}
int main()
{
int n;
cout<<"Butun sonni kiriting: ";
cin>>n;
}
Dastur natijasi quydagicha bo’ladi:
Funksiyalarning   e’lon   qilinishi   ularning   nomi   va   turini   ko’rsatib   beradi.
Funksiyalarning aniqlanishi esa ularning nomi, turi va “tanasi” ni ko’rsatib beradi.
Misol:
void  Funksiya1 ( int ) ;            // funksiya e’lon qilinyapti
  int  Funksiya2 ()   {   //... }     // funksiya aniqlanyapti
void,   obyekt   yoki   funksiyalar   uchun   ko’rsatgichlar   (sinflarning   statik   a’zolari
uchun ham). Misol: void   * Ptr ;              // istalgan turdagi obyekt uchun ko’rsatgich
  int   * IntPtr ;            // butun son uchun ko’rsatgich
  int   ( * FuncPtr )() ;       // funksiya uchun ko’rsatgich
                                         Ma’lumotlar strukturasi.
Ma'lumotlar strukturasi - bu ma'lum bir sxemada ma'lumotlarni saqlaydigan
konteyner.   Ushbu   "tartib"   ma'lumotlar   tuzilmasini   ba'zi   operatsiyalarda   samarali,
boshqalarida esa samarasiz bo'lishiga imkon beradi.
Chiziqli,   elementlar   ketma-ketlik   yoki   chiziqli   ro'yxatni   tashkil   qiladi,
tugunlarning   o'tishi   chiziqli.   Misollar:   massivlar.   Bog'langan   ro'yxat,   steklar   va
navbatlar.
Agar   tugunlarning   o'tishi   chiziqli   bo'lmasa   va   ma'lumotlar   ketma-ket
bo'lmasa, chiziqli emas. Misol: grafik va daraxtlar.
Ma'lumotlarning asosiy tuzilmalari.
1. Massivlar
2. Stacks
3. Navbatlar
4. Bog'langan ro'yxatlar
5. Graflar
6. Daraxtlar
Massiv   –     Massivlar   hotirada   ketma-ket   joylashgan,   bir   tipdagi
o'zgaruvchilar   guruhidir.   Alohida   bir   o'zgaruvchini   ko'rsatish   uchun   massiv   nomi
va   kerakli   o'zgaruvchi   indeksini   yozamiz.   C/C++   dagi   massivlardagi   elementlar
indeksi   har   doim   noldan   boshlanadi.   Bizda   char   tipidagi   m   nomli   massiv   bor
bo'lsin. Va uning 4 dona elementi mavjud bo'lsin. Shemada bunday ko'rsataylik:     m[0] ->       4
  m[1] -> -44
  m[2] -> 109
  m[3] ->     23
  Ko'rib   turganimizdek,   elementga   murojaat   qilish   uchun   massiv   nomi   va   []
qavslar   ichida   element   indeksi   yoziladi.   Bu   yerda   birinchi   element   qiymati   4,
ikkinchi   element   -   1   nomerli   indeksda   -44   qiymatlari   bor   ekan.   Ohirgi   element
indeksi   n-1   bo'ladi   (n   -   massiv   elementlari   soni).[]   qavslar   ichidagi   indeks   butun
son yoki butun songa olib keluvchi ifoda bo'lmog'i lozim.  Masalan:
int k = 4, l = 2;
m[ k-l ] = 77; // m[2] = 77  
m[3] *= 2; // m[3] = 46
double d = m[0] * 6; // d = 24
cout << m[1]; 
Massivlarni   ishlatish   uchun   ularni   e'lon   qilish   va   kerak   bo'lsa   massiv
elementlarini   initsalizatsiya   qilish   kerak.   Massiv   e'lon   qilinganda   kompilyator
elementlar soniga teng hajmda hotira ajratadi. Masalan yuqorida qo'llanilgan char
tipidagi m massivini e'lon qilaylik.
  char m[4];
  Bu yerdagi 4 soni massivdagi  elementlar miqdorini bildiradi. Bir necha massivni
e'londa bersak ham bo'ladi:
  int m1[4], m2[99], k, l = 0;   Massiv elementlari dastur davomida initsalizatsiya qilishimiz mumkin, yoki
boshlang'ich   qiymatlarni   e'lon   vaqtida,   {}   qavslar   ichida   ham   bersak   bo'ladi.   {}
qavslardagagi qiymatlar massiv initsalizaytsiya ro'yhati deyiladi.
  int n[5] = {3, 5, -33, 5, 90};
  Yuqorida   birinchi   elementning   qiymati   3,   ikkinchiniki   5   ...   ohirgi   beshinchi
element qiymati esa 90 bo'ldi. Boshqa misol:
  double array[10] = {0.0, 0.4, 3.55};
  Bu yerdagi massiv tipi double bo'ldi. Ushbu massiv 10 ta elementdan iboratdir. {}
qavslar   ichida   esa   faqat   boshlangich   uchta   element   qiymatlari   berildi.   Bunday
holda,   qolgan   elementlar   avtomatik   tarzda   nolga   tenglashtiriladi.   Bu   yerda   aytib
o'tishimiz   kerakki,   {}   qavslar   ichida   berilgan   boshlangish   qiymatlar   soni
massivdagi   elementlar   sonidan   katta   bo'lsa,   sintaksis   hatosi   vujudga   keladi.
Masalan:
  char k[3] = {3, 4, 6, -66, 34, 90}; // Hato!  
  Uch elementdan iborat massivga 6 dona boshlangich qiymat berilyapti, bu hatodir.
Boshqa misolni ko'rib chiqaylik:  
  int w[] = {3, 7, 90, 78};
  w   nomli   massiv   e'lon   qilindi,   lekin   []   qavslar   ichida   massivdagi   elementlar   soni
berilmadi.   Bunday   holda   necha   elementga   joy   ajratishni   kompilyator   {}   qavslar
ichidagi boshlangich qiymatlar miqdoriga qarab biladi. Demak, yuqoridagi misolda
w massivimiz 4 dona elementdan iborat bo'ladi.   
Stack   -   mavhum   ma'lumotlar   turi   bo'lib,   LIFO   (Last   In   First   Out)
tamoyiliga   muvofiq   tashkil   etilgan   elementlar   ro'yxati   (inglizcha   "oxirgi   kelgan   -
birinchi   ketadi").Ular   massivlar   emas.   Bu   navbat.   Alan   Turing   tomonidan   ixtiro
qilingan. Stackga   misol   sifatida   vertikal   ravishda   joylashtirilgan   kitoblar   to'plami
bo'lishi   mumkin. O'rtada  joylashgan  kitobni  olish  uchun  undagi  barcha  kitoblarni
o'chirishingiz kerak bo'ladi.
Navbatlar   -   steklar   singari,   navbat   ham   elementni   ketma-ket   saqlaydi.
Stackdan sezilarli farq LIFO o'rniga FIFO (First in First  Out) dan foydalanishdir.
(inglizcha " birinchi kelgan - birinchi ketadi"). Navbatga misol qilib odamlarning
navbatini keltirish mumkin. Oxirgisi oxirgisini oldi va siz bo'lasiz va birinchisi uni
birinchi bo'lib tark etadi.
Bog'langan   ro'yxat   massiv   bo'lib,   unda   har   bir   element   alohida   ob'ekt
bo'lib, ikkita elementdan - ma'lumotlar va keyingi tugunga havoladan iborat.
Massivning   asosiy   ustunligi   uning   strukturaviy   moslashuvchanligidir:
bog'langan   ro'yxat   elementlarining   tartibi   kompyuter   xotirasidagi   ma'lumotlar
elementlarining tartibiga to'g'ri kelmasligi mumkin va ro'yxat bo'ylab harakatlanish
tartibi har doim uning ichki havolalari bilan aniq belgilanadi. .
Ikki   tomonlama,   har   bir   tugun   bilan   bog'langan   ikkita   havolalardan   biri   keyingi
tugunga va biri oldingi tugunga ishora qiladi.
Graf   bir-biri   bilan   chekkalar   (yoylar)   orqali   tarmoq   shaklida   bog'langan
tugunlar   (cho'qqilar)   yig'indisidir.   Graf   ikki   hil   bo’ladi   yo’naltirilgan   va
yo’naltirilmagan.
Yo'naltirilgan   -   qirralari   yo'naltirilgan,   ya'ni   ikkita   bog'langan   cho'qqilar
o'rtasida faqat bitta yo'nalish mavjud.
Yo'naltirilmagan   -   qirralarning   har   biri   ikkala   yo'nalishda   ham   o'tkazilishi
mumkin.
Daraxt   -   bu   tugunlardan   (cho'qqilar)   va   qirralardan   (yoylardan)   tashkil
topgan   ierarxik   ma'lumotlar   strukturasi.   Daraxtlar,   asosan,   halqasiz   bog'langan
grafiklardir.
 Daraxt turlari: • N daraxt
• Muvozanatli daraxt
• Ikkilik daraxt
• Ikkilik qidiruv daraxti
• AVL daraxti
• 2-3-4 daraxt
Ikkilik daraxti - bu ierarxik ma'lumotlar strukturasi bo'lib, unda har bir tugun
o'z qiymatiga ega. Daraxtdan o'tishning uchta usuli
• To'g'ridan-to'g'ri tartibda (yuqoridan pastga) - prefiks shakli.
• Simmetrik tartibda (chapdan o'ngga) - infiks shakli.
• Teskari tartibda (pastdan yuqoriga) - postfiks shakli.
Ma'lumotlar strukturasining juda muhim xususiyati uning o'zgaruvchanligi -
elementlar   sonining   o'zgarishi   va   (yoki)   strukturaning   elementlari   orasidagi
bog'lanishdir.   Tuzilishning   o'zgaruvchanligi   ta'rifi   ma'lumotlar   elementlarining
qiymatlari   o'zgarganligini   aks   ettirmaydi,   chunki   bu   holda   barcha   ma'lumotlar
tuzilmalari   o'zgaruvchanlik   xususiyatiga   ega   bo'ladi.   O'zgaruvchanlik   asosida
tuzilmalar   ajralib   turadi:   STATIK,   YARIM-STATIK,   DINAMIK.
O'zgaruvchanlikka   asoslangan   ma'lumotlar   tuzilmalarining   tasnifi   rasmda
ko'rsatilgan.   Statik,   yarim   statik   va   dinamik   ma'lumotlarning   asosiy   tuzilmalari
RAMga xos bo'lib, ko'pincha onlayn tuzilmalar deb ataladi. Fayl tuzilmalari tashqi
xotira uchun ma'lumotlar tuzilmalariga mos keladi.
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                                                            Xulosa
Ushbu   kurs   ishida   Doimiy   ma'lumotlar   strukturasi   va   uni   amalga   oshirish
asoslarini hamda ularni amalda qayerdan topishimiz mumkinligini ko'rib chiqamiz.
Ma’lumot   tuzilmalari   har   doim   yangilanib   turadi   va   o’zining   odingi
versiysini   ham   saqlab   qoladi   va   biz   ularni   istagan   vaqtimiz   izlab   topishimiz
mumkin.
Demak  ma’lumot   turlari  2  xil   fundamental  va  murakkab  turlarga  bo’linadi.
Fundamental   ma’lumot   turlariga   o’zgartirilmaydigan   ma’lumot   turlari   kiritamiz.
Bunga misol qilib “const” ni olishimiz mumkin. Murakkab ma’lumot turlariga esa
massiv va funksiyalarni misol tariqasida olamiz.
Ma'lumotlarning   asosiy   tuzilmalariga   massivlar,   stacklar,   navbatlar,   graflar
hamda daraxtlar misol tariqasida keltiramiz.
Ma’lumotlar   strukturasining   muhim   xususiyatlari   bu   ularning   statik   va
dinamik ekanligidir. Statik ma’lumotlar dastur davomida xotirada egallagan hajmi
o’zgartirmaydi.   Dinamik   ma’lumotlar   esa   dastur   davomida   o’zining   hajmini
o’zgartiradi.
                    Doimiy   Ma’lumotlar   Strukturasida   ma’lumotlar   tuzilmasi,   ma’lumotlar
turlari, fundamental ma’lumotlar turlari, dinamik, statik ma’lumot strukturalari va 
B.B.Akbaraliyev.   “Ma’lumotlar   tuzilmasi   va   algoritimlar”.Toshkent-2021
saytlaridan foydalanildi. Foydalanilgan adabiyotlat ro’yhati.
1. Nazarov   Fayzullo   Maxmadiyarovich,   “Algoritimlar   va   ma’lumotlar
strukturasi”. Samarqand – 2019.
2. Boboxo’jayeva N.M “Algoritimlar nazariyasi”.
3. B.B.Akbaraliyev. “Ma’lumotlar tuzilmasi va algoritimlar”. Toshkent – 2011.
4. A.R.Azamatov,   “Algoritimlash   va   dasturlash   asoslari”. Cho   'lpon   nomidagi
nashriyot-matbaa ijodiy uyi Toshkent — 2013 .
5. Sh.   I.   Razzoqov,   M.   J.   Yunusova.   Dasturlash:   Kasb-hunar   kollejlari   uchun
o quv qo llanma. T. : “Ilm Ziyo”, 2011y. ʻ ʻ
6. T.   X.   Holmatov,   N.   I.   Tayloqov .   Amaliy   matematika,   dasturlash   va
kompyuterning dasturiy ta`minoti. O quv qo llanma	
ʻ ʻ .  T :.  “Me h nat”, 2000 y. 
7. Sattorov   A.   Informatika   va   axborot   texnologiyalari.   Darslik.   Т.   : ,
“ O qituvchi	
ʻ ” , 20 11 y .

“DOIMIY MA’LUMOTLAR STRUKTURASI” MAVZUSIDA YOZGAN KURS ISHI SAMARQAND – 2021

Mundarija: KIRISH………………………………………………………………….3 ASOSIY QISM………………………………………………….………4 Ma lumotlar tuzilmasiʼ .............................................................................4 Ma’lumot turlari…………………………………….………………….6 Fundamental ma’lumot turlari…………………………….….……….6 Murakkab ma’lumot turlari……………………………….….……….9 Ma’lumot strukturalari………………………………………….…….20 Statik ma’lumot strukturalari……………………………………..….24 Dinamik ma’lumot strukturalari………………………………….….24 Xulosa……………………………………………………………….….25 Foydalanilgan adabiyotlat ro’yhati………………………………..….26

Kirish Doimiy malumotlar strukturasi ma'lumotlar strukturasining barqarorligi - bu ma'lumotlar strukturasining tarixiy holatini saqlab qolish, shunda biz ilgari bajarilgan operatsiya natijalarini tezda topishimiz mumkin. Albatta, bu muqarrar ravishda vaqt va makonni sezilarli darajada yo'qotishga olib keladi, shuning uchun yuqori chidamlilik vaqt va makonning murakkabligini kamaytirish uchun ma'lumotlar strukturasining tarixiy holatida o'xshash qismlardan to'liq foydalanish imkonini beradi. Shubhasiz, juda oddiy va doimiy ishora bor: ma'lumotlar strukturasidagi har bir tugun uchun ma'lumotlar strukturasini (masalan, B-daraxt yoki STL tuzilmalari) kiriting va keyin tarixiy holatni saqlab qolish uchun vaqtni kalit so'z sifatida ishlating.Doimiy ma'lumotlar strukturasi ma'lum bir ma'lumotlar strukturasiga oldingi tarixiy versiyaga doimiy kirish imkoniyatini berish uchun mo'ljallangan, lekin ayni paytda doimiy qator segmenti daraxti kabi tarixiy versiyadan ma'lumotlar strukturasining yangi versiyasini yaratishi va to'plamni tasdiqlashi jarayoni. Ma'lumotlar strukturasi - bu hisoblashda o'xshash va/yoki mantiqiy bog'liq bo'lgan turli xil ma'lumotlarni saqlash va qayta ishlash imkonini beruvchi dastur birligi. Ma'lumotlarni qo'shish, qidirish, o'zgartirish va o'chirish uchun ma'lumotlar strukturasi uning interfeysini tashkil etuvchi funktsiyalar to'plamini taqdim etadi. Har xil turdagi ma'lumotlar tuzilmalari turli ilovalar uchun mos keladi, ularning ba'zilari ma'lum vazifalar uchun tor ixtisoslashgan. Masalan, B- daraxtlar odatda ma'lumotlar bazalarini yaratish uchun mos keladi, xesh-jadvallar esa hamma joyda turli xil lug'atlarni yaratish uchun, masalan, kompyuterlarning Internet manzillarida domen nomlarini ko'rsatish uchun ishlatiladi.

ASOSIY QISM. Ma lumotlar tuzilmasiʼ Informatika sohasida ma lumotlar tuzilmasi ʼ — samarali kirish va o zgartirishga ʻ imkon beradigan ma lumotlarni tashkil qilish, managment va saqlash formati. ʼ [1] [2] [3] Aniqrog i, ma lumotlar tuzilmasi ma lumotlar qiymatlari, ular orasidagi ʻ ʼ ʼ munosabatlar va ma lumotlarga qo llanilishi mumkin bo lgan funksiyalar yoki ʼ ʻ ʻ operatsiyalar to plami hisoblanadi. ʻ Kompyuter xotirasida saqlanadigan ma'lumotlar nol va birliklar (bitlar) yig'indisidir. Bitlar ketma-ketlikda birlashtiriladi: baytlar, so'zlar va boshqalar. Operativ xotiraning bir bayt yoki so'zni sig'dira oladigan har bir qismiga tartib raqami (manzil) beriladi. Ma'lumotlarning ma'nosi nima, ular qanday belgilar bilan ifodalangan - alifbo yoki raqamli, u yoki bu raqam nimani anglatadi - bularning barchasi ishlov berish dasturi bilan belgilanadi. Amaliy muammolarni hal qilish uchun zarur bo'lgan barcha ma'lumotlar bir necha xil turlarga va kontseptsiyaga bo'linadi turi nafaqat ma'lumotlarning manzillar maydonida ko'rinishi bilan, balki bilan ham aloqa qiladi ularni qayta ishlash usuli . Har qanday ma'lumotlarni ikki turdan biriga bo'lish mumkin: asosiy (oddiy), shakli kompyuter arxitekturasi tomonidan belgilanadigan yoki foydalanuvchi tomonidan muayyan muammolarni hal qilish uchun ishlab chiqilgan murakkab.

Oddiy ma'lumotlar turlari - bu belgilar, raqamlar va boshqalar. elementlar, ularni keyingi maydalash mantiqiy emas. Elementar ma'lumotlardan ma'lumotlar tuzilmalari (murakkab tiplar) tuziladi.