logo

C# dasturlash tilida massivlar bilan ishlash

Yuklangan vaqt:

12.08.2023

Ko'chirishlar soni:

0

Hajmi:

59.6748046875 KB
Mavzu : C#  dasturlash tilida massivlar bilan ishlash.
Reia:
Kirish.
Asosiy qism.
§. Bir  о  ’lchovli massivlar bilan ishlash .
§. Ko’p  о  'lchovli massivlar bilan ishlash.
§. Notekis massivlar bilan ishlash .
§.      Array  sinfi metodlari bilan ishlash.
Xulosa .
Foydalanilgan adabiyotlar ro’yhati Kirish
  Massivning   barcha   elementlari   bitta   turga   mansub   bo’lib,   ular   bitta   nom
bilan nomlanadi va bir-birlaridan nomerlari (indekslari) bilan farq qiladi.
  Endi   dasturdagi   ma’lumot   strukturalari   bilan   tanishishni   boshlaymiz.
Dasturda   ikki   asosiy   tur   ma’lumot   strukturalari   mavjuddir.   Birinchisi   statik,
ikkinchisi   dinamikdir.   Statik   deganimizda   xotirada   egallagan   joyi   o’zgarmas,
dastur   boshida   beriladigan   strukturalarni   nazarda   tutamiz.   Statik   massivlar
elementlar   soni   oldindan   ma’lum   bo’lgan   va   initsializatsiyalangan   (qiymat
belgilangan) massivlar hisoblanadi. Dinamik ma’lumot tiplari dastur davomida o’z
hajmini,   egallagan   xotirasini   o’zgartirishi   mumkin.   Dinamik   massivlar   esa
elementlari   soni   oldindan   ma’lum   bo’lishi   va   uni   initsializatsiyalash   (qiymat
belgilash)   shart   emas.   Statik   massivlarning   kamchiliki   shundaki,   agar   ularning
o’lchamini oldindan juda katta olinsa-yu, uning ko’p qismi keraksiz qolib ketsa, u
holda xotira behuda sarflanishiga olib keladi. Shu muammoni hal qilish maqsadida
massivlar   C#   tilida   asosan   dinamik   tarzda   e’lon   qilinadi.   Massivlar   dasturlashda
eng   ko’p   qo’laniladigan   ma’lumot   tiplaridir.   Massivlar   hotirada   ketma-ket
joylashgan,   bir   tipdagi   o’zgaruvchilar   guruhidir.   Alohida   bir   o’zgaruvchini
ko’rsatish uchun massiv nomi va kerakli o’zgaruvchi indeksini yoziladi.
  Ta’rif:   Bir   turga   mansub   bo’lgan   yagona   nom   bilan   saqlanuvchi
tartiblangan ma’lumotlar majmuasi massiv deyiladi.
  Massivlar   yagona   o’zgaruvchi   bilan   kompyuter   xotirasiga   saqlanadi,   uning
elementlari   ma’lum   bir   indekslar   bilan   tartiblab   joylashtiriladi.   Massivlar   yagona
nom bilan bir nechta qiymatni o’zida mujassamlashtiradi, bularga matematikadagi
vektorlarni misol keltirish mumkin. Vektor ham yagona nom bilan saqlanib uning
tarkibida bir nechta qiymatni o’zida mujassamlashadi. Vektorning ham elementlari
bir turga mansub va tartiblangan bo’ladi.
  Kurs   ishi   maqsadi:   C#   dasturlash   tilida   massivlar   bilan   ishlash   haqida
ilmiy-metodik tavsiyalar ishlab chiqish.
Kurs   ishi   ob’ekti:   C#   dasturlash   tilida   massivlar   bilan   ishlash   bilan
tanishtirish jarayoni     Kurs   ishi   predmeti   C#   dasturlash   tilida   massivlar   bilan   ishlash   bilan
tanishtirish ko’nikmalari
Kurs   ishining   amaliy   ahamiyati.   Kurs   ishi   jarayonida   ilgari   surilgan
fikrlardan,   yondashuvlardan   hamda   samaradorligini   ta’minlovchi   Kurs   ishi
natijalaridan   pedagogik   fanlar   bo‘yicha   ma’ruzalar   tayyorlash,   qo‘llanmalar
yaratish,   shuningdek   metodik   tavsiyanomalar   yaratishda,   ish   tajribalarini
ommalashtirishda samarali foydalanishga xizmat qiladi.
  Kurs   ishi   ishining   tarkibiy   tuzilishi   va   hajmi:   ish   kirish,   2   bob,   4   bo‘lim,
umumiy xulosalar va tavsiyalar, foydalanilgan adabiyotlar ro‘yhatidan iborat. Asosiy qism.
§. Bir  о    ’lchovli massivlar bilan ishlash    .
Massiv
  C#   dasturlash   tilida   kompyuter   xotirasiga   bir   o’zgaruvchi   yordamida   bir
nechta   qiymatlarda   foydalanishga   to’g’ri   keladi.   Bir   o’zgaruvchi   bilan   bir   nechta
qiymat   ustida   amallar   bajarish   uchun   berilgan   ma’lumotlar   bir   turga   mansub
bo’lishi   kerak.   C#   dasturlash   tilida   bir   o’zgaruvchi   yordamida   bir   nechta
qiymatlardan   foydalanish   uchun   massiv   degan   turdan   foydalaniladi.   Dasturlash
tillarida   ro’yxat   yoki   jadval   ko’rinishidagi   ma’lumotlarni   massiv   deb   atashadi.
Massiv   so’zining   ma’nosi   o’lcham,   o’lchov   demakdir.   Massivning   barcha
elementlari   bitta   turga   mansub   bo’lib,   ular   bitta   nom   bilan   nomlanadi   va   bir-
birlaridan nomerlari (indekslari) bilan farq qiladi.
  Endi   dasturdagi   ma’lumot   strukturalari   bilan   tanishishni   boshlaymiz.
Dasturda   ikki   asosiy   tur   ma’lumot   strukturalari   mavjuddir.   Birinchisi   statik,
ikkinchisi   dinamikdir.   Statik   deganimizda   xotirada   egallagan   joyi   o’zgarmas,
dastur   boshida   beriladigan   strukturalarni   nazarda   tutamiz.   Statik   massivlar
elementlar   soni   oldindan   ma’lum   bo’lgan   va   initsializatsiyalangan   (qiymat
belgilangan) massivlar hisoblanadi. Dinamik ma’lumot tiplari dastur davomida o’z
hajmini,   egallagan   xotirasini   o’zgartirishi   mumkin.   Dinamik   massivlar   esa
elementlari   soni   oldindan   ma’lum   bo’lishi   va   uni   initsializatsiyalash   (qiymat
belgilash)   shart   emas.   Statik   massivlarning   kamchiliki   shundaki,   agar   ularning
o’lchamini oldindan juda katta olinsa-yu, uning ko’p qismi keraksiz qolib ketsa, u
holda xotira behuda sarflanishiga olib keladi. Shu muammoni hal qilish maqsadida
massivlar   C#   tilida   asosan   dinamik   tarzda   e’lon   qilinadi.   Massivlar   dasturlashda
eng   ko’p   qo’laniladigan   ma’lumot   tiplaridir.   Massivlar   hotirada   ketma-ket
joylashgan,   bir   tipdagi   o’zgaruvchilar   guruhidir.   Alohida   bir   o’zgaruvchini
ko’rsatish uchun massiv nomi va kerakli o’zgaruvchi indeksini yoziladi.
  Ta’rif:   Bir   turga   mansub   bo’lgan   yagona   nom   bilan   saqlanuvchi
tartiblangan ma’lumotlar majmuasi massiv deyiladi.
  Massivlar   yagona   o’zgaruvchi   bilan   kompyuter   xotirasiga   saqlanadi,   uning elementlari   ma’lum   bir   indekslar   bilan   tartiblab   joylashtiriladi.   Massivlar   yagona
nom bilan bir nechta qiymatni o’zida mujassamlashtiradi, bularga matematikadagi
vektorlarni misol keltirish mumkin. Vektor ham yagona nom bilan saqlanib uning
tarkibida bir nechta qiymatni o’zida mujassamlashadi. Vektorning ham elementlari
bir turga mansub va tartiblangan bo’ladi.
Bir o’lchovli massivlar 
  Odatda   massivlar   zarurat,   katta   hajmdagi   tartiblangan,   lekin   chekli
elementlarga   oid   masalalarni   hal   etishda   yuzaga   keladi.   Dastur   ishlatilishi
davomida   massivlar   aniq   nomga   ega   bo’lishi   va   uning   elementlari   ma’lum   bir
turda bo’lishi kerak.  Bir o’lchovli massivlar kompyuter xotirasiga quyidagi shaklda
saqlanadi
  Massiv   tarkibida   elementlar   mavjud   bo’ladi.   Massivning   eng   ko’pi   bilan
ketishi   mumkin   bo’lgan   elementlar   soni   uning   o’lchamini   bildiradi.   Massivning
elementi turgan o’rni uning indeksi deyiladi. Massivning elementiga uning indeksi
orqali   murojaat   qilinadi.   Massivning   indeksi   sifatida   butun   sonlar   xizmat   qiladi.
Har   bir   massiv   o’zining   individual   nomiga   ega   bo’lishi   kerak,   ya’ni   bir   xil
nomdagi   massivlar   bo’lmaydi.   Ularning   nomi   oldin   e’lon   qilingan   oddiy
o’zgaruvchi nomi bilan ustma-ust tushmasligi kerak.
  Statik massivlarni e’lon qilishning umumiy ko’rinishi quyidagicha:
<tip> []<massiv_nomi>={boshlang’ich qiymatlar}
Bunda  {boshlang’ich qiymatlar}  albatta bo’lishi kerak. Misollar:
1
int   [] A = { 1 , 4 , 3 , 1 };
2
string []  B  =   {  “olma” ,  “gilos” ,  “anor” };
3
double []  C  =   {   0.005 ,   1.234 ,   12.5 ,   13.5 ,   10.6   };
Copied! Yuqoridagi   massivlarda   massivning   o’lchami   uning   initsializatsiya   qismida
qatnashgan elementlar soni bilan aniqlanadi. C# tilida xuddi C++ da bo’lgani kabi
element  indeksi  0 dan boshlanadi. A[0]  indeksli  element 1 ga teng, B[1] indeksli
element esa “gilos” ga teng va h.
  Aytib   o’tganimizdek,   C#   tilida   massivlar   xotiradan   unumli   foydalanish
maqsadida   massivlarni   dinamik   tarzda   e’lon   qilishga   kelishib   olingan.   Dinamik
tarzda massivni e’lon qilishning umumiy ko’rinishi quyidagicha:
<tip> [] <massiv_nomi>=new <tip>[o’lcham]  
Bu yerda new operatori <o’lcham>ga mos ravishda xotiradan joy ajratadi. Dinamik
massivlarni e’lon qilishga doir misollar:
1
n  =  Convert . ToInt32 ( Console . ReadLine ());
2
int []  M1  =   new   int [ 10 ];
3
float []  M2  =   new   float [ 100 ];
4
double []  M3  =   new   double [ n ];
Copied!
  M1   va   M2   nomli   massivlarning   elementlari   uchun   10   va   100   ta   joy
ajratilgan.   Ular   ham   dinamik   massiv   hisoblanadi.   M3   massiv   uchun   xotiradan
qancha   joy   ajratish   foydalanuvchining   o’ziga   havola   qilingan,   ya’ni   n
o’zgaruvchisi   klaviaturadan   kiritiladi,   bu   o’zgaruvchi   qiymati   esa   M3   massiv
o’lchami sifatida qabul qilinadi. M3 massiv dinamik massivga yorqin misoldir.
  Dinamik   massiv   o’lchami   ham   statik   massiv   kabi   aniqlanishi   lozim,   faqat
bunda u dastur ishlashi davomida anqlanishi bilan static massivdan farq qiladi.
  Indekslar   massiv   elementlariga   murojat   qilish   uchun   ishlatiladi.   Indeks
massivdagi   element   sonini   bildiradi   .Massivdagi   to’rtinchi   elementga   murojat
qilish uchun biz 3 indeksidan foydalanishimiz kerak. Misol uchun :num[3]. Massiv
elementlarining qiymatlarini olish va o’rnatish uchun indekslardan foydalanamiz. 1
int []  nums = new   int   [ 4 ];
2
nums [ 0 ] =1 ;  
3
nums [ 1 ] =2 ;
4
nums [ 2 ] =3 ;
5
nums [ 3 ] =5 ;
6
Console . ReadLine ( nums [ 3 ]);     //5
Copied!
  Va   bizda   faqat   4   ta   element   uchun   belgilangan   massiv   mavjud   bo’lgani
uchun   ,   masalan   oltinchi   elementni   qo’llay   olmaymiz   nums[5]=5;.   Agar   biz   buni
qilishga harakat qilsak biz IndexOutOfRangeException-ni olamiz.
  Statik   massivlar   elementlar   oldindan   aniqlanadi.   Buning   uchun   sikl
operatorlariga   murojaat   qilamiz.   Masalan,   quyidagi   misolda   dinamik   massivga
qiymat   berish   hamda   uning   elementlarini   chop   etish   amallar   ko’rsatilgan.   Biz
massiv   elementlari   bilan   ishlashimiz   uchun   for   sikl   operatori   kerak   buladi.   Bu
haqida   yetarlicha   bilimga   ega   bo’lmasayiz   quyidagi   link   orqali   o’tsangiz   Starter
bulimida Suxrob Xayitmurodov yetarlicha malumot bergan. Agar for sikl operatori
haqida malumotga ega bulsayiz davom etamiz.
1
using  System ;
2
internal   class  ArrayExample
3
{
4      private   static   void  Main ()
5
     {
6
         int []  A  =   new   int [ 10 ];
7
         int  i ;
8
         for   ( i  =   0 ;  i  <   10 ;  i  =  i  +   1 )
9
            A [ i ]   =  i ;
10
         for   ( i  =   0 ;  i  <   10 ;  i  =  i  +   1 )
11
            Console . WriteLine ( ‘A [ ‘  +  i  +  ’ ]:  ’  +  A [ i ]);
12
     }
13
}
Copied!  Bu dasturda A massivning elementlari sifatida i ning qiymatlari kelmoqda.
Xuddi   shunday   massiv   elementlarini   klaviatura   orqali   ham   kiritish   mumkin.
Buning uchun quyidagi kodni ko’raylik:
1
using  System ;
2
 
3
internal   class  ArrayExample
4
{ 5
     private   static   void  Main ()
6
     {
7
         int []  A  =   new   int [ 10 ];
8
         int  i ;
9
         for   ( i  =   0 ;  i  <   10 ;  i  =  i  +   1 )
10
            A [ i ]   =  Convert . ToInt32 ( Console . ReadLine ());
11
         for   ( i  =   0 ;  i  <   10 ;  i  =  i  +   1 )
12
            Console . WriteLine ( ‘A [ ‘  +  i  +  ’ ]:  ’  +  A [ i ]);
13
     }
14
} §. Ko’p     о    'lchovli massivlar bilan ishlash.   
  Bog'langan   massivlarni   qanday   yaratishni   avval   ko'rganimizdek,   ko'p
o'lchamli   massiv   massiv   ichidagi   massiv   hisoblanib   u   o'zining   ichida   bog'langan
massivlarni   saqlaydi.
Ko'p o'lchamli   massivlarni yaratish   sintaksisi :
<?php
/* 
    ko'p o'lchamli massivni ishga tushirish
*/
$telefonlar = array(
    array(
        "nom"=>"Iphone", 
        "turi"=>"telefon", 
        "brendi"=>"Apple"
    ),
    array(
        "nom"=>"Samsung S10+", 
        "turi"=>"telefon", 
        "brendi"=>"Samsung"
    ),
    array(
        "nom"=>"Redmi 7", 
        "turi"=>"telefon", 
        "brendi"=>"Xiaomi"
    ),
);
?>
Biz   bu   yerda   massiv   ichidagi   massiv   bilan   shug'ullanayapmiz.   Ma'lumotni   olish uchun   biz   massivga   erishishimiz   kerak.   Keyin,   biz   ko'p   o'lchamli   massivda
saqlangan ma'lumotni belgilangan massivdan olishimiz mumkin.
Misol   uchun,   agar   biz   massivdagi   Iphone   haqidagi   ma'lumotni   olmoqchi   bo'lsak,
ko'p   o'lchamli   massivimiz   ichidagi   birinchi   massivni   0   indeksdan   foydalanib
olishimiz   mumkin.   Keyin   massiv   ichidagi   barcha   ma'lumotlarni   ekranga
chiqarolishimiz mumkin.
Namuna:
<?php
/* 
    Ko'p o'lchamli massivga kirish
*/
echo "Ko'p o'lchamli massivdagi ma'lumotlar...";
echo   "Iphone   -   ".$telefonlar[0]["turi"].".   U   ".$telefonlar[0]["brendi"]."tomonidan
ishlab chiqilgan
";
echo "Redmi 7 - ".$telefonlar[2]["turi"].". U ".$telefonlar[2]["brendi"]. "tomonidan
ishlab chiqilgan
";
?>
Quyidagi natijani olamiz:
Ko'p o'lchamli massivdagi ma'lumotlar...
Iphone - telefon. U Apple tomonidan ishlab chiqilgan
Redmi 7 - telefon. U Xiaomi tomonidan ishlab chiqilgan
Ko'p   o'lchamli   massivlarda   ham   sikllarni   ishlatolamiz.   Bu   sikllar   albatta   for   va
foreach sikllardir. for va foreach siklini ishlatish
Ko'p   o'lchamli   massivni   takrorlash   uchun   for   siklidan   foydalanganimizda,   biz
massivning   uzunligi/o'lchamini   bilishimiz   kerak.   Bilish   uchun   count()   funksiyasi
ishlatiladi.   Quyidagi   namunada   for   siklidan   foydalanib,   ko'p   o'lchamli
massivni   takrorlash ko'rsatilgan:
<?php
/* 
    ko'p o'lchamli massivni ishga tushirish
*/
$telefonlar = array(
       array(
               "Nom"=>"Iphone",
               "Tur"=>"telefon",
               "Brend"=>"Apple"
       ),
       array(
               "Nom"=>"Samsung S10+",
               "Tur"=>"telefon",
               "Brend"=>"Samsung"
       ),
       array(
               "Nom"=>"Redmi 7",
               "Tur"=>"telefon",
               "Brend"=>"Xiaomi"
       ),
);
$olchami = count($telefonlar);
for($i=0;$i<$olchami;$i++)
{      foreach($telefonlar[$i] as $kalit=>$qiymat)
{
     echo $kalit. "-" .$qiymat."
";
}
echo "
";
}
   
?>
Quyidagi natijaga erishamiz:
Nom-Iphone
Tur-telefon
Brend-Apple
Nom-Samsung S10+
Tur-telefon
Brend-Samsung
Nom-Redmi 7
Tur-telefon
Brend-Xiaomi
Yuqoridagi   ko'p  o'lchamli  massivda,  bizda  asosiy  massiv   indekslangan,  massivda
saqlangan elementlar bog'langan edi.
Lekin   biz   asosiy   massivni   bog'langan   massiv   qilib   olishimiz   ham   mumkin.   Ko'p
o'lchamli   massivda   indeks   -   son   yoki   ketma-ket   emasligi   sababli,   biz   indeksning
qiymatlari   va   kalitlarini   topib   olishimiz   kerak.   Biz   array_keys()   funksiyasidan
bog'langan massivdagi kalitlarning massivini olish uchun foydalanamiz.
Keling bir namuna ko'ramiz: <?php
/* 
    ko'p o'lchamli massivni ishga tushirish
*/
$telefonlar = array(
       array(
               "Nom"=>"Iphone",
               "Tur"=>"telefon",
               "Brend"=>"Apple"
       ),
       array(
               "Nom"=>"Samsung S10+",
               "Tur"=>"telefon",
               "Brend"=>"Samsung"
       ),
       array(
               "Nom"=>"Redmi 7",
               "Tur"=>"telefon",
               "Brend"=>"Xiaomi"
       ),
);
//massiv o'lchami
$olchami = count($telefonlar);
//massiv kalitlari
$kalitlar = array_keys($telefonlar); 
//for siklidan foydalanish
for($i = 0; $i < $olchami; $i++)
{
    echo $kalitlar[$i]. "
";     foreach($telefonlar[$kalitlar[$i]] as $kalit=> $qiymat) {
        echo $kalit . " : " . $qiymat . "
";
    }
    echo "
";
}
   
?>
✅ Ushbu natijaga ega bo'lamiz:
0
Nom : Iphone
Tur : telefon
Brend : Apple
1
Nom : Samsung S10+
Tur : telefon
Brend : Samsung
2
Nom : Redmi 7
Tur : telefon
Brend : Xiaomi
✅ Ko'p o'lchamli massivning afzalliklari
Batafsil(katta, to'liq) ma'lumotlarni ko'p o'lchamli massivlarda saqlash imkoni. ✔  
Uni   foydalanuvchi   uchun   eng   qulay   va   ularning   talablari   bo'yicha,   xoh indekslangan xoh bog'langan qilib ishlatish mumkin.  ✔  
§. Notekis        massivlar        bilan        ishlash    .
  Ushbu   bo‘limda   quyidagilarga   e`tibor   berish   kerak   bo‘ladi:   ya`ni   ikki
o‘lchovli   massiv   satrlari   soni   ( m ),   ustunlari   soni   n ,   hamda   elementlari   soni   larni
e’tiborga olish lozim.  Agar masalalarda satrlar va ustunlar soni aniq ko‘rsatilmagan
bo‘lsa,   ularni   2   dan   10   gacha   bo‘lgan   oraliqda   o‘zgartirish   tavsiya   etiladi.
Matritsaning   boshlang‘ich   qiymati   1-   va   2-indekslari   1   bo‘lgan   elementida
joylashadi.   Matritsaga   kiritish   va   chiqarish   satrlar   bo‘yicha   amalga
oshiriladi.   m   o‘lchamli   kvadrat   matritsa   2   o‘lchovli     massiv     hisoblanadi.
Matritsalarni tashkil eish va ularning elementlarini chiqarish. Matritsalarni tashkil
etish   masalalaridagi   natijaviy   matritsa   o‘lchami   10X10   dan   oshmaydi.
  Ikki   o`lchamli     statik   massivlarni     e`lon   qilish.   toifa   massiv_nomi
[massiv_satrlari_soni][massiv_ustunlar i_soni];
  Ikki o`lchamli statik massivlarning e`lon qilinishida, bir o`lchamlidan      farqi,
massiv nomidan keyin qirrali qavs ichida ikkita qiymat yozilganligidadir. Bulardan
birinchisi,   satrlar   sonini,   ikkinchisi   esa   ustunlar   sonini   bildiradi.   Ya'ni   ikki  
o'lchamli massiv elementiga ikkita indeks orqali murojaat qilinadi. Ikki o`lchamli
massivlar   matematika   kursidan   ma`lum   bo`lgan   matritsalarni   eslatadi.
Ikki o'lchamli massiv e'loniga misol:
int a[3][3], b[2][4];
A matritsa B matritsa
a
00   a
01   a
02   b
00   b
01   b
02   b
03
a
10   a
11   a
12   b
10   b
11   b
12   b
13
a
20   a
21   a
22
A matritsa    3 ta satr, 3 ta ustunga ega;
B matritsa    2 ta satr, 4 ta ustunga ega;
  Ikki   o'lchamli   massivlarda   1   -   indeks   satrni,   2   -   indeks   ustunni     bildiradi.
Birinchi   satrning   dastlabki   elementi   a10   –   a   biru   nol   element   deb   o`qiladi.   a   o`n
deyilmaydi.
m ta satr va n ta ustunga ega bo`lgan massivga (mxn)  o`lchamli massiv deyiladi. Agar
m=n (satrlar    va ustunlar    soni teng) bo'lsa kvadrat massiv deyiladi.
  Ko'p o'lchamli massivlarni    initsializats iyalash    mis о llar:
int a[2][2]={1,2,7,3};
int b[2][3]={ {0,1,2}, {3,4,5} };
  Massivlarni   qo`llanilishiga   misol   keltiradigan   bo`lsak,   satrlar   talabalarni,
ustunlar   fanlardan   olgan   baholarini   bildirsin.   Ya`ni   m   ta   talaba,   n   ta   fan.   n   –
ustunga   talabalarning   o`rtacha   baholari   hisoblanib,   shu   asosida   stipendiya   bilan
ta`minlansin.
  Va   hakazo,   bunga   o`xshash   ko`plab   misollar   keltirish   mumkin.   Bu
masalalarga to`xtalishdan oldin bir ikkita    oddiy masalar bilan tanishib chiqaylik.
1   -   Masala.   A(mxn)   matritsa   berilgan.   Shu   matritsa   elementlar   ini     kirituvchi     va
ekranga jadval ko`rinishida chiqaruvchi programma tuzilsin.
#include<iostream.h>
#include<math.h>
int main()
{
int    m, n, a[10][10];
cout << "Satrlar sonini kiriting \nm=";cin >> m;
cout << "Ustunlar sonini kiriting \nn=";cin >> n;
cout <<"Massiv elementlarini kiriting \n";
for(int satr = 0; satr < m ; satr++)
for(int ustun = 0; ustun < n; ustun++)
{
cout << "a[" << satr << "][" << ustun << "]="; cin >> a[satr][ustun];
}
for(int satr = 0; satr < m; satr++)
{
for(int ustun = 0; ustun < n; ustun++)
cout << a[satr][ustun] << "\t"; cout<<"\n"; }
system ("pause");
return 0;
}
  Funksiya   parametri   sifatida   massivni   jo'natish   va   funksiya   natijasi   sifatida
massivni olish ham mumkin. Funksiyaga matritsani uzatishda matritsa nomi bilan
uning satrlar va ustunlar sonini ham jo'natish kerak bo'ladi. Funksiyada massivdan
foydalanishni   bir   necha   xil   usuli   bor,   shularning   ba'zilari   bilan   tanishamiz.
Funksiyaga matritsani uzatish
#include <iostream.h>
#include<math.h>
void matrix_print(int a[10][10], int m, int n)
{
// matritsani jadval shaklida chiqarish
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
{
cout << a[i][j] << "\t";
}
cout << "\n";
}
}
int satr_max(int a[], int n)
{
// massivning eng katta elementini aniqlash
int max = a[0];
for (int i = 1; i < n; i++)
if (max < a[i]) max = a[i];
return   max; }
int main()
{
int    m, n, a[10][10];
cout << "Satrlar sonini kiriting \nm=";    cin >> m;
cout << "Ustunlar sonini kiriting \nn="; cin >> n;
cout <<"Massiv elementlarini kiriting \n";
for (int i = 0; i < m; i++)
for (int j = 0; j < n; j++)
  Statistik massivlar bilan ishlashning    kamchiliklar i:
1. Statik massivlarning    uzunligi  о ldindan ma’ lum bo’ lishi k е rak;
2. Statik massivning     o'lchami  b е rilganlarga ajratilgan   хо tiraning     o’  lchami  bilan
ch е garalangan;
3.   Katta   o’lchamdagi   massiv   e’l о n   qilib,     masalani     y е chilishida   ajratilgan   хо tira
to’ liq ishlatimasligi mumkin.
  Bu   kamchiliklarni   dinamik     massivlardan     f о ydalanish   о rqali   xal   qilish
mumkin.
  Ikki o'lchamli dinamik massivlar bilan ishlash
  Ikki   o’lchamli   dinamik   massivni   tashkil   qilish   uchun   «ko’rsatkichga
ko’rsatkich» dan foydalaniladi:
int **a;
  Endi     satrlar  s о niga qarab ko’rsatkichlar  massiviga     dinamik   хо tira ajratish  
k е rak:
a = new    int    *[satrlar_soni];
  Har bir satrga takr о rlash   о p е rat о ri yordamida   хо tira ajratish k е rak va uning
b о shlang’ich   adr е sini     a   massiv   el е m е ntlariga   j о ylashtirish   zarur:
for (int    i    = 0; i < satrlar_soni; i++)
a[i]    = new int [ustunlar_soni];
  Dinamik     massivda   har   bir   satr   хо tiraning   turli     j о ylarida   j о ylashishi mumkin.
Dinamik   massivlarni   ishlatib   bo’   lgandan   k е yin   albatta   delete   amali   bilan   uni   o’
cherish k е rak.
  Yuq о ridagi mis  о lda ikki    o’ lchamli massiv uchun avval massivning    har bir
el е m е nti,  ох irida massivning    o’ zi o'chiriladi:
for (int    i    = 0; i    < satrlar_soni;    i++)
delete [] a[i];
delete []a;
1 - Masalani dinamik massivdan foydalanga holda ishlashni ko'rib chiqamiz.
#include <iostream.h>
#include<math.h>
int main()
{
int    m, n;
int **a; // ko'rsatkichga ko'rsatkich
cout << "Satrlar sonini kiriting \nm=";
cin >> m;
cout << "Ustunlar sonini kiriting \nn=";
cin >> n;
// m ta ko'rsatkichlar massivi uchun xotira ajratish
a = new int *[m];
// har bir satr uchun dinamik xotira ajratish
for (int i = 0; i < m; i++)
a[i] = new int [n];
cout <<"Massiv elementlarini kiriting \n";
for(int satr = 0;    satr < m ; satr++)
for(int ustun = 0; ustun < n; ustun++)
{
cout << "a[" << satr << "][" << ustun << "]=";
cin >> a[satr][ustun]; }
// matritsani jadval shaklida chiqarish
for(int satr = 0; satr < m; satr++)
{
for(int ustun = 0; ustun < n; ustun++)
cout << a[satr][ustun] << "\t";
cout<<"\n";
}
// Dinamik massivdan foydalanib bo'lgandan so'ng
// uni xotiradan o'chirish lozim
// oldin massiv satrlari o'chiriladi (xotira bo'shatiladi)
for (int i = 0; i < m; i++)
delete []a[i];
// endi massivning o'zini o'chirish mumkin
delete [] a;
return 0;
system ("pause");
}
a(m,   n)     matritsani     b(n,   p)   matritsaga     ko'paytirishdan     hosil     bo'lgan   c(m,   p)
matritsani chiqaruvchi programma tuzilsin.
#include <iostream.h>
#include<math.h>
void matrix_print(int **a, int m, int n)
{
// matritsani jadval shaklida chiqarish
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
{
cout << a[i][j] << "\t"; }
cout << "\n";
}
}
void matrix_input (int **a, int m, int n)
{
for (int i = 0; i < m; i++)
for (int j = 0; j < n; j++)
cin >> a[i][j];
}
void matrix_delete (int **a, int m)
{
// Dinamik massivdan foydalanib bo'lgandan so'ng
// uni xotiradan o'chirish lozim
// oldin massiv satrlari o'chiriladi (xotira bo'shatiladi)
for (int i = 0; i < m; i++)
delete []a[i];
// endi massivning o'zini o'chirish mumkin
delete []a;
}
// create_matrix - ko'rsatkichga ko'rsatkich qaytaradi
int ** create_matrix(int m, int n)
{
int **ptr;
// matritsa satrlari uchun xotira ajratish
ptr = new int *[m];
for (int i = 0; i < m; i++)
// matritsa ustunlari uchun xotira ajratish
ptr[i] = new int [n];
return ptr; }
int main()
{
int    m, n, p, **a, **b, **c;
cout << "A matritsa satrlar sonini kiriting \nm=";    cin >> m;
cout << "A matritsa ustunlar sonini kiriting \nn="; cin >> n;
cout << "B matritsa ustunlar sonini kiriting \np="; cin >> p;
// matritsalarni hosil qilish
a = create_matrix(m, n);
b = create_matrix(n, p);
c = create_matrix(m, p);
cout << "A massiv elementlarini kiriting \n";
matrix_input(a, m, n);
cout << "B massiv elementlarini kiriting \n";
matrix_input(b, n, p);
cout << "Kiritilgan A matritsa\n";
matrix_print(a, m, n);
cout << "Kiritilgan B matritsa\n";
matrix_print(b, n, p);
// c matritsa elementlarini 0 qilish
for (int i = 0; i < m; i++)
for (int j = 0; j < p; j++)
c[i][j] = 0;
// A matritsani B matritsaga ko'paytirish
for (int i = 0; i < m; i++)
for (int j = 0; j < n; j++)
for (int k = 0; k < p; k++)
{
c[i][k] += a[i][j] * b[j][k];
} cout << "Natija C matritsa\n";
matrix_print(c, m, p);
matrix_delete(a, m); // a matritsani o'chirish
matrix_delete(b, n); // b matritsani o'chirish
matrix_delete(c, m); // c matritsani o'chirish
return 0;
system ("pause");
} §.      Array  sinfi metodlari bilan ishlash.
  C# tilidagi barcha massivlar tizimning   Array   klassi ustiga qurilgan .   Bu sinf
massivlar bilan ishlashda foydalanishimiz mumkin bo'lgan bir qancha xususiyatlar
va usullarni belgilaydi.   Asosiy xususiyatlar va usullar:
Length xossasi massiv   uzunligini   qaytaradi
Rank   xossasi massivning   o'lchamini qaytaradi
int BinarySearch(Masiv massivi, obyekt? qiymati)   tartiblangan massivda ikkilik
qidiruvni amalga oshiradi va topilgan element indeksini qaytaradi.
void   Clear   (massiv   massivi)   massivni   barcha   elementlarini   standart   qiymatiga
o'rnatish orqali tozalaydi
void   Copy(Array   sourceArray,   int   sourceIndex,   Array   destinationArray,   int
destinationIndex,   int   length)   massiv   manbasidan   nusxa   ko‘chiradiArray   indeks
manbaidan   boshlanadi.Indeks   massivga   element   uzunligi   destinationIndexdan
boshlanadi.
bool Exists<T> (T[] massivi, Predicate<T> mos)   massivda moslik vakili shartini
qondiradigan elementlar mavjudligini tekshiradi
void Fill<T> (T[] massivi, T qiymati)   massivni qiymat bilan to'ldiradi
T?   Find<T>   (T[]   massivi,   Predicate<T>   mos)   moslik   vakilidan   belgilangan
shartni qanoatlantiradigan birinchi elementni topadi.   Agar element topilmasa, null
qaytariladi.
T?   FindLast<T> (T[] massivi, Predicate<T> mos)   moslik vakilidan belgilangan
shartni   qanoatlantiradigan   oxirgi   elementni   topadi.   Agar   element   topilmasa,   null
qaytariladi.
int FindIndex<T> (T[] massivi, Predicate<T> mos)   belgilangan moslik delegati
shartiga javob beradigan elementning birinchi paydo bo'lish indeksini qaytaradi
int   FindLastIndex<T>   (T[]   massivi,   Predicate<T>   mos)   ma'lum   bir   shartni
qondiradigan elementning oxirgi paydo bo'lish indeksini qaytaradi T[]   FindAll<T>   (T[]   massivi,   Predicate<T>   mos)   barcha   elementlarni   moslik
vakilidan belgilangan shartni qondiradigan massiv sifatida qaytaradi
int   IndexOf(Masiv   massivi,   obyekt?   qiymati)   massivdagi   elementning   birinchi
paydo bo‘lish indeksini qaytaradi
int   LastIndexOf(massiv   massivi,   obyekt?   qiymati)   massivdagi   elementning
oxirgi marta paydo bo‘lish indeksini qaytaradi
void   Resize<T>   (ref   T[]?   massiv,   int   newSize)   bir   o‘lchovli   massiv   o‘lchamini
o‘zgartiradi
void Reverse(Array array) massiv   elementlarini teskari aylantiradi
void Sort(Array array)   bir o'lchovli massivning elementlarini tartiblaydi
Keling, eng ko'p ishlatiladigan usullarni ko'rib chiqaylik.
Element indeksini topish
bitta
2
3
4
5
6
7
sakkiz
9
10
o'n bir
12
o'n uch
14
15
o'n olti
17
o'n sakkiz var people = new   string[] { "Tom", "Sam", "Bob", "Kate", "Tom", "Alice"   };<font></font>
<font></font>
// находим индекс элемента "Bob"<font></font>
int   bobIndex = Array.BinarySearch(people, "Bob");<font></font>
// находим индекс первого элемента " Tom "< font ></ font >
int   tomFirstIndex = Array.IndexOf(people, "Tom");<font></font>
// находим индекс последнего элемента " Tom "< font ></ font >
int   tomLastIndex = Array.LastIndexOf(people, "Tom");<font></font>
// находим индекс первого элемента, у которого длина строки больше 3< font
int   lengthFirstIndex = Array.FindIndex(people, person => person.Length > 3);<font></font>
// находим индекс последнего элемента, у которого длина строки больше 3<
int   lengthLastIndex = Array.FindLastIndex(people, person => person.Length > 3);<font></font>
<font></font>
Console.WriteLine($"bobIndex: {bobIndex}");                                  // 2<font></font>
Console.WriteLine($"tomFirstIndex: {tomFirstIndex}");              // 0<font></font>
Console.WriteLine($"tomLastIndex: {tomLastIndex}");                  // 4<font></font>
Console.WriteLine($"lengthFirstIndex: {lengthFirstIndex}"); // 3<font></font>
Console.WriteLine($"lengthLastIndex: {lengthLastIndex}");      // 5<font></font> Agar element massivda topilmasa, usullar -1 ni qaytaradi.
Elementni shart bo‘yicha topish
bitta
2
3
4
5
6
7
sakkiz
9
10
o'n bir
12
o'n uch
14 var people = new   string[] { "Tom", "Sam", "Bob", "Kate", "Tom", "Alice"   };<font></font>
< font ></ font >
// находим первый и последний элементы< font ></ font >
// где длина строки больше 3 символов< font ></ font >
string? first = Array.Find(people, person => person.Length > 3);<font></font>
Console.WriteLine(first); // Kate<font></font>
string? last = Array.FindLast(people, person => person.Length > 3);<font></font>
Console.WriteLine(last); // Alice<font></font>
< font ></ font >
// находим элементы, у которых длина строки равна 3< font ></ font >
string[] group = Array.FindAll(people, person => person.Length == 3);<font></font>
foreach   (var person in   group) Console.WriteLine(person);<font></font>
// Tom Sam Bob Tom<font></font>
<font></font>
Massiv elementlarining tartibini o'zgartirish
Masalan, elementlarning tartibini o'zgartiramiz:
bitta
2
3
4
5
6
7 var people = new   string[] { "Tom", "Sam", "Bob", "Kate", "Tom", "Alice"   };<font></font>
<font></font>
Array.Reverse(people);<font></font>
<font></font>
foreach   (var person in   people) <font></font>
        Console.Write($"{person} ");<font></font>
// "Alice", "Tom", "Kate", "Bob", "Sam", "Tom"<font></font>
Bundan tashqari, elementlarning faqat bir qismi tartibini o'zgartirishingiz mumkin:
bitta
2
3
4 var people = new   string[] { "Tom", "Sam", "Bob", "Kate", "Tom", "Alice"   };<font></font>
< font ></ font >
// изменяем порядок 3 элементов начиная  c  индекса 1    < font ></ font >
Array.Reverse(people, 1, 3);<font></font> 5
6
7
sakkiz
9 <font></font>
foreach   (var person in   people) <font></font>
        Console.Write($"{person} ");<font></font>
// "Tom", "Kate", "Bob", "Sam", "Tom", "Alice"<font></font>
<font></font>
  Bunday   holda,   biz   1   indeksdan   boshlab   faqat   3   ta   elementning   tartibini
o'zgartiramiz.
Massiv o‘lchamini o‘zgartirish
   Massiv hajmini o'zgartirish uchun "Resize" usuli qo'llaniladi.   Uning birinchi
parametri   o'zgaruvchan   massiv,   ikkinchi   parametri   esa   massivda   bo'lishi   kerak
bo'lgan elementlar  soni.   Agar ikkinchi  parametr  massiv  uzunligidan kichik bo'lsa,
u holda massiv kesiladi.   Agar parametr  qiymati, aksincha, kattaroq bo'lsa, massiv
standart qiymatga ega bo'lgan qo'shimcha elementlar bilan to'ldiriladi.   Va birinchi
parametr mos yozuvlar orqali o'tkaziladi:
bitta
2
3
4
5
6
7
sakkiz var people = new   string[] { "Tom", "Sam", "Bob", "Kate", "Tom", "Alice"   };<font></font>
< font ></ font >
// уменьшим массив до 4 элементов< font ></ font >
Array.Resize(ref   people, 4);<font></font>
<font></font>
foreach   (var person in   people) <font></font>
        Console.Write($"{person} ");<font></font>
// "Tom", "Sam", "Bob", "Kate"<font></font>
Massivdan nusxa olish
Copy   usuli bir massivning bir qismini boshqasiga nusxalaydi   :
bitta
2
3
4
5
6 var people = new   string[] { "Tom", "Sam", "Bob", "Kate", "Tom", "Alice"   };<font></font>
<font></font>
var employees = new   string[3];<font></font>
<font></font>
// копируем 3 элемента из массива people c индекса 1    <font></font>
// и вставляем их в массив  employees  начиная с индекса 0< font ></ font > 7
sakkiz
9
10
o'n bir
12 Array.Copy(people,1, employees,0, 3);<font></font>
<font></font>
foreach   (var person in   employees) <font></font>
        Console.Write($"{person} ");<font></font>
// Sam Bob Kate<font></font>
<font></font>
Bunda biz odamlar massividan 1-indeksdan boshlab 3 ta elementni ko chirib olib,ʻ
0-indeksdan boshlab xodimlar massiviga kiritamiz.
Massivlarni saralash
Sort ()   usuli yordamida massivni tartiblang   :
bitta
2
3
4
5
6
7
sakkiz var people = new   string[] { "Tom", "Sam", "Bob", "Kate", "Tom", "Alice"   };<font></font>
<font></font>
Array.Sort(people);<font></font>
<font></font>
foreach   (var person in   people) <font></font>
        Console.Write($"{person} ");<font></font>
        <font></font>
// Alice Bob Kate Sam Tom Tom<font></font>
Ushbu   usul   juda   ko'p   ortiqcha   yuklarga   ega.   Masalan,   bitta   versiya   massivning
faqat bir qismini saralash imkonini beradi:
bitta
2
3
4
5
6
7
sakkiz
9 var people = new   string[] { "Tom", "Sam", "Bob", "Kate", "Tom", "Alice"   };
 
// сортируем с 1 индекса 3 элемента
Array . Sort ( people , 1, 3);
 
foreach   (var person in   people) 
        Console.Write($"{person} ");
         
// Tom Bob Kate Sam Tom Alice Xulosa .
    Ikki   o`lchamli     statik   massivlarni     e`lon   qilish.   toifa   massiv_nomi
[massiv_satrlari_soni][massiv_ustunlar i_soni];
  Ikki o`lchamli statik massivlarning e`lon qilinishida, bir o`lchamlidan      farqi,
massiv nomidan keyin qirrali qavs ichida ikkita qiymat yozilganligidadir. Bulardan
birinchisi,   satrlar   sonini,   ikkinchisi   esa   ustunlar   sonini   bildiradi.   Ya'ni   ikki  
o'lchamli massiv elementiga ikkita indeks orqali murojaat qilinadi. Ikki o`lchamli
massivlar   matematika   kursidan   ma`lum   bo`lgan   matritsalarni   eslatadi.
Ikki o'lchamli massiv e'loniga misol:
int a[3][3], b[2][4];
A matritsa B matritsa
a
00   a
01   a
02   b
00   b
01   b
02   b
03
a
10   a
11   a
12   b
10   b
11   b
12   b
13
a
20   a
21   a
22
A matritsa    3 ta satr, 3 ta ustunga ega;
B matritsa    2 ta satr, 4 ta ustunga ega;
  Ikki   o'lchamli   massivlarda   1   -   indeks   satrni,   2   -   indeks   ustunni     bildiradi.
Birinchi   satrning   dastlabki   elementi   a10   –   a   biru   nol   element   deb   o`qiladi.   a   o`n
deyilmaydi.
m ta satr va n ta ustunga ega bo`lgan massivga (mxn)  o`lchamli massiv deyiladi.
Agar
m=n (satrlar    va ustunlar    soni teng) bo'lsa kvadrat massiv deyiladi.
  Ko'p o'lchamli massivlarni    initsializats iyalash    mis о llar:
int a[2][2]={1,2,7,3};
int b[2][3]={ {0,1,2}, {3,4,5} };
  Massivlarni   qo`llanilishiga   misol   keltiradigan   bo`lsak,   satrlar   talabalarni,
ustunlar   fanlardan   olgan   baholarini   bildirsin.   Ya`ni   m   ta   talaba,   n   ta   fan.   n   – ustunga   talabalarning   o`rtacha   baholari   hisoblanib,   shu   asosida   stipendiya   bilan
ta`minlansin.
  Va   hakazo,   bunga   o`xshash   ko`plab   misollar   keltirish   mumkin.   Bu
masalalarga to`xtalishdan oldin bir ikkita    oddiy masalar bilan tanishib chiqaylik.
1   -   Masala.   A(mxn)   matritsa   berilgan.   Shu   matritsa   elementlar   ini     kirituvchi     va
ekranga jadval ko`rinishida chiqaruvchi programma tuzilsin.
#include<iostream.h>
#include<math.h>
int main()
{
int    m, n, a[10][10];
cout << "Satrlar sonini kiriting \nm=";cin >> m;
cout << "Ustunlar sonini kiriting \nn=";cin >> n;
cout <<"Massiv elementlarini kiriting \n";
for(int satr = 0; satr < m ; satr++)
for(int ustun = 0; ustun < n; ustun++)
{
cout << "a[" << satr << "][" << ustun << "]="; cin >> a[satr][ustun];
}
for(int satr = 0; satr < m; satr++)
{
for(int ustun = 0; ustun < n; ustun++)
cout << a[satr][ustun] << "\t"; cout<<"\n";
}
system ("pause"); Foydalanilgan adabiyotlar
1. Hello   World  – интерактивный учебник по основам  C # [Электронный рtурс]
–   Режим   доступа:   https :// docs . microsoft . com / ru - ru / dotnet / csharp / tutorials /   intro -
to - csharp / hello - world . − Дата доступа: 01.10.2020 
2.   Албахри,   Д.   С#   8.0.   Карманный   справочник   /   Джозеф   Албахри,   Бен
Албахри − СПб.: ООО «Диалектика», 2020. − 240 с. 
3.   Стивен,   К.   Конкурентность   в   C #.   Асинхронно,   параллельное   и
многопоточное программирование / К. Стивен −СПб.: Питер, 2020. −272 с. 
4. Мюллер, Д. С# для чайников / Джон Поль Мюллер, Билл Семпф, Чак Сфер
− СПб.: ООО «Диалектика», 2019. − 608 с. 
5. Фленов, М.Е. Библия  C #. − 4-е изд., перераб. и доп. / М.Е. Фленов − СПб.:
БХВ-Петербург, 2019.  − 512

Mavzu : C# dasturlash tilida massivlar bilan ishlash. Reia: Kirish. Asosiy qism. §. Bir о ’lchovli massivlar bilan ishlash . §. Ko’p о 'lchovli massivlar bilan ishlash. §. Notekis massivlar bilan ishlash . §. Array sinfi metodlari bilan ishlash. Xulosa . Foydalanilgan adabiyotlar ro’yhati

Kirish Massivning barcha elementlari bitta turga mansub bo’lib, ular bitta nom bilan nomlanadi va bir-birlaridan nomerlari (indekslari) bilan farq qiladi. Endi dasturdagi ma’lumot strukturalari bilan tanishishni boshlaymiz. Dasturda ikki asosiy tur ma’lumot strukturalari mavjuddir. Birinchisi statik, ikkinchisi dinamikdir. Statik deganimizda xotirada egallagan joyi o’zgarmas, dastur boshida beriladigan strukturalarni nazarda tutamiz. Statik massivlar elementlar soni oldindan ma’lum bo’lgan va initsializatsiyalangan (qiymat belgilangan) massivlar hisoblanadi. Dinamik ma’lumot tiplari dastur davomida o’z hajmini, egallagan xotirasini o’zgartirishi mumkin. Dinamik massivlar esa elementlari soni oldindan ma’lum bo’lishi va uni initsializatsiyalash (qiymat belgilash) shart emas. Statik massivlarning kamchiliki shundaki, agar ularning o’lchamini oldindan juda katta olinsa-yu, uning ko’p qismi keraksiz qolib ketsa, u holda xotira behuda sarflanishiga olib keladi. Shu muammoni hal qilish maqsadida massivlar C# tilida asosan dinamik tarzda e’lon qilinadi. Massivlar dasturlashda eng ko’p qo’laniladigan ma’lumot tiplaridir. Massivlar hotirada ketma-ket joylashgan, bir tipdagi o’zgaruvchilar guruhidir. Alohida bir o’zgaruvchini ko’rsatish uchun massiv nomi va kerakli o’zgaruvchi indeksini yoziladi. Ta’rif: Bir turga mansub bo’lgan yagona nom bilan saqlanuvchi tartiblangan ma’lumotlar majmuasi massiv deyiladi. Massivlar yagona o’zgaruvchi bilan kompyuter xotirasiga saqlanadi, uning elementlari ma’lum bir indekslar bilan tartiblab joylashtiriladi. Massivlar yagona nom bilan bir nechta qiymatni o’zida mujassamlashtiradi, bularga matematikadagi vektorlarni misol keltirish mumkin. Vektor ham yagona nom bilan saqlanib uning tarkibida bir nechta qiymatni o’zida mujassamlashadi. Vektorning ham elementlari bir turga mansub va tartiblangan bo’ladi. Kurs ishi maqsadi: C# dasturlash tilida massivlar bilan ishlash haqida ilmiy-metodik tavsiyalar ishlab chiqish. Kurs ishi ob’ekti: C# dasturlash tilida massivlar bilan ishlash bilan tanishtirish jarayoni

Kurs ishi predmeti C# dasturlash tilida massivlar bilan ishlash bilan tanishtirish ko’nikmalari Kurs ishining amaliy ahamiyati. Kurs ishi jarayonida ilgari surilgan fikrlardan, yondashuvlardan hamda samaradorligini ta’minlovchi Kurs ishi natijalaridan pedagogik fanlar bo‘yicha ma’ruzalar tayyorlash, qo‘llanmalar yaratish, shuningdek metodik tavsiyanomalar yaratishda, ish tajribalarini ommalashtirishda samarali foydalanishga xizmat qiladi. Kurs ishi ishining tarkibiy tuzilishi va hajmi: ish kirish, 2 bob, 4 bo‘lim, umumiy xulosalar va tavsiyalar, foydalanilgan adabiyotlar ro‘yhatidan iborat.

Asosiy qism. §. Bir о ’lchovli massivlar bilan ishlash . Massiv C# dasturlash tilida kompyuter xotirasiga bir o’zgaruvchi yordamida bir nechta qiymatlarda foydalanishga to’g’ri keladi. Bir o’zgaruvchi bilan bir nechta qiymat ustida amallar bajarish uchun berilgan ma’lumotlar bir turga mansub bo’lishi kerak. C# dasturlash tilida bir o’zgaruvchi yordamida bir nechta qiymatlardan foydalanish uchun massiv degan turdan foydalaniladi. Dasturlash tillarida ro’yxat yoki jadval ko’rinishidagi ma’lumotlarni massiv deb atashadi. Massiv so’zining ma’nosi o’lcham, o’lchov demakdir. Massivning barcha elementlari bitta turga mansub bo’lib, ular bitta nom bilan nomlanadi va bir- birlaridan nomerlari (indekslari) bilan farq qiladi. Endi dasturdagi ma’lumot strukturalari bilan tanishishni boshlaymiz. Dasturda ikki asosiy tur ma’lumot strukturalari mavjuddir. Birinchisi statik, ikkinchisi dinamikdir. Statik deganimizda xotirada egallagan joyi o’zgarmas, dastur boshida beriladigan strukturalarni nazarda tutamiz. Statik massivlar elementlar soni oldindan ma’lum bo’lgan va initsializatsiyalangan (qiymat belgilangan) massivlar hisoblanadi. Dinamik ma’lumot tiplari dastur davomida o’z hajmini, egallagan xotirasini o’zgartirishi mumkin. Dinamik massivlar esa elementlari soni oldindan ma’lum bo’lishi va uni initsializatsiyalash (qiymat belgilash) shart emas. Statik massivlarning kamchiliki shundaki, agar ularning o’lchamini oldindan juda katta olinsa-yu, uning ko’p qismi keraksiz qolib ketsa, u holda xotira behuda sarflanishiga olib keladi. Shu muammoni hal qilish maqsadida massivlar C# tilida asosan dinamik tarzda e’lon qilinadi. Massivlar dasturlashda eng ko’p qo’laniladigan ma’lumot tiplaridir. Massivlar hotirada ketma-ket joylashgan, bir tipdagi o’zgaruvchilar guruhidir. Alohida bir o’zgaruvchini ko’rsatish uchun massiv nomi va kerakli o’zgaruvchi indeksini yoziladi. Ta’rif: Bir turga mansub bo’lgan yagona nom bilan saqlanuvchi tartiblangan ma’lumotlar majmuasi massiv deyiladi. Massivlar yagona o’zgaruvchi bilan kompyuter xotirasiga saqlanadi, uning

elementlari ma’lum bir indekslar bilan tartiblab joylashtiriladi. Massivlar yagona nom bilan bir nechta qiymatni o’zida mujassamlashtiradi, bularga matematikadagi vektorlarni misol keltirish mumkin. Vektor ham yagona nom bilan saqlanib uning tarkibida bir nechta qiymatni o’zida mujassamlashadi. Vektorning ham elementlari bir turga mansub va tartiblangan bo’ladi. Bir o’lchovli massivlar Odatda massivlar zarurat, katta hajmdagi tartiblangan, lekin chekli elementlarga oid masalalarni hal etishda yuzaga keladi. Dastur ishlatilishi davomida massivlar aniq nomga ega bo’lishi va uning elementlari ma’lum bir turda bo’lishi kerak. Bir o’lchovli massivlar kompyuter xotirasiga quyidagi shaklda saqlanadi Massiv tarkibida elementlar mavjud bo’ladi. Massivning eng ko’pi bilan ketishi mumkin bo’lgan elementlar soni uning o’lchamini bildiradi. Massivning elementi turgan o’rni uning indeksi deyiladi. Massivning elementiga uning indeksi orqali murojaat qilinadi. Massivning indeksi sifatida butun sonlar xizmat qiladi. Har bir massiv o’zining individual nomiga ega bo’lishi kerak, ya’ni bir xil nomdagi massivlar bo’lmaydi. Ularning nomi oldin e’lon qilingan oddiy o’zgaruvchi nomi bilan ustma-ust tushmasligi kerak. Statik massivlarni e’lon qilishning umumiy ko’rinishi quyidagicha: <tip> []<massiv_nomi>={boshlang’ich qiymatlar} Bunda {boshlang’ich qiymatlar} albatta bo’lishi kerak. Misollar: 1 int [] A = { 1 , 4 , 3 , 1 }; 2 string [] B = { “olma” , “gilos” , “anor” }; 3 double [] C = { 0.005 , 1.234 , 12.5 , 13.5 , 10.6 }; Copied!