logo

AXBOROT JARAYONLARINI ALGORITMLASH VA DASTURLASH

Yuklangan vaqt:

12.08.2023

Ko'chirishlar soni:

0

Hajmi:

626.029296875 KB
     MAVZU: AXBOROT JARAYONLARINI ALGORITMLASH VA 
DASTURLASH 
                                       Reja: 
1. ALGORITM HAQIDA TUSHUNCHA VA  UNING ASOSIY XOSSALARI,
IFODALASH USULLARI, TURLARI. 
2. ALGORITM BLOK SXEMALARI. 
3. TARMOQLANUVCHI HISOBLASH JARAYONLARINI 
ALGORITMLASH VA DASTURLASH. 
4. TAKRORLANUVCHI HISOBLASH JARAYONLARINI ALGORITMLASH 
VA DASTURLASH. 
                       ALGORITM HAQIDA TUSHUNCHASI 
        
Algoritm  d е b, masalani  е chish uchun bajarilishi lozim bo’lgan amallar 
k е tma-k е tligini aniq tavsiflaydigan qoidalar tizimiga aytiladi.  
   Boshqacha aytganda, algoritm –boshlang’ich va oraliq 
ma`¬lumotlarni masalani  е chish natijasiga aylantiradigan jarayonni bir
qiymatli qilib, aniqlab b е radigan qoidalarning biror bir ch е kli k е tma-
k е tligidir. 
    Buning moxiyati shundan iboratki, agar algoritm ishlab chiqilgan
bo’lsa, uni  е chilayotgan masala bilan tanish bo’lmagan biron bir 
ijrochiga, shu jumladan kompyut е rga xam bajarish uchun top¬shirsa 
bo’ladi va u algoritmning qoidalariga aniq rioya qilib masalani  е chadi. 
 
Hozirgi kunda hisoblash, muhandis-t е xnik, iqtisodiy, matnli va sonli 
axborotlarni tax lil qilish va boshqa masalalarni  е chish tillari malum.  
Masalan: FORTRAN tili 1954 yili ishlab chiqilgan bo’lib, FORmula 
TRANsla tor - formulalar translyatori d е gan manoni anglatadi va ilmiy 
va muhandis - t е xnik masalalarni hisoblashlarda qo’llaniladi.   ALGOL tili 1960 yili yaratilgan bo’lib, ALGORITMIC Langauge -
algoritmik til d е gan ma'noni anglatadi va ilmiy-t е xnik masalalarni 
hisoblashlarda qo’llaniladi.  
KOBOL tili 1959 yili yaratilgan bo’lib, Common Businees Oriented 
Langauge - “savdo-sotiq masalalariga mo’ljallangan til” d е gan ma'noni
anglatadi. Korxona va tarmoqning moddiy boyligini, moliyasini, ishlab 
chiqargan mahsulotini hisobga olish bilan bog’liq iqtisodiy masalalarni
е chish uchun qo’llaniladi.  
PASKAL tili 1971 yilda e`lon qilingan bo’lib, frantsuz olimi Bl е z Paskal 
nomiga qo’yilgan. Turli xildagi masalalar  е chimini olishda tartiblangan 
(strukturaviy) dasturlar tuzishda qo’llaniladi.  
PL/1 tili 1964 yilda yaratilgan bo’lib, Programming Langauge/ 1 - 1-
tartib raqamli dasturlash tili ma'nosini anglatadi. Ushbu til univ е rsal 
tillar turkumiga kiradi.  
Bu tilda ishlab chiqilgan dasturlar kompyuterni yangisi bilan 
almashtirilganda qaytadan tuzib chiqilishi zarur emas. 
 B Е YSIK (BASIC - Beginner's All Purpose Sumbolic Instruction Code - 
boshlovchilar uchun ko’p maqsadli dasturlash tili) hisoblash 
algoritmlarini yozish uchun qo’llaniladigan algo ritmik tildir. Bu til 1965
yilda Dartmut koll е ji xodimlari K е mini va Kurtslar tomonidan ishlab 
chiqilgan.  
                       Algoritmning asosiy xossalari. 
    Algoritm quyidagi asosiy xossalarga ega: uzluklilik, aniqlik, 
natijaviylik va ommaviylik.  
    UZLUKLILIK. Dastlabki b е rilgan malumotlarni natijaga 
aylantirish jarayoni uzlukli ravishda amalga oshiriladiki, bunda 
vaqtning xar bir k е yingi k е ladigan daqiqasidagi miqdor 
(kat¬talik)larning qiymati vaqtning shundan oldingi daqiqasida 
bo’lgan miqdorlar qiymatidan ma`lum bir qoidalar bo’yicha oli¬nadi.        ANIQLIK. Algoritmning xar bir qoidasi aniq va bir qiy¬matli 
bo’lishi zarurki, bunda vaqtning biror daqiqasida olin¬gan miqdorlar 
qiymati vaqtning shundan oldingi daqiqasida olingan miqdorlar 
qiymati bilan bir qiymatli aniqlangan bo’ladi.  
    NATIJAVIYLIK. Algoritm masalaning  е chimiga ch е kli sondagi
qadamlar ichida olib k е lishi yoki masalani " е chib bo’lmaydi" d е ¬gan 
xabar bilan tugashi k е rak.  
    OMMAVIYLIK. Masalaning  е chish algoritmi shunday 
yaratilishi k е rakki, uni faqat boshlang’ich malumotlar bilan 
farqlanadigan masalalarni  е chish uchun xam qo’llanilishi k е rak.  
    Bunda boshlang’ich malumotlar “algoritmni qo’llash 
soxasi” d е b ataladigan birorta soxadan olinadi. 
     
 Algoritmni ifodalash usullari  
  Algoritmni ishlab chiqishda uni bir n е cha xil usul bilan ifodalab b е rsa 
bo’ladi.  Shulardan uchtasi kеng tarqalgan. Bu¬lar:  
1. Algoritmni oddiy tilda ifodalash;  
2. Algoritmni tuzim ko’rinishida ifodalash;  
3. Algoritmni maxsus (algoritmik) tilda yozish.  
 
            ALGORITMNI ODDIY TILDA IFODALASH   
Algoritmlarni ifodalashning eng k е ng tarqalgan shakli - oddiy tilda 
so’zlar bilan bayon qilishdir. Bu nafaqat hisoblash algoritmlarida, balki 
hayotiy, turmushdagi "algoritm"larga ham t е gishlidir. 
 Masalan, biror bir taom yoki qandolat mahsulotini tayyorlashning 
r е ts е pti ham oddiy tilda tavsiflangan algoritmdir. Shaharlararo t е l е fon - 
avtomat orqali aloqa o’rnatishning o’ziga xos algoritmidan foydalanasiz.
Do’kondan yangi kir yuvish mashinasi yoki magnitofon sotib olinsa, ishni
foydalanishning algoritmi bilan tanishishdan boshlaymiz.  
    Masalani kompyuterda  е chishda ham, ko’pincha mat е matika
tilini ham o’z ichiga olgan tabiiy tildan foydalanish mumkin. 
Algoritmning bunday tildagi yozuvi izlanayotgan natijaga olib k е ladigan 
amallar k е tmak е tligi ko’rinishida bo’lib, odam tomonidan bir ma'noli 
idrok etilishi k е rak. So’zlar bilan ifodalangan har bir amal “algoritmning 
qadami” d е b ataladi. Qadamlar tartib nom е riga ega bo’ladi. 
Saralashning umumiy mexanizmi 
Quicksort – bu ham “bo’lib tashla va hukmronlik qil” prinsipiga 
asoslanuvchi algoritmdir. 
 
Algoritm uch bosqichdan iborat: 
 
1. Massivdan elementni tanlash. Ushbu elementni  „tayanch 
element“  deb ataymiz. 
2. „Bo’lish“ massivda elementlarni qayta taqsimlash, bu 
holatda „tayanch elementdan kichik bo’lgan elementlar 
boshida joylashtiriladi va „tayanch element“dan katta yoki teng 
bo’lganlari esa undan keyin  joylashtiriladi.  3. Dastlabki ikki qadamni ma'lumotlar bazasining chap va o'ng 
tomonidagi ikkita ichki jadvalga takroriy ravishda qo'llang. 
Rekursiya faqat bitta element yoki etishmayotgan 
elementlardan iborat massivga taalluqli emas. 
 
Eng umumiy ko'rinishida psevdokod algoritmi quyida berilgan. (bu erda 
A - saralanadigan massiv, low va hig esa, mos ravishda, ushbu 
massivning saralangan qismining pastki va yuqori chegaralari) 
Psevdokod nima?  Psevdokod  - bu imperativ dasturlash tillarining kalit 
so'zlaridan foydalanadigan algoritmlarni tavsiflash uchun ixcham, 
ko'pincha norasmiy til, ammo algoritmni tushunish uchun zarur 
bo'lmagan tafsilotlar va o'ziga xos sintaksisni chiqarib tashlaydi. 
Algoritmni kompyuterga tarqatish va dasturni keyinchalik bajarish 
uchun emas, balki odamga taqdim etish uchun mo'ljallangan. 
 
 
Rekursiv QuickSort funktsiyasi uchun psevdokod: 
 
/* low  --> boshlang’ich index,  high  --> yuqori index */ quickSort(arr[], 
low, high) 
{     if (low < high)     { 
/ * pi - bu qismlarni ajratish ko'rsatkichi, arr [pi] endi kerakli joyda * /     
pi = partition(arr, low, high); 
  quickSort(arr, low, pi - 1);  // Pi oldin         quickSort(arr, pi + 1, high); //
pi keyin 
    } 
} 
  “Bo’lib tashlash” algoritmi 
“Bo’lib tashlash”ni amalga oshirishning ko'plab usullari bo'lishi mumkin,
psevdokoddan so'ng quyidagi algoritm qo’llaniladi. Mantiqan sodda, biz
eng chap elementdan boshlaymiz va kichik (yoki teng) elementlarning 
indeksini i sifatida kuzatamiz. Tekshirish paytida kichik element topsak, 
joriy elementni arr [i] bilan almashtiramiz. Aks holda biz joriy elementni 
e'tiborsiz qoldiramiz. 
 
 
quickSort(arr[], low, high) 
{ 
    if (low < high) 
    { 
 
        pi = partition(arr, low, high); 
 
        quickSort(arr, low, pi - 1);  // Before pi         quickSort(arr, pi + 1, 
high); // After pi     } 
}   
“Bo’lib tashlash” algoritmning psevdokodi 
 
/ * Ushbu funksiya so'nggi elementni “tayanch” sifatida qabul qiladi, 
“tayanch” elementni tartiblangan qatorga to'g'ri holatiga qo'yadi va 
kichikroq (burilishdan kichikroq) burilishning chap tomoniga va barcha 
katta elementlarni “tayanch element” ning o'ng tomoniga joylashtiradi  
* / partition (arr[], low, high) 
{ 
    // pivot (Element to'g'ri joyga joylashtiriladi)     pivot = arr[high];   
  
    i = (low - 1)  // Kichikroq element ko'rsatkichi va tayanch   
                    //to'g'ri holatini ko'rsatadi     for (j = low; j <= high- 1; j++) 
    { 
        // Agar joriy element “tayanch” elementdan kichikroq bo'lsa         if 
(arr[j] < pivot) 
        { 
            i++;    // kichik elementning o'sish ko'rsatkichi             swap arr[i] 
and arr[j] 
        } 
    } 
    swap arr[i + 1] and arr[high])     return (i + 1) 
} 
 
 2-Ma
  “Bo’lib tashlash” algoritmining ishlashini quyidagi misolda qarab chiqish
mumkin: 
 
arr[] = {10, 80, 30, 90, 40, 50, 70} Indekslar:  0   1   2   3   4   5   6  low = 0,
high =  6, pivot = arr[h] = 70 
Kichik element indeksini initsializatsiya qilish,  i = -1  
 
j = low to high-1 
j = 0  : arr[j] <= pivot, shart bajarilsa, i++ va swap(arr[i], arr[j])  i = 0   
arr[] = {10, 80, 30, 90, 40, 50, 70} //Massivda o’zgarish bo’lmaydi  
 
j = 1  : arr[j] > pivot, bajarilsa, hech nima o’zgarmaydi 
// i va arr [] da o'zgarish yo'q 
 
j = 2  : arr[j] <= pivot, shart bajarilsa i++ va swap(arr[i], arr[j])  i = 1  
arr[] = {10,  30 ,  80 , 90, 40, 50, 70} // 80 va 30 almashdi  
 
j = 3  : arr[j] > pivot, shart bajarilsa, hech nima o’zgarmaydi 
// No change in i and arr[] 
 
j = 4  : arr[j] <= pivot, shart bajarilsa i++ va swap(arr[i], arr[j]) 
 
i = 2  arr[] = {10, 30, 40, 90, 80, 50, 70} // 80 va 40 almashadi  j = 5  : arr[j] 
<= pivot, shart bajarilsa i++ va swap(arr[i], arr[j])   i = 3   
arr[] = {10, 30, 40, 50, 80, 90, 70} // 90 va 50 almashadi 
  So’nggi natija  arr[i+1] va arr[high]   
arr[] = {10, 30, 40, 50, 70, 90, 80} // 80 va 70 almashtiriladi  
 
“Tayanch element” hisoblanuvchi 70 ham o’z o’rnida. Undan kichik 
elementdan boshida, kattalari esa undan tepada 
 
 
Quick sort algoritmning umumiy dasturi (C++) 
 
#include <bits/stdc++.h> 
using namespace std; 
 
// Ikki elementni almashtirish uchun yordamchi funksiya void swap(int* 
a, int* b) 
{ 
  int t = *a; 
  *a = *b; 
  *b = t; 
} 
 
/*Ushbu funksiya 
so'nggi elementni “tayanch” sifatida qabul qiladi, 
“tayanch” elementni tartiblangan qatorga to'g'ri holatiga qo'yadi va 
kichikroq (burilishdan kichikroq) burilishning chap tomoniga va barcha 
katta elementlarni “tayanch element” ning o'ng tomoniga 
joylashtiradi  */ 
 
int partition (int arr[], int low, int high) 
{ 
  int pivot = arr[high]; // tayanch element 
  int i = (low - 1); // Kichikroq element ko'rsatkichi va tayanch 
                    //to'g'ri holatini ko'rsatadi 
 
  for (int j = low; j <= high - 1; j++) 
  { 
    //Agar joriy element tayanchdan kichik bo'lsa 
    if (arr[j] < pivot) 
    { 
      i++; 
      swap(&arr[i], &arr[j]); 
    } 
  } 
  swap(&arr[i + 1], &arr[high]);   return (i + 1); 
} 
 
void quickSort(int arr[], int low, int high) 
{ 
  if (low < high) 
  { 
      int pi = partition(arr, low, high); 
 
 
    quickSort(arr, low, pi - 1); 
    quickSort(arr, pi + 1, high); 
  } 
} 
 
void printArray(int arr[], int size) 
{ 
  int i; 
  for (i = 0; i < size; i++) 
    cout << arr[i] << " ";   cout << endl; 
} 
 
 
int main() { 
  int arr[] = {10, 7, 8, 9, 1, 5};   int n = sizeof(arr) / sizeof(arr[0]);  
quickSort(arr, 0, n - 1);   cout << "Saralangan massiv: \n";  
printArray(arr, n); 
  return 0; 
} 
 
2-Mavzu: ALGORITM VA UNING TURLARI 
      Reja:             1.Chiziqli algoritmlar; 
         2. Mantiqiy ifoda va mantiqiy amallar 
        3.Tarmoqlanuvchi algoritmlar;         4.Takrorlanuvchi algoritmlar; 
        5.Ichma ich sikllar. 
Har qanday masala yoki muommoni hal etishda ma‘lum bir algoritm 
bo‗yicha harakatlanamiz. Masalalar va ularning algoritmlari ham 
ma‘lum bir turlarga bo‗linadi.  Har qanday murakkab masalani ham 
uchta asosiy strukturaga keltirish mumkin.Algoritmlarni 
umumlashtirgan holda quyidagi turlarga ajratamiz. 
  - Chiziqli algoritmlar;   - Tarmoqlanuvchi algoritmlar;   - 
Takrorlanuvchi algoritmlar. 
 
Chiziqli algoritmlar 
  Masalani hal etish uchun tuzilgan algoritm tarkibidagi buyruqlar ketma 
ketligi uzluksiz bo‘lishi mumkin yoki qandaydir holatlarda shartlar 
asosida uzluksizlik tarqatilishi mumkin. Chiziqli algoritmlarda esa 
buyruqlar ketma-ketligi doim uzluksiz bo‗ladi. 
Algoritmni ijro etishda uning buyruqlari qanday tartibda berilgan bo‘lsa,
o‘sha tartibda bajarilsa, bunday algoritmlarni bajarish ― buyruqlar 
tabiiy tartibiga bo‘ysunadi ― deyiladi. Agar algoritmlarning buyruqlarini
bajarish tabiiy tartibga bo‘ysunsa, bunday algoritmlar  chiziqli 
algoritmlar  deyiladi. Biz to hozirga qadar o‘rgangan barcha algoritmlar 
chiziqli algoritmlardir . 
  Tarif: Algoritm bajarilish vaqtida hech qanday to‘siqqa uchramasdan 
buyruqlar bajarilish ketma-ketligi tabiiy tartibgaga bo‘ysunsa bunday 
algoritmlar  chiziqli algoritmlar  deyiladi. 
  Demak algoritm bajarilishida hech qanday shart bo‗lmaslik va 
uzluksizlik yo‘qolmaslik kerak. Algoritm tuzish vaqtida uning turini  aniqlash uchun masala tarkibida hech qanday shart yoki takrorlanish 
bo‗lmaslik kerak. Har qanday masala algoritmini ham uchta chiziqli, 
shartli va takrorlanuvchi algoritmlar yordamida tasvirlash mumkin. 
Chiziqli algoritmlar bajarilish vaqtida buyruqlar ketma-ketligi 
buzilmasdan davom etadi. Masala tarkibida hech qanday shartlar va 
takrorlanishlar ishtirok etmasa, bunday masalalarni chiziqli algoritmlar 
asosida hal etish mumkin. 
Misol:  x ni qiymati berilganda quyidagi funksiyani hisoblash algoritmini 
keltiring. 
 
 Bu masala algoritmini tuzish jarayoni x nomalumning qiymati 
berilganda y funksiyaning natijasi hisoblanish kerak. Demak faqat x ning
qiymati kiritilib y funksiyaning natijasi hisoblanish kerak bo‗ladi. 
Berilgan masala uchun algoritmning quyidagicha ya‘ni so‗zlar va blok-
sxema ko‗rinishida tasvirlanishiga e‘tibor bering. 
 
Algoritmni so‗zlar yordamida 
tasvirlanishi  Algoritmni blok-sxema yordamida 
tasvirlanishi 
1. boshlanish 
2. x  kiritilsin;  
3.     
      hisoblansin; 4. y chiqarilsin; 5. 
Tamom. 
 
 Boshlash  
 
 x ni kiriting  
Y ni chiqaring  
Tamom    
Blok-sxemalar bilan ishlashni yaxshilab o‗zlashtirib olish zarur, chunki 
bu usul algoritmlarni ifodalashning qulay vositalaridan biri bo‗lib, 
programma tuzishni osonlashtiradi, programmalash qobiliyatini 
mustahkamlaydi. Algoritmik tillarda blok - sxemaning asosiy 
strukturalariga maxsus operatorlar mos keladi.Shuni aytish kerakki, 
blok-sxemalardagi yozuvlar odatdagi yozuvlardan katta farq qilmaydi. 
Faqat ketma-ket bajariladigan amallardan tashkil topgan  algoritmlarga-
chiziqli algoritmlar deyiladi. Bunday algoritmni ifodalash uchun ketma-
ketlik strukturasi ishlatiladi. Strukturada bajariladigan amal mos 
keluvchi shakl bilan ko‗rsatiladi. Aslida programma ham algoritmning 
boshqa bir ko‗rinishi bo‗lib, u insonning kompyuter bilan muloqotini  
qulayroq amalga oshirish  uchun mo‗ljallangan. 
Misol:  Uchburchak tomonlari berilganda unga ichki va tashqi chizilgan 
aylana radiuslarini hisoblash algoritmi tuzilsin. 
Algoritmni so‗zlar yordamida 
tasvirlanishi  Algoritmni blok-sxema yordamida 
tasvirlanishi  1. boshlanish 
2. a,b,c tomonlari uzunliklari 
kiritilsin;  
3. P=(a+b+c)/2; hisoblansin; 
4.  
     hisoblansin; 
5. r = 2S/(a+b+c); R=(abc)/(4S); 
hisoblansin 6.  Tamom. 
 
 
 
Mantiqiy ifoda va mantiqiy amallar  
Mantiqiy ifoda tushunchasi  matematik mantiq(logika) fani  
tushinchlariga tayanib tushuntiriladi. Matematik mantiq deganda 
fikrlashning shakl va qonunlari tushuniladi . Matematik mantiq 
tushunchaga ingliz olimi Jorj Bull tomonidan asos solingan.   
Har qanday mantiqiy ifoda yoki mantiqiy fikr faqat ikki xil qiymat qabul 
qilishi mumkin. Bular rost(true) yoki yolg‘on (false). Masalan Sobir qiz 
bola, po‘lat suyuq modda kabi fikrlarning qiymati yolg‘on yoki suv   da 
muzlaydi, ruchka yozish quroli kabi fikrlar rost. Matematik mantiqiy 
ifodalarni yozishda quyidagi munosabat belgilaridan foydalanadi: 
=,  ,  <,   >, ;    (1)  Agar ikkita ifoda (1)  munosabat belgilari bilan 
birlashtirilgan bo‘lsa bunday yozuv mantiqiy ifoda deyiladi. Masalan:  
1) 32-4=20+5;  2) x+5 2x-1;   3) 26/2*3 39;  4) 49/7+3=2*5;  5)  
a+b>=b+c;  Boshlash  
P=(a+b+c)/2; 
 
r = 2S / ( a + b + c); 
R=(abc)/(4S);  a,b,c ni kiriting  
R va r ni chiqaring  
Tamom   Bu yozuvlarning har biri mantiqiy ifodalar bo‘lib, ulardan 1 va 3-
ifodalarining qiymati yolg‘on, 4-ifodaning qiymati rost, 2 va 5-
ifodalarning qiymati o‘zgaruvchilarning qiymatiga qarab rost yoki 
yolg‘on bo‘ladi. Yuqorida qayd qilganimizdek, faqat ikki xil qiymatlar 
qabul qiladi, ya‘ni  rost  va  yolg‟on . 
Agar ikkita ifoda  bitta munosabat belgisi orqali  birlashtirilgan bo‘lsa, 
bunday mantiqiy ifodalar  oddiy mantiqiy ifodalar  deyiladi. 
Agar mantiqiy ifoda tarkibida  mantiqiy amallardan  ham foydalanilgan 
bo‘lsa, bunday mantiqiy ifodalar  murakkab mantiqiy ifodalar  deyiladi. 
Murakkab mantiqiy ifodalar tarkibida quyidagicha mantiqiy amallardan 
foydalaniladi.  (┐  ᴠ   ᴧ  
) 
1.  Mantiqiy qo‟shish amali.   Amalning umumiy ko‘rinishi 
quyidagicha   a v b 
Bunda  a  va  b  lar mantiqiy o‘zgaruvchilar yoki mantiqiy ifodalar bo‘lib, 
bu amal natijasi  a  va  b  larning har ikkalasi yolg‘on bo‘lgandagina 
yolg‘on, qolgan barcha hollarda rost bo‘ladi. Demak,  ᴠ   belgisi   yoki  
so‘zinini almashtiradi yoki matematik mantiq elementlaridagi 
dizyunksiya amaliga  mos keladi.   
Masalan : (3>7)   ᴠ  (2*18=37) – ifodaning qiymati yolg‘on(false)                  
(25-14 11)   ᴠ  (45/9=5) – ifodaning qiymati rost(true)                    true  ᴠ  
(29-19=10) – ifodaning qiymati rost(true) 
Byndan tashqari mantiqiy ifodaning qiymatini mantiqiy o‘zgaruvchiga 
qiymat sifatida berish ham mumkin. Masalan,    a:=13-5>12; b:=(56/8-
7<2)   ᴠ   true; c:=false   ᴠ   a;  bo‘lsa,   a  ᴠ   b   ᴠ   c   ᴠ  
(64/8>10)    mantiqiy ifodaning qiymati rost bo‘ladi. 
 
2. Mantiqiy ko‟paytirish amali.   Amalning umumiy ko‘rinishi 
quyidagicha   a  ᴧ  b  Bunda  a  va  b  lar mantiqiy o‘zgaruvchilar yoki mantiqiy ifodalar bo‘lib, 
bu amal natijasi  a  va  b  larning har ikkalasi chin bo‘lgandagina chin, 
qolgan barcha hollarda yolg‘on bo‘ladi. Demak,  ᴧ   belgisi   va  so‘zinini 
almashtiradi yoki matematik mantiq elementlaridagi  konyuksiya 
amaliga  mos keladi.  Masalan: 
 (3>7)  ᴧ   (2*18=37) ifodaning qiymati yolg‘on 
 (25-14 11)  ᴧ   (45/9=5) – ifodaning qiymati rost  
(13>-12)  ᴧ   (2*18=37) ifodaning qiymati yolg‘on 
3. Mantiqiy inkor amali.   Amalning umumiy ko‘rinishi quyidagicha  
┐a      
Bunda  a  mantiqiy o‘zgaruvchi yoki mantiqiy ifoda bo‘lib, bu amal 
natijasi  a  ning qiymati yolg‘on bo‘lganda rost, rost bo‘lganda yolg‘on 
bo‘ladi, ya‘ni bu amal  a  mulohazani inkor qiladi.  Demak,  ┐  belgisi   emas  
so‘zinini almashtiradi. .  Masalan: 
1) (3>7)  ᴧ ┐ (2*18=37)   ifodaning qiymati yolg‘on 
2) ┐ (25-14 11)  ᴧ   (45/9=5)    ifodaning qiymati yolg‘on 3)  (13>-
12)  ᴧ  ┐ (2*18=37)   ifodaning qiymati rost 
4)  ┐true  ᴠ  ┐false  ᴧ  ┐true  ᴧ  ┐false   ifodaning qiymati yolg‘on 
 
         Eslatma : Biz bilgan amallar ifodada aralash holda kelsa, ularning 
birinchi bajarilishi nuqtai nazaridan ustunlik darajasi quyidagicha: 
┐,  (*, /),   ᴧ ,  (+, -),   ᴠ ,  (=, ), (>, <, ) 
Bunda qavsga olingan amallar bir bosqich amallari hisoblanadi. Tabiiyki,
matematikada bo‘lgani singari ifodadagi qavslar amallar bajarilish 
tartibina buzadi. 
Masalan, 
             14            1    2      3         11        4    5       13   10       6     7        12      8     9           
┐  ((13*5-25=40)   ᴧ  (13-3=10)  ᴠ   ┐ (5+7=12)  ᴧ  (2*9=20));  
 
3-Mavzu:  Malumotlar turlari  va  malumotlar  tuzulmalari.  
Malumotlar toifasi –bu o’zgaruvchilarning turi va hotiradan qancha joy 
egallashini belgilab beruvchi kerakli omil. Foydalanilgan o’zgaruvchiga 
to’gri tipni belgilash muhim vazifalardan biridir sababi bu orqali  biz, 
yaratayotgan dasturimizda yuzaga keladigan ba’z bir muammolarni ldini
olishimiz  eng asosiysi vaqt tejalishini  va dasturning hotiradan kamroq  
joy egallashiga erishishimiz  mumkin. C# dasturlash tili keng 
ko’lamdagimalumotlar toifasini o’zida  mujassamlashtirgan/  Quyidagi 
bir  nechta  malumotlar  toifasiga  birikkan holatda  o’zgaruvchilarni  
hosil  qilishni ko’rishimiz mumkin.
С # da Malumotlar toifasi asosan ikki turga  bo’linadi. Qiymatli(value)    
va malumotli (reference) Value  turdagi  toifalarga  -odatiy tiplar  
(sonli(int, float,double..), mantiqiy (bool),belgili (char) va matnli 
(string)), enum turlari  vastrukturalari kabilar kiradi. С #da oldindan tashkil qlinganbir qancha tiplar  mavjud  Quyidagi 
jadvalda  ulardan bazilarini ko’rishimiz mumkin.
Ma'lumotlar strukturasi  (ing. data structure)  - bu hisoblashda turli xil 
bir tipli va (yoki) mantiqiy bog'liq ma'lumotlarni saqlash va qayta 
ishlashga imkon beradigan dastur birligi. Ma'lumotlarni qo'shish, izlash, 
o'zgartirish va yo'q qilish uchun ma'lumotlar tarkibi uning interfeysini 
tashkil etadigan funksiyalar to'plamini taqdim etadi.
“Ma'lumotlar strukturasi” atamasining bir-biriga yaqin bo’lgan bir 
nechta ma’nolarini anglatuvchi variantlari mavjud: - Ma'lumotlarning abstrakt turi;
- Ma'lumotlarning ba'zi bir abstrakt turlarini realizatsiya qilish;
- Ma'lumotlar tipining nusxasi, masalan, aniq bir  ro'yxat ;
- Funksional dasturlash kontekstida o'zgarishlarda davom etadigan 
noyob identifikator. 
Turli xil versiyalar mavjud bo'lishiga qaramay, u norasmiy ravishda 
ma'lumotlar strukturasi  deb nomlanadi.
Ma'lumotlar strutkturasi ma'lumotlar turlari, havolalar va ular ustida 
amallar yordamida tanlangan dasturlash tilida shakllanadi.
Turli xil ma'lumotlar strukturalari turli xil ilovalar uchun mos keladi; 
ularning ba'zilari ma'lum vazifalar uchun tor ixtisoslashgan. Masalan, B-
daraxtlar odatda ma'lumotlar bazalarini yaratishga yaroqli bo'lsa, xesh 
jadvallar hamma joyda har xil lug'atlarni yaratish uchun ishlatiladi, 
masalan, domen nomlarini kompyuterlarning Internet-manzillariga 
xaritalash uchun.
Struktura va ularni e‟lon qilish 
   C++ dasturlash tili tarkibida bir nechta turlarni birlashtirib bitta tur 
asosida ma‘lumotlar bazasini yaratish va ularni qayta ishlash imkoniyati 
keng yaratilgan. Bir nechta turlarni birlashtirish natijasida strukturalar 
hosil qilib C++ dasturlash tili tarkibida tashkilotlarga tegishli bo‗lgan bir 
nechta masalalarni hal etish imkoniyati mavjud.  
Ta‘rif: C++ dasturlash tilida bir yoki bir nechta turlarni jamlanmasini 
birlashtirish struktura deb nomlanadi. 
Strukturalarni ba‘zi hollarda yozuvlar ham deb ataladi, strukturalar 
tarkibidagi turlarning har biri maydon deb nomlanadi. 
Ta‘rif: Ob‘yektning bitta xususiyatini uzida saqlaydigan parameter 
maydon deb nomlanadi.  Talaba haqida ma‘lumotlar strukturasi hosil qilinishda quyidagi 
maydonlar bo‗lishi mumkin: Talabani familyasi, ismi, otasining ismi, 
tug‘ilgan vaqti, telefoni, manzili va hakoza. Strukturalar maydonlardan 
tashkil topgan ekan, struktura tarkibidagi har bir maydon strukturani 
bitta parametrini o‗zida saqlaydi. Struktura maydoni uchun xotira 
hajmi,  mayon uzunligiga teng bo‗ladi. Struktura maydoni qiymatlari 
ifodalarda ishlatilishi mumkin.  C++ dasturlash tilida strukturalarni e‘lon 
qilishda  struct  xizmatchi so‗zidan foydalaniladi. Struktura e‘lon 
qilingandan so‗ng dastur tarkibida o‗zgaruvchilarni struktura nomi 
bilan e‘lon qilinadi.  
C++ dasturlash tilida strukturalarni tasvirlashning umumiy ko‗rinishi 
quyidagicha ko‗rinishda bo‗ladi:  struct <struktura nomi> {  <tur1> 
<maydon 1>; 
    <tur2> <maydon 2>; 
    _  _  _  _   _   _  _ 
   <tur n> <maydon n>; 
}; 
Strukturalarni tasvirlashda struct xizmatchi so‗zidan keyin struktura 
nomi va fegurali qavsda uning maydonlari kiritilishi shart. Structura 
nomi  masala mohiyatiga qarab tanlansa, maqsadga muvofiq. Masalan, 
talabalar haqida ma‘lumotlar bazasida struktura nomini talaba yoki 
supermarket mahsulotlari narxlari bazasida esa narx deb nomlash 
mumkin. Strukturalar tarkibidagi maydonlarni e‘lon qilish xuddi oddiy 
o‗zgaruvchilarni e‘lon qilishdek bajariladi va oxiri blok yopilishidan 
so‗ng, albatta, nuqtali vergul qo‗yilishi shart. 
Strukturalar yartish jarayonini tushunish uchun C++ dasturlash tilida 
talabalar haqida ma‘lumotlar bazasini struktura yordamida quyidagicha 
hosil qilinadi:  Misol:  Talabalar(familyasi, ismi, telefoni, reytingi, tug‘ilgan yili) haqida 
ma‘lumotlarga asosan c++ dasturlash tilida struktura hosil qiling.   
 
   #include <iostream.h> using namespace std;      struct talaba 
{ char[20] fam;  //familyani saqlovchi maydon char[20] ism;  
//ismni saqlovchi maydon 
char[20] tel;   //telefonni saqlovchi maydon int reyting;     //reyting
balini saqlovchi maydon int tugy;         //tug‘ilgan vaqtini saqlovchi 
maydon 
 
}; 
  int main()                                  
  {   
      return 0; 
   }                                                  
 
Yuqoridagi masalada talaba haqida ma‘lumotlar strukturasini hosil 
qilishda struktura nomiga talaba deb nomlandi va uning maydonlari 
familyasi(fam), ismi(ism), telefoni(tel), reytingi(reyting), tug‘ilgan 
yili(tugy) ko‘rinishlarida tasvirlandi. Maydonlarni e‘lon qilishda  dastur 
tarkibida qanday maqsadlarda foydalanishi e‘tiborga olinishi kerak. 
Agar dastur tarkibida maydonlar ustida hisob ishlari olib borilmasa, 
uning turini char yoki string turi ko‗rinishida e‘lon qilinsa, dastur bir 
muncha yengil ishlaydi. 
 
Strukturalarga murojat qilish va ulardan foydalanish  C++ dasturlash tili tarkibida yaratilgan strukturalardan foydalanish 
mumkin, faqat qayta ishlanadigan ma‘lumotlar bazasi uchun olingan 
struktura o‗zgaruvchisini yaratilgan struktura nomi bilan e‘lon qilish 
kerak. Talaba haqida ma‘lumotlarni qayta ishlash davrida bitta 
talabaning bir nechta parametrlariga murojat qilish mumkin. 
Dasturlashda struktura o‗zgaruvchisini e‘lon qilishda tur sifatida 
struktura nomi beriladi.  Talaba haqida ma‘lumotlar bazasini hosil 
qilishda talaba deb nomlangan struktura yaratiladi, talabalar 
ma‘lumotlar bazasini esa A o‗zgaruvchiga saqlanadi, A o‗zgaruvchini 
turini talaba deb nomlanadi. Struktura o‗zgaruvchisini e‘lon qilishning 
umumiy ko‗rinishi quyidagicha bo‗ladi:  
<struktura nomi> <struktura o„zgaruvchisi>  Talaba ma‘lumotlar 
bazasini qayta ishlash uchun talaba nomi bilan struktura yaratib, 
ma‘lumotlarni esa A o‗zgaruvchiga saqlanish holatini e‘lon qilish 
jarayonini quydagi dastur yordamida ko‗rib chiqamiz: 
 
   #include <iostream.h> using namespace std;      struct talaba 
{ 
char[20] fam;  //familyani saqlovchi maydon 
char[20] ism;  //ismni saqlovchi maydon char[20] tel;
//telefonni saqlovchi maydon int reyting;     //reyting
balini saqlovchi maydon int tugy;         //tug‘ilgan 
vaqtini saqlovchi maydon 
 
}; 
  int main()                                  
  {  talaba A;  // A o‗zgaruvchini talaba turi bilan 
e‘lon qilish       return 0; 
    }                                                    
 Demak  ma‘lumotlar  bazasini  yaratishda  uning  uchun
ajratilgan o‗zgaruvchini struktura nomi bilan e‘lon qilish kerak.  
C++ dasturlash tilida struktura maydoniga murojat qilish uchun 
struktura nomi va maydon nomi nuqta bilan birlashtirilgan holda 
amalga oshiriladi.Struktura ma‘lumotlarini dastur tarkibiga kiritish 
vaqtida har bir maydon elementlarini kiritish kerak bo‗ladi. C++ 
dasturlash tilida strukturalarga murojat qilishning umumiy ko‗rinishi 
quyidagicha bo‗ladi: 
<operator funksiya> <struktura o„zgaruvchisi>.<maydon nomi> 
 Strukturalarga murojatni amalga oshirish uchun quyidagi masalaga 
e‘tibor qarating: 
Misol:  Supermarketdagi ichimlik narxi, saqlash yili haqida ma‘lumot 
berilgan 2015 yildan hozirgacha chiqarilgan ichimliklarni narxini 
chiqaring aks holda muddati o‗tganligini aniqlang. 
Bu masalani hal etish uchun ichimlik nomli struktura yaratiladi, 
strukturani ikkita narxi va saqlash muddati uchun maydonlari mavjud 
bo‗ladi. Ichimlik haqidagi ma‘lumotni A o‗zgaruvchiga saqlaymiz. A 
o‗zgaruvchini saqlash muddati maydonini 2015 bilan solishtiriladi, agar 
kichik bo‗lsa, muddati o‗tgan aks holda narxi chiqariladi.  
   #include <iostream.h> using namespace std;      struct ichimlik 
{ string nomi;  //ichimlik nomini saqlovchi maydon int narx;        
//ichimlik narxini saqlovchi maydon 
int muddat;  //ichimlik saqlash muddattini saqlovchi maydon  }; 
  int main()                                  
  {  ichimlik A;    cin>>A.nomi;    cin>>A.narx;    cin>>A.muddat; 
   if(A.muddat<2015) cout<<"muddat utgan";     else 
cout<<A.narx<<"sum"; 
         return 0; 
   }                                                  
Kiritishga ma‘lumot 
Pepsi   4500  2014  
 
Fanta   5000   2016  Dastur natijasi 
muddat utgan 
 
5000 sum 
 
C++ dasturlash tilida strukturalar yaratib ularga murojat qilish oddiy 
o‗zgaruvchilar kabi bajariladi faqat struktura o‗zgaruvchisi nuqta bilan 
maydon nomi yoziladi. Biror bir tashkilot yoki mussasa ma‘lumotlar 
bazasi yaratish uchun struktura o‗zgaruvchisini ko‗p qiymatidan 
foydalanishga to‗g‘ri keladi. Struktura o‗zgaruvchisini ikki va undan 
ortiq qiymatlariga murojat qilish uchun struktura o‗zgaruvchisini 
massiv sifatida qarash mumkin. 
 
Struktura massivi 
Dasturlash tarkibida strukturalardan yakka tartibda foydalanish 
maqsadga muvofiq bo‗lmaydi. Strukturalar biror bir tashkilot 
ma‘lumotlar bazasi berilganda ularning qayta ishlash uchun qulay vosita
hisoblanadi. Agar strukturalar bir nechta qiymatlar uchun ishlatilsa, 
struktura o‗zgaruvchisini struktura massivi sifatida qarash kerak.  
Ta‘rif: struktura o‗zgaruvchisi bir nechta qiymatlar uchun ishlatilsa, 
struktura o‗zgaruvchisi struktura massivi deb ataladi.  Struktura massivini e‘lon qilish, xuddi oddiy massiv kabi e‘lon qilinadi, 
faqatgina massiv turiga struktura nomi ko‗rsatiladi. C++ dasturlash 
tilida struktura massivlarini e‘lon qilishning umimiy ko‗rinishi 
quyidagicha bo‗ladi: 
<struktura nomi> <struktura massivi>[<qiymatlar soni>] 
Struktura massiviga murojat qilish uchun massiv elementlariga murojat 
qilishdek bajariladi faqatgina massiv elementlari maydon nomi bilan 
birga murojat qilinadi. Talabalar haqida ma‘lumotlar yaratish va ularni 
qayta ishlash uchun  struktura massividan foydalanish kerak, chunki 
bitta talaba uchun bir nechta parametr ishlatiladi va ma‘lumotlar 
bazasida n ta talaba haqida ma‘lumot saqlanadi.  
Misol:  N ta talaba haqida ismi, familyasi, tug‘ilgan yili haqida ma‘lumot
berilgan 20 yoshda katta bo‗lgan talabalarning ismi va familyasini 
ekranga chiqaruvchi dastur tuzing.     #include <iostream.h> using namespace std;      
struct talaba 
{  string fam;  string ism;  int tyili; 
}; 
int main(int argc, char* argv[]) { talaba A[50];   int n=3;
   for(int i=0;i<n;i++) 
   { 
   cin>>A[i].fam;    cin>>A[i].ism;    cin>>A[i].tyili; 
   } 
   for(int i=0;i<n;i++)    if((2017-A[i].tyili)>20) 
   {cout<<A[i].fam<<" ";  cout<<A[i].ism<<"\n"; }         
return 0; 
    }                                                  
Kiritishga ma‘lumot
Allayorov Jasur 
1995 
Abduvaliv Umar 
1998 
Saydiyev Sardor  
1996  Dastur natijasi 
Allayorov Jasur  
Saydiyev Sardor   
 
Misol: o„ qituvchilarning ismi, familyasi, ilmiy darajasi haqida ma‘lumot 
berilgan siz professorlar, dotsentlar, assistentlar sonini aniqlovchi 
dastur tuzing. 
   #include <iostream.h> using namespace std;      struct uqituvchi  {  string fam;  string ism;  string idaraja; 
}; 
int main(int argc, char* argv[]) { uqituvchi A[50];   int n=3; 
for(int i=0;i<n;i++) 
   { 
   cin>>A[i].fam;    cin>>A[i].ism; 
   cin>>A[i].idaraja; 
   } 
    int p=0,d=0,s=0;    for(int i=0;i<n;i++)
{    if(A[i].idaraja=="professor") p++;     
if(A[i].idaraja=="dotsent") d++; 
    if(A[i].idaraja=="assistent") s++; 
   } 
  cout<<"professorlar soni "<<p<<"\n";    
cout<<"dotsentlar soni "<<d<<"\n"; 
   cout<<"assistentlar soni "<<s;        return 0; 
    }                                                  
Kiritishga ma‘lumot 
Nazarov Fayzullo 
assistent 
Urunbayev Erkin  
dotsent 
Israilov Ismail  
professor   Dastur natijasi 
professorlar soni 1  
dotsentlar soni 1 
assistentlar soni 1   
  C++ dasturlash tilida ma‘lumotlar bazasini ma‘lum bir qismlarini 
yaratish va ularni qayta ishlash imkoniyatini strukturalar yordamida 
amalga oshirish mumkin.C++ dasturash tili tarkibida strukturalar va 
ulardan foydalanish yuqoridagi holatlar bo‗yicha amalga oshiriladi. 
4-M avzu: Masalalarni  modelini  yaratish. Prodsessual va 
malumotlarni   abtraksiya  qilish.  Masalan     manashui ifodaning algoritmining ikki xil 
ko’rinishi Yuqorida keltirib o‗tilgan algoritm bilan massiv kamayish tartibida 
ham saralash mumkin, faqatgina sikl ichidagi shartni almashtirish 
kerak. Kamayish bo‗yicha tartiblash uchun C++ dasturlash tilida 
quyidagi dasturga e‘tibor bering. 
 
   #include <iostream.h> 
  using namespace std;      
  int main()                                 
  {      int a[90];      int n,t; 
cout<<‖n=‖;        cin>>n;     
       for(int i=0;i<n;i++)           
cin>>a[i];          for(int 
i=0;i<n-1;i++)          for(int 
j=i+1;j<n;j++)           
if(a[i]<a[j])  {  t=a[i];                
a[i]=a[j];                                 
a[j]=t; 
                                 } 
          for(int j=0;j<n;j++)  
            cout<<a[j]<<‖ ‖; 
        return 0;                             
}                                                  
Kiritish uchun ma‘lumot 
n=5 
3  5  1  0  6  Dastur natijasi 6  5  3  1  0   
  Saralash uchun bir nechta usullar mavjud, lekin ko‗p hollarda biz 
ketmaketliklarni saralashda vaqt chegarasidan yutqazib qo‗yamiz.  
Bunday holatlarni oldini olish uchun ba‘zi mavjud usullarni keltiramiz. 
O‗rniga qo‗yish usuli bilan saralash algoritmi:  Bunda ikkinchi 
elementdan boshlab har bir element tanlab olinib o‘zidan oldingi 
elementlar bo‗yicha solishtiriladi. Natijada tanlangan element o‘zidan
oldingi elementlar ichida solishtirish natijasida o‘z joyiga borib 
tushadi. Bu holat toki oxirgi elementgacha bajarilib boradi.  
 Algoritmdagi jarayonni aniqlash uchun quyidagi masalaga e‘tibor 
bering. A=[3; 5; 1; 0; 6] ketma ketlikni o‗rniga qo‗yish usuli bilan 
saralash algoritmi bo‗yicha quyidagi almashtirishlar hosil bo‗ladi. 
[3; 5; 5; 0; 6], [3; 3; 5; 0; 6] , [1; 3; 5; 0; 6] , [1; 3; 5; 5; 6], [1; 3; 3; 5; 6], 
[1; 1; 
3; 5; 6], [0; 1; 3; 5; 6] 
Ushbu jarayonni amalga oshiruvchi algoritm quyidagicha: 
 Algoritm bo‗yicha C++ tilida quyidagi dastur asosida ko‗p 
elementdan iborat massivlarni ham saralash mumkin. 
   Bosh  
N,A[i]  
(l>=1)   1  0   i=2;i<=N;i++  
x=a[i]; l=i - ;1
 
A[l+1]=A[l];   l = l - 1 ;
    A[l+1]=x;   A   Tamom   #include <iostream.h> 
#include <vcl.h> #pragma hdrstop  using namespace std; #pragma 
argsused 
int main(int argc, char* argv[]) 
{   int l,i,x,n;    int a [100];   cout<<"n="; cin>>n; 
   for(int i=1;i<=n;i++) cin>>a[i];    for(int i=2;i<=n;i++) 
{ x=a[i]; l=i-1;   while((l>=1)&(a[l]>x)) { a[l+1]=a[l]; l=l-1; }   a[l+1]=x; 
} 
      for(int j=1;j<=n;j++) cout<<a[j]<<" ";        system("pause");         
return 0; } 
  
  O‗rin almashtirish usuli bilan saralash algoritmi:  Usulning asosiy 
prinsipi katta elementlarning ro‗yxat uchiga otilib chiqadi va bu 
vaqtda kichik qiymatlar pastga tushadi. Usulda ichma ich sikldan 
foydalaniladi birinchi n-1 marta, ikkinchi n-2 marta va oxiri bir marta 
har bir element o‘zidan keyingi element bilan solishtiriladi. 
 Bunda kichik elementlar ro‗yxat oxiriga katta elementlar ro‗yxat 
boshiga tushadi. Kuzatish mumkinki, har bir o‗tishda bir qancha 
elementlar siljiydi va bitta elementgina o‗zining o‗rnini qat‘iy 
egallaydi. 
 Algoritmdagi jarayonni aniqlash uchun quyidagi masalaga e‘tibor 
bering. A=[3; 5; 1; 0; 6] ketma ketlikni o‗rin almashtirish usuli bilan 
saralash algoritmi bo‗yicha quyidagi almashtirishlar hosil bo‗ladi. 
[3; 1; 5; 0; 6], [3; 1; 0; 5; 6] , [1; 3; 0; 5; 6] , [1; 0; 3; 5; 6], [0; 1; 3; 5; 6] 
O‗rin almashtirish usuli bilan saralash algoritmining ko‗rinishi 
quyidagicha:    O‗rin almashtirish usuli C++ tilida quyidagi ko‗rinishda bo‗ladi. 
#include <cstdlib> #include <iostream> using namespace 
std; 
int main(int argc, char *argv[]) 
{   int l,i,x,n,t;    int a [100];   cout<<"n="; cin>>n;      int 
N1=n;  x=1;    for(int i=1;i<=n;i++) cin>>a[i];    while(x==1) 
{  N1--; x=0;  
  for(int i=1;i<=N1;i++)   
  if (a[i]>a[i+1])  
   {t=a[i]; a[i]=a[i+1]; a[i+1]=t; x=1;}   } for(int j=1;j<=n;j++) 
cout<<a[j]<<" "; 
       system("PAUSE"); return 0;    return EXIT_SUCCESS; } 
   Yuqoridagi ikki saralash usuli yordamida ko‗p elementli massivlarni 
qisqa vaqt ichida saralash imkoniyatiga ega bo‗lamiz.
Ma’lumotlarning ierarxik va tarmoq modellari  Bosh  
  N,A[i],N1=N,x=1  
X=1   1  
0   N1 -- ; x=0;  
i=1;i<=N1;i+ +  
A[i]>A[i+ 1 ]  
t=A[i]; A[i]=A[i [; A+1] i t;+1]=   x=1;  1  0  
A  
Tamom   Mashina muhitidagi ma’lumotlarning murakkabroq modellari -  
tarmoqli  va  ierarxik  modellar bo‘lib hisoblanadi. Bu modellar ularning 
o‘zlariga xos turdagi ma’lumotlar bazasini boshqarish tizimida 
ishlatiladi. MBBTda ma’lumotlarni mantiqiy tashkil etish usuli 
ma’lumotlarning tarmokli yoki ierarxik modeliga mos holda ko‘rsatiladi. 
Bunday model o‘zaro bog‘liq ob’ektlarning majmuidir. Ikki ob’ektning 
aloqasi ularning bir-biriga tobeligini aks ettiradi. Tarmokli yoki ierarxik 
modelida ob’ekt bo‘lib, MBBT kiritilgan ma’lumotlar tuzilmasining 
asosiy turlari hisoblanadi. Turli MBBTlarda bu turdagi ma’lumotlarning 
tuzilmasi turlicha aniqlanishi va nomlanishi mumkin.
Modellarda ma’lumotlarning tuzilmalari. Ma’lumotlarning namunaviy 
tuzilmalariga quyidagilar kiradi: ma’lumotlarning elementi, 
ma’lumotlarning agregati, yozuv, ma’lumotlar bazasi va h.k. Bu 
elementlar va agregatlai o‘zaro aloqada bo‘lgan tuzilma bilan 
tavsiflanadi. SHuning uchun yozuvning tuzilmasi ierarxik xarakterga ega 
bo‘lishi mumkin. Bir xil tuzilmaga ega bo‘lgan yozuv nusxalari 
to‘plamining hammasi yozuv turini tashkil etadi. 
Ma’lumotlarning elementi  - bu ma’lumotlar tuzilmasining nomlangan 
minimal birligi (faylli tizimlardagi maydonning o‘xshashi).
Ma’lumotlar agregati  - bu ma’lumotlar elementlarning quyi to‘plami 
yoki yozuvlar ichidagi boshqa agregatlarning nomlangan quyi to‘plami.
YOzuv  - umumiy holda agregat bo‘lib, u boshqa agregatlarning tarkibiga
kirmaydigan tarkibli agregatdan iborat.
Ob’ektlarning modellardagi aloqasi . Ma’lumotlar modeli bir necha 
turidagi yozuvlarni (ob ь ektlarni) o‘z ichiga olishi mumkin. Ma’lumot 
modeli ob’ektlar o‘rtasida aloqalar o‘rnatadi. Qandaydir bir predmet 
sohasi uchun modelning o‘zaro bog‘langan muayyan ob’ektlar to‘plami 
ma’lumotlar bazasini tashkil qiladi.
Ikki turdagi yozuvlarning (model ob’ektlari) o‘rtasidagi aloqalar, 
ularning nusxalari o‘rtasidagi guruh munosabatlari bilan aniqlanadi. 
Guruh munosabati - bu ikki turdagi yozuvlar o‘rtasidagi kat’iy ierarxik  munosabat bo‘lib, ular asosiy yozuvlar to‘plami va tobe yozuvlar 
to‘plamidan iboratdir.
Ierarxik modellarda kalit bo‘yicha bevosita kirish odatda, faqat boshqa 
ob’ektlarga tobe bo‘lmagan eng yuqori pog‘onadagi ob’ektgagina 
mumkin. Boshqa ob’ektlarga kirish modelning eng yuqori pog‘onasidagi 
ob’ektdan aloqalar bo‘yicha amalga oshiriladi. Tarmoqli modellarda esa 
kalit bo‘yicha bevosita ixtiyoriy ob’ektga kirish (uning modelda 
joylashgan pog‘onasidan qa’tiy nazar) ta’minlanishi mumkin.. 
SHuningdek, aloqalar bo‘yicha har qanday nuktadan kirish ham 
mumkin. Tarmokli modellarda ob’ekt (yozuv, fayl)ning tuzilmasi    
ko‘pincha chiziqli va kamroq hollarda esa ierarxik bo‘ladi. Quyi 
pog‘onadagi ma’lumotlarning tuzilmasi ham o‘z xususiyatga va nomiga 
ega bo‘lishi mumkin. Masalan, atribut bu ma’lumotlar elementining 
analogi. CHiziqli tuzilmaga ega bo‘lgan ob’ekt faqat oddiy va kalit 
atributlardan iborat. Ierarxik modellardagi ob’ekt (yozuv, segment) 
tuzilmasi ierarxik yoki chiziqli bo‘lishi mumkin.
Turli predmet sohalari uchun ma’lumotlarning tarmokli modeli ierarxik 
modeliga nisbatan mashinaning ish muhitida    axborot tuzilmalarini aks 
ettiruvchi umumiy vosita hisoblanadi. Ko‘plab predmet sohalarining 
ma ь lumotlari o‘rtasidagi aloqalar tarmoqli ko‘rinishga ega. Bu esa 
ma’lumotlarning ierarxik modeliga ega bo‘lgan MBBTdan foydalanishni 
cheklab qo‘yadi. Tarmoqli modellar, ma’lumotlarning ierarxik aloqasini 
ham aks ettirishga imkon beradi. Bundan tashqari, tarmoqli modellar 
bilan ishlash texnologiyasi foydalanuvchi uchun qulaydir, chunki 
ma’lumotlarga kirishni amalga oshirishda hech qanday cheklashlar yo‘q 
va bevosita ixtiyoriy pog‘onadagi ob’ektlarga kirish imkoni mavjud.
Ierarxik ma’lumotlar bazasida - ma’lumotlar ierarxiya (daraxt) 
ko‘rnishida saqlanadi. Uning ko‘rinishini quyidagicha tasvirlash mumkin. Ma’lumotlarning ierarxik modeli
Masalan, bu erda A12 tugunidagi ma’lumotni olish uchun, oldin MBdan 
A tugun, keyin A1 tugun va undan keyin A12 topiladi. 
Tarmoq ma’lumotlar bazasi - ichki ma’lumotlar strukturasi, biri 
ikkinchisiga boqliq ravishda bo‘ladi.  Uning ko‘rinishini quyidagicha 
tasavvur qilish mumkin.
Ma’lumotlarning tarmoq modeli
Ierarxik va tarmoq modellarida ma’lumotlar tasvirining murakkabligi va 
bu ma’lumotlar orasidagi aloqani MBni loyihalashda aniqlash kerak 
bo‘lib, bu esa MBga so‘rov berilganda rellyasion MB jadvallari orasida 
aloqa o‘rnatishni taminlab beradi.

MAVZU: AXBOROT JARAYONLARINI ALGORITMLASH VA DASTURLASH Reja: 1. ALGORITM HAQIDA TUSHUNCHA VA UNING ASOSIY XOSSALARI, IFODALASH USULLARI, TURLARI. 2. ALGORITM BLOK SXEMALARI. 3. TARMOQLANUVCHI HISOBLASH JARAYONLARINI ALGORITMLASH VA DASTURLASH. 4. TAKRORLANUVCHI HISOBLASH JARAYONLARINI ALGORITMLASH VA DASTURLASH. ALGORITM HAQIDA TUSHUNCHASI Algoritm d е b, masalani е chish uchun bajarilishi lozim bo’lgan amallar k е tma-k е tligini aniq tavsiflaydigan qoidalar tizimiga aytiladi. Boshqacha aytganda, algoritm –boshlang’ich va oraliq ma`¬lumotlarni masalani е chish natijasiga aylantiradigan jarayonni bir qiymatli qilib, aniqlab b е radigan qoidalarning biror bir ch е kli k е tma- k е tligidir. Buning moxiyati shundan iboratki, agar algoritm ishlab chiqilgan bo’lsa, uni е chilayotgan masala bilan tanish bo’lmagan biron bir ijrochiga, shu jumladan kompyut е rga xam bajarish uchun top¬shirsa bo’ladi va u algoritmning qoidalariga aniq rioya qilib masalani е chadi. Hozirgi kunda hisoblash, muhandis-t е xnik, iqtisodiy, matnli va sonli axborotlarni tax lil qilish va boshqa masalalarni е chish tillari malum. Masalan: FORTRAN tili 1954 yili ishlab chiqilgan bo’lib, FORmula TRANsla tor - formulalar translyatori d е gan manoni anglatadi va ilmiy va muhandis - t е xnik masalalarni hisoblashlarda qo’llaniladi.

ALGOL tili 1960 yili yaratilgan bo’lib, ALGORITMIC Langauge - algoritmik til d е gan ma'noni anglatadi va ilmiy-t е xnik masalalarni hisoblashlarda qo’llaniladi. KOBOL tili 1959 yili yaratilgan bo’lib, Common Businees Oriented Langauge - “savdo-sotiq masalalariga mo’ljallangan til” d е gan ma'noni anglatadi. Korxona va tarmoqning moddiy boyligini, moliyasini, ishlab chiqargan mahsulotini hisobga olish bilan bog’liq iqtisodiy masalalarni е chish uchun qo’llaniladi. PASKAL tili 1971 yilda e`lon qilingan bo’lib, frantsuz olimi Bl е z Paskal nomiga qo’yilgan. Turli xildagi masalalar е chimini olishda tartiblangan (strukturaviy) dasturlar tuzishda qo’llaniladi. PL/1 tili 1964 yilda yaratilgan bo’lib, Programming Langauge/ 1 - 1- tartib raqamli dasturlash tili ma'nosini anglatadi. Ushbu til univ е rsal tillar turkumiga kiradi. Bu tilda ishlab chiqilgan dasturlar kompyuterni yangisi bilan almashtirilganda qaytadan tuzib chiqilishi zarur emas. B Е YSIK (BASIC - Beginner's All Purpose Sumbolic Instruction Code - boshlovchilar uchun ko’p maqsadli dasturlash tili) hisoblash algoritmlarini yozish uchun qo’llaniladigan algo ritmik tildir. Bu til 1965 yilda Dartmut koll е ji xodimlari K е mini va Kurtslar tomonidan ishlab chiqilgan. Algoritmning asosiy xossalari. Algoritm quyidagi asosiy xossalarga ega: uzluklilik, aniqlik, natijaviylik va ommaviylik. UZLUKLILIK. Dastlabki b е rilgan malumotlarni natijaga aylantirish jarayoni uzlukli ravishda amalga oshiriladiki, bunda vaqtning xar bir k е yingi k е ladigan daqiqasidagi miqdor (kat¬talik)larning qiymati vaqtning shundan oldingi daqiqasida bo’lgan miqdorlar qiymatidan ma`lum bir qoidalar bo’yicha oli¬nadi.

ANIQLIK. Algoritmning xar bir qoidasi aniq va bir qiy¬matli bo’lishi zarurki, bunda vaqtning biror daqiqasida olin¬gan miqdorlar qiymati vaqtning shundan oldingi daqiqasida olingan miqdorlar qiymati bilan bir qiymatli aniqlangan bo’ladi. NATIJAVIYLIK. Algoritm masalaning е chimiga ch е kli sondagi qadamlar ichida olib k е lishi yoki masalani " е chib bo’lmaydi" d е ¬gan xabar bilan tugashi k е rak. OMMAVIYLIK. Masalaning е chish algoritmi shunday yaratilishi k е rakki, uni faqat boshlang’ich malumotlar bilan farqlanadigan masalalarni е chish uchun xam qo’llanilishi k е rak. Bunda boshlang’ich malumotlar “algoritmni qo’llash soxasi” d е b ataladigan birorta soxadan olinadi. Algoritmni ifodalash usullari Algoritmni ishlab chiqishda uni bir n е cha xil usul bilan ifodalab b е rsa bo’ladi. Shulardan uchtasi kеng tarqalgan. Bu¬lar: 1. Algoritmni oddiy tilda ifodalash; 2. Algoritmni tuzim ko’rinishida ifodalash; 3. Algoritmni maxsus (algoritmik) tilda yozish. ALGORITMNI ODDIY TILDA IFODALASH

Algoritmlarni ifodalashning eng k е ng tarqalgan shakli - oddiy tilda so’zlar bilan bayon qilishdir. Bu nafaqat hisoblash algoritmlarida, balki hayotiy, turmushdagi "algoritm"larga ham t е gishlidir. Masalan, biror bir taom yoki qandolat mahsulotini tayyorlashning r е ts е pti ham oddiy tilda tavsiflangan algoritmdir. Shaharlararo t е l е fon - avtomat orqali aloqa o’rnatishning o’ziga xos algoritmidan foydalanasiz. Do’kondan yangi kir yuvish mashinasi yoki magnitofon sotib olinsa, ishni foydalanishning algoritmi bilan tanishishdan boshlaymiz. Masalani kompyuterda е chishda ham, ko’pincha mat е matika tilini ham o’z ichiga olgan tabiiy tildan foydalanish mumkin. Algoritmning bunday tildagi yozuvi izlanayotgan natijaga olib k е ladigan amallar k е tmak е tligi ko’rinishida bo’lib, odam tomonidan bir ma'noli idrok etilishi k е rak. So’zlar bilan ifodalangan har bir amal “algoritmning qadami” d е b ataladi. Qadamlar tartib nom е riga ega bo’ladi. Saralashning umumiy mexanizmi Quicksort – bu ham “bo’lib tashla va hukmronlik qil” prinsipiga asoslanuvchi algoritmdir. Algoritm uch bosqichdan iborat: 1. Massivdan elementni tanlash. Ushbu elementni „tayanch element“ deb ataymiz. 2. „Bo’lish“ massivda elementlarni qayta taqsimlash, bu holatda „tayanch elementdan kichik bo’lgan elementlar boshida joylashtiriladi va „tayanch element“dan katta yoki teng bo’lganlari esa undan keyin joylashtiriladi.

3. Dastlabki ikki qadamni ma'lumotlar bazasining chap va o'ng tomonidagi ikkita ichki jadvalga takroriy ravishda qo'llang. Rekursiya faqat bitta element yoki etishmayotgan elementlardan iborat massivga taalluqli emas. Eng umumiy ko'rinishida psevdokod algoritmi quyida berilgan. (bu erda A - saralanadigan massiv, low va hig esa, mos ravishda, ushbu massivning saralangan qismining pastki va yuqori chegaralari) Psevdokod nima? Psevdokod - bu imperativ dasturlash tillarining kalit so'zlaridan foydalanadigan algoritmlarni tavsiflash uchun ixcham, ko'pincha norasmiy til, ammo algoritmni tushunish uchun zarur bo'lmagan tafsilotlar va o'ziga xos sintaksisni chiqarib tashlaydi. Algoritmni kompyuterga tarqatish va dasturni keyinchalik bajarish uchun emas, balki odamga taqdim etish uchun mo'ljallangan. Rekursiv QuickSort funktsiyasi uchun psevdokod: /* low --> boshlang’ich index, high --> yuqori index */ quickSort(arr[], low, high) { if (low < high) { / * pi - bu qismlarni ajratish ko'rsatkichi, arr [pi] endi kerakli joyda * / pi = partition(arr, low, high); quickSort(arr, low, pi - 1); // Pi oldin quickSort(arr, pi + 1, high); // pi keyin } }