Dasturchilar uchun C++ da bir o`lchamli massivlar bilan ishlash




Download 34.56 Kb.
bet2/2
Sana02.06.2023
Hajmi34.56 Kb.
#68986
1   2
Bog'liq
C temalar
Attestatsiya 2022 (Toshkent 28-mart), 1678960883560 AZIZJON 2(1), 41
Dasturchilar uchun C++ da bir o`lchamli massivlar bilan ishlash
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] mas2[4] mas2[5]
elementilari qiymati 2 -17 6 7 13 -3
3) b elementlari mantiqiy qiymatlardan (true, false ) iborat bo`lgan 10 ta elementdan tashkil topgan massiv. Indekslari esa 0 dan 9 gacha bo`lgan sonlar.
Massiv elementlariga murojaat qilish oddiy o`zgaruvchilarga murojaat qilishdan biroz farq qiladi. Massiv elementiga murojaat qilish uning indeksi orqali bo`ladi.
a[1] = 10; a massivining 1 – elementi 10 qiymat o’ zlashtirsin;
cin >> a[2]; a massivining 2 – elementi kirtilsin;
cout << a[3]; a massivining 3 – elementi ekranga chiqarilsin;
Massivni e'lon qilishda uning elementlariga boshlang'ich qiymat berish mumkin va buning bir nechta usuli mavjud.
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
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
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=" <return 0;
}

Avvalgi darsda qisqacha ko’rsatkich haqida ma’lumot oldik. Endi misollar orqali bu muhim mavzuni yaxshiroq o’zlashtiramiz. Yaxshi dasturchi bo’lishning yaxshi yo’li amaliyot, amaliyot va yana amaliyot!


Oddiy ko’rsatkichni e’lon qilishni eslaylik:
int *a;
Bunda int tipidagi ma’lumotni o’zida saqlaydigan a ning manziliga yo’nalgan ko’rsatkich e’lon qilindi. Doim yodda saqlash zarurki, ko’rsatkich e’lon qilingani bilan, hali unga biror xotira ajratilmadi. Agar shu holida ko’rsatkichdan foydalanmoqchi bo’lsak, dastur ishlamaydi. Chunki yerdan joy ajratib ekilmagan daraxtdan meva olish aqlga sig’maydi. Buni huddi bozordan ekish uchun daraxt ko’chati olib kelib uni ekishga hali biror yerdan joy ajratmaganingiz misol bo’ladi. Demak ko’chatimiz uchun chuqur kavlaymiz:
a = new int;
Dasturchilar ko’p unutadigan narsa e’lon qilingan ko’rsatkich xotirasiga boshlang’ish qiymat bermaslik. Chunki xotirada ixtiyoriy qiymat turgan bo’lishi mumkin, undan foydalanganda yoki o’zgartirganda kutilmagan xatoliklar kelib chiqishi mumkin. Dereference orqali unga biror boshlang’ich qiymat beramiz: [code]*a = 11;[/code]
Xotiradan joy ajratildi. Ko’rsatkichimiz aniq bir xotira manzilini ko’rsatib turibdi. Daraxt ekilgan joydagi daraxtni olib tashlab o’rniga boshqa daraxt ekish mumkin bo’lganidek, xotiradagi manzilni bilib undagi qiymatni istalgancha o’zgartirishimiz mumkin.(*a=5, *a=-10,…)
O’tgan darsda bitta funksiya ichida o’zgaruvchilarni o’zgartirishni ko’rgan edik. Endi aynan bir funksiya ichida e’lon qilingan o’zgaruvchini boshqa funksiyada o’zgartirish bilan tanishamiz. Avval misollar bilan tanishib, so’ngra uni qanday ishlashi bilan batafsil tanishamiz. Agar misolni qanday ishlashini tushuna olsangiz, umid qilamizki c++ tilida ko’rsatkichlar bilan bog’liq muammoga kamroq duch kelasiz.


Source code



  1. void cplusStili(int &a, int &b){

  2. a*=10;

  3. b*=11;

  4. }


  5. void cStili(int *a, int *b){

  6. *a = -10;

  7. *b = -2;

  8. }


  9. int main(int argc, char** argv)

  10. {

  11. int *a;

  12. int *b;


  13. a = new int; //xotiradan joy ajratish

  14. b = new int;


  15. *a=3; // boshlang'ish qiymat berish (muhim!)

  16. *b=4;


  17. cplusStili(*a, *b);


  18. cout << " *a=" << *a << endl;

  19. cout << " *b=" << *b << endl;


  20. cStili(a, b);


  21. cout << " *a=" << *a << endl;

  22. cout << " *b=" << endl;


  23. return 0;

  24. }

Dastur natijasi qanday bo’lishini o’quvchiga qoldiramiz.
Demak C++ tilida funksiyaga o’zgaruchi manzilini berib yuborsak, o’sha funksiya ichida uni istalgan “kuy”ga solish mumkin ekan. Chaqirilgan funksiyadagi o’zgaruvchidagi o’zgarishlar saqlanadi. C tilida ham huddi shunday imkoniyat bor, farqi, C da funksiyaga ko’rsatkich beriladi va funksiya ichida ko’rsatkich dereference orqali o’zgaruchi qiymati o’zgartiriladi. Java tilida bunday imkoniyat yo’q. Funksiyaga berib yuborilgan qiymat nusxasi olinib o’zgartiriladi va asl o’zgaruvchi holati saqlanadi.
Download 34.56 Kb.
1   2




Download 34.56 Kb.

Bosh sahifa
Aloqalar

    Bosh sahifa



Dasturchilar uchun C++ da bir o`lchamli massivlar bilan ishlash

Download 34.56 Kb.