Muhammad al-Xorazmiy nomidagi tatu samarqand filiali



Download 426,13 Kb.
Sana16.01.2022
Hajmi426,13 Kb.
#377263
Bog'liq
Dasturlash I 8 1-laboratoriya


Muhammad al-Xorazmiy nomidagi TATU Samarqand filiali

Laboratoriya mashg‘ulotI


FAN:





DASTURLASH I

Hafta raqami:





8

Mashg‘ulot mavzusi:




Ko‘rsatkichla va ular bilan ish yuritish

ishning Maqsadi:




  1. Ko‘rsatkichni e’lon qilish va uning uchun xotiradan joy ajratilishini ko‘rib chiqish;


  2. Qiymatlarga ko‘rsatkich yordamida murojaat qilishni ko‘rib chiqish ;

  3. Typedef kalit so‘zi yordamida sinonim turlar yaratish.

  4. Ko‘rsatkichlardan foydalanib oddiy dasturlar tuzish.
  5. Funksiyadan ko‘rsatkich orqali qiymat qaytarilishini ko‘rib chiqish;


  6. Massivda qo‘llaniladigan funksiyalarda ko‘rsatkichlardan foydalanishni o‘rganish;

  7. Massiv va ko‘rsatkichlardan foydalanib dastur tuzish.

1-mashq. Ko‘rsatkichlar qo‘llanilishini namoyish etuvchi dastur tuzilsin.

Dastur kodi:

  1. #include

  2. using namespace std;



  3. int main()

  4. {

  5. int count = 5;

  6. int* pCount = &count;



  7. cout << "Znacheniye count raven ==> " << count << endl;

  8. cout << "Adress count raven ==> " << &count << endl;

  9. cout << "Adress count raven ==> " << pCount << endl;

  10. cout << "Znacheniye count raven ==> " << *pCount << endl;



  11. return 0;

  12. }

Natija:

6-satrda count nomli o‘zgaruvchi e’lon qilinmoqda va uning boshlang‘ich qiymati 5 ga teng. 7-satrda pCount nomli ko‘rsatkich-o‘zgaruvchi e’lon qilinmoqda va uning qiymati count o‘zgaruvchisining adresiga teng.

Quyidagi sintaksislarga ahamiyat bering

pCount = &count; // tugri

chem

*pCount = &count; // xato


2-mashq. Yuqoridagi dastur kodi typedef kalit so‘zi ishlatilgan holda qaytadan ko‘rib chiqilsin.

Dastur kodi:

  1. #include

  2. using namespace std;

  3. typedef int* intPointer;



  4. int main()

  5. {

  6. int count = 5;

  7. intPointer pCount = &count;



  8. cout << "Znacheniye count raven ==> " << count << endl;

  9. cout << "Adress count raven ==> " << &count << endl;

  10. cout << "Adress count raven ==> " << pCount << endl;

  11. cout << "Znacheniye count raven ==> " << *pCount << endl;



  12. return 0;

  13. }

Natija:


3-mashq. Ko‘rsatkichlar va massivdan foydalangan holda dastur tuzilsin.

Dastur kodi:

1 #include

2 using namespace std;

3

4 int main()



5 {

6 int list[6] = {11, 12, 13, 14, 15, 16};

7 int* p = list;

8

9 for (int i = 0; i < 6; i++)



10 cout << "address: " << (list + i) <<

11 " znacheniye: " << *(list + i) << " " <<

12 " znacheniye: " << list[i] << " " <<

13 " znacheniye: " << *(p + i) << " " <<

14 " znacheniye: " << p[i] << endl;

15

16 return 0;



17 }
Natija:


7-satrda int turiga mansub ko‘rsatkich e’lon qilinmoqda, uning qiymatiga esa massiv adresi ta’minlanmoqda.

int* p = list;

Ahamiyat bering, massiv adresini ta’minlash vaqtida (&) operatoridan foydalanmayapmiz, chunki massiv nomining o‘zi massivning boshlang‘ich adresini o‘zida saqlaydi. Yuqoridagi yozuv quyidagi bilan teng kuchli:



int* p = &list[0];

1-mashq. swap dasturini qiymatlarni ko‘rsatkich yordamida yuborishni qo‘llagan qolda tuzish.

Dastur kodi:

  1. #include

  2. using namespace std;



  3. //Zamena dvux peremennyx, ispolzuya peredachu po znacheniyu

  4. void swap1(int n1, int n2)

  5. {

  6. int temp = n1;

  7. n1 = n2;

  8. n2 = temp;

  9. }



  10. // Zamena dvux peremennyx, ispolzuya peredachu po ssylke

  11. void swap2(int& n1, int& n2)

  12. {

  13. int temp = n1;

  14. n1 = n2;

  15. n2 = temp;

  16. }



  17. // Peredacha dva ukazatelya po znacheniyu

  18. void swap3(int* p1, int* p2)

  19. {

  20. int temp = *p1;

  21. *p1 = *p2;

  22. *p2 = temp;

  23. }



  24. // Peredacha dva ukazatelya po ssylke

  25. void swap4(int* &p1, int* &p2)

  26. {

  27. int* temp = p1;

  28. p1 = p2;

  29. p2 = temp;

  30. }



  31. int main()

  32. {

  33. // Obyavleniye i initsializatsiya peremennyx

  34. int num1 = 1;

  35. int num2 = 2;



  36. cout << "Pered vyzovom funktsii num1 = "

  37. << num1 << " i num2 = " << num2 << endl;



  38. // Vyzov 1-y funksii

  39. swap1(num1, num2);



  40. cout << "Posle vyzova funksii, num1 = " << num1

  41. << " i num2 = " << num2 << endl;



  42. cout << "Pered vyzovom funktsii num1 = "

  43. << num1 << " i num2 = " << num2 << endl;



  44. // Vyzov 2-y funksii

  45. swap2(num1, num2);



  46. cout << "Posle vyzova funksii, num1 = " << num1

  47. << " i num2 = " << num2 << endl;



  48. cout << "Pered vyzovom funktsii num1 = "

  49. << num1 << " i num2 = " << num2 << endl;



  50. // Vyzov 3-y funksii

  51. swap3(&num1, &num2);



  52. cout << "Posle vyzova funksii, num1 = " << num1

  53. << " i num2 = " << num2 << endl;



  54. int* p1 = &num1;

  55. int* p2 = &num2;

  56. cout << "Pered vyzovom funktsii p1 = "

  57. << p1 << " i p2 = " << p2 << endl;



  58. // Vyzov 4-y funksii

  59. swap4(p1, p2);



  60. cout << "Posle vyzova funksii, p1 = " << p1

  61. << " i p2 = " << p2 << endl;



  62. return 0;

  63. }

Natija:


To‘rtta funksiya swap1, swap2, swap3 va swap4 5-34 satrlarda e’lon qilingan. swap1 funksiyasi num1 ni n1 ga num2 ni n2 ga ta’minlash orqali chaqirilayapti (46-satr). swap1 funksiyasi n1 va n2 qiymatlarini o‘zgartirmoqda. n1, num1, n2, num2 o‘zgaruvchilar mustaqil bo‘lib. Funksiya chaqirilgandan so‘ng num1 va num2 qiymatlari o‘zgarishsiz qolmoqda.

swap2 funksiyasi 2 ta havolali parametrga ega: int & n1 va int & n2 (13-satr). num1 va num2 havolalari n1 va n2 ga yuborilgan (55-satr), shuning uchun n1 va num1 psevdonim hisoblanadi, n2 va num2 – ham psevdonimdir. swap2 da n1 va n2 o‘rnini o‘zgartiradi. Funksiya chaqirilganda esa num1 va num2 ham o‘z o‘rinlarini o‘zgartirishadi.

swap3 funksiyasi esa 2 ta ko‘rsatkich parametrga ega, p1 va p2 (21 satr). num1 va num2 adreslari p1 va p2 jo‘natiladi (64-satr), shuning uchun p1 va & num1 xotiradagi bitta joyda turadi, p2 va & num2 ham xotirada bir joyda saqlanadi. * p1 va * p2 swap3 da o‘z joylarini almashtiradi. Funksiya chaqirilgandan so‘ng num1 va num2 qiymatlari ham o‘z joylarini almashtiradi.

swap4 funksiyasi 2 ta ko‘rsatkich parametrga ega, p1 va p2, havola orqali yuborilganda (2-satr). Mazkur funksiyaning chaqirilishi p1 ni p2 ga o‘zgartiradi (75-satr).


2-mashq. Massiv elementlarini teskarisiga almashtiradigan dastur ko‘rsatkichlardan foydalangan holda tuzilsin.

Dastur kodi:

1 #include

2 using namespace std;

3

4 int* reverse(int* list, int size)



5 {

6 for (int i = 0, j = size - 1; i < j; i++, j--)

7 {

8 // Swap list[i] with list[j]



9 int temp = list[j];

10 list[j] = list[i];

11 list[i] = temp;

12 }


13

14 return list;

15 }

16

17 void printArray(const int* list, int size)



18 {

19 for (int i = 0; i < size; i++)

20 cout << list[i] << " ";

21 }


22

23 int main()

24 {

25 int list[] = {1, 2, 3, 4, 5, 6};



26 int* p = reverse(list, 6);

27 printArray(p, 6);

28

29 return 0;



30 }

Natija:


3-mashq. min_element i max_element funksiyalaridan foydalangan holda massivdagi maksimal va minimal elementlarni qaytaradiga va massivni sortirovka funksiyasidan foydalanib va random_shuffle funksiyalari yordamida dastur tuzilsin.
Dastur kodi:

  1. #include

  2. #include

  3. using namespace std;



  4. void printArray(const int* list, int size)

  5. {

  6. for (int i = 0; i < size; i++)

  7. cout << list[i] << " ";

  8. cout << endl;

  9. }



  10. int main()

  11. {

  12. int list[] = {4, 2, 3, 6, 5, 1};

  13. printArray(list, 6);



  14. int* min = min_element(list, list + 6);

  15. int* max = max_element(list, list + 6);

  16. cout << "Minimalnoye znacheniye " << *min << " index "

  17. << (min - list) << endl;

  18. cout << "Maksimalnoye znacheniye " << *max << " index "

  19. << (max - list) << endl;



  20. random_shuffle(list, list + 6);

  21. printArray(list, 6);



  22. sort(list, list + 6);

  23. printArray(list, 6);



  24. int key = 4;

  25. int* p = find(list, list + 6, key);

  26. if (p != list + 6)

  27. cout << "Znacheniye " << *p << " nayden na pozicii "

  28. << (p - list) << endl;

  29. else

  30. cout << "Znacheniye " << *p << " ne nayden" << endl;



  31. return 0;

  32. }


Natija:

min_element (list, list + 6) (17-satr) chaqirilganda ko‘rsatkich massivdagi eng kichik elementni list[0] dan list[5] ga ko‘chirgan. Bu holda list + 5 qaytariladi chunki 1 eng kichik element hisoblanadi.

random_shuffle (list, list + 6) (24-satr) tasodifiy tarzda massiv elementlarini joyini o‘zgartirmoqda list[0] dan list[5] ga.

sort (list, list + 6) (27-satr) chaqirilganda massif elementlari saralanmoqda.



find(list, list + 6, key) (31-satr) funksiyasi key ni massiv ichidan topish uchun qo‘llanilgan. Element topilganda funksiya massivda topilgan elementni qaytarmoqda, aks holda esa funksiya oxirgi elmentdan keyin keladigan pozitsiyani qaytaradi (list + 6).

Dasturlash I fanidan 8.1-laboratoriya mashgʻuloti

Download 426,13 Kb.

Do'stlaringiz bilan baham:




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish