vector va bo'sh xotira

DOC 18 стр. 148,0 КБ Бесплатная загрузка

Предварительный просмотр (5 стр.)

Прокрутите вниз 👇
1 / 18
5-ma’ruza. vektor va bo’sh xotira ma’ruza rejasi: 5.1 asosiy tushunchalar 5.2 xotira, adres va ko’rsatgich 5.3 bo’sh xotira va ko’rsatgich 5.4 bo’sh xotiraga joylashtirish 5.5 destruktorlar 5.6 elementlarga ruxsat kalit so’zlar: delete, masofa keltirish, delete[], new, indeks, this, indeksirlash, [] bo’sh xotira, void*, konteyner, ro’yxat, manzil, nolinchi ko’rchsatkich, tugun, adres olish &, bo’shatish, ko’rsatkich, virtual destruktor, xotira, xotira chiqishi, destruktor, toifani o’zlashtirish, resurslar chiqishi, a’zo destruktori. 5.1 asosiy tushunchalar juda oddiy namuna yordamida vector sinfining izchil rivojlanishini tashkil etamiz. vector age(4); // double tipiga mansub 4 ta elementdan iborat vektor age[0]=0.33; age[1]=22.0; age[2]=27.2; age[3]=54.2; guvohi bo’lganingizdek ushbu kod double tipli 4 ta elementdan iborat vector sinf obyektini yaratadi va 0.33, 22.0, 27.2 va 54.2 qiymatlarni o’zlashtirmoqda. bu to’rt element 0, 1, 2 va 3 tartibi bilan raqamlanadi. c++ standart konteynerlarida elementlarni raqamlash doimo 0 (nol) dan boshlanadi. 0 dan boshlab raqamlash c++ tilida dastur tuzuvchilar o’rtasida universal kelishuv bo’lib, doimo …
2 / 18
sinfni ishlab chiыaramiz. shunday qilib, rasmdagi tasvirga o’qni qanday qaratamiz? o’zimizni u emas deb ishontiramiz. biz shunda ma’lumotlar tuzulmasining fiksirlangan o’lchamini belgilashimiz mumkin. class vector { int size, age0, age1, age2, age3; // . . . }; quyidagi tasvir kabi belgilarga bog’liq ayrim detallarni hisobga olmasdan xech narsaga erisha olmaymiz bu oddiy va chiroyli, lekin, faqatgina qiyin vaziyatda push_back() funksiyasi yordamida element qo’shishga urinishni amalga oshirishimiz mumkin: biz element qo’sha olmaymiz, elementlar soni belgilangan va u to’rtga teng. bizga fiksirlangan elementlar sonini saqlaydigan ma’lumotlar tuzilmasiga nisbatan ko’proq narsalar kerak. vector sinfi obyektida elementlar sonini o’zgartiruvchi push_back() amallarini, agar vector sinfida elementlar soni fiksirlangan bo’lsa, amalga oshirish mumkin emas. bizga birinchi elementning manzili kerak. c++ tili ma’lumotlar toifasining manzilini saqlash qobiliyati ko’rsatkich deb ataladi (pointer). sintaksik jihatdan u * suffiksi bilan belgilanadi, ya’ni double* double tipli obyektga ko’rsatkichni bildiradi. endi vector sinfining birinchi variantini aniqlashimiz mumkin. // juda soddalashtirilgan double tipiga …
3 / 18
inishdagi butun sonlar bilan hisoblanadi. xotiraning birinchi bayti 0 adresga ega, ikkinchisi 1 va x.z. xotira megabaytlarini quyidagi ko’rinishda ifodalashimiz mumkin: xotirada joylashgan barcha narsa manzilga ega. misol ko’ramiz. int var = 17; bu qo’llanma var o’zgaruvchini saqlash uchun o’lchami int toifali o’lcham bilan aniqlanadigan xotira maydonini zahiralaydi va u yerga 17 sonini yozib qo’yadi. bundan tashqari, manzillarni saqlash mumkin va ularga amallarni qo’llash mumkin. manzilni saqlovchi obyekt ko’rsatkich deb ataladi. int* ptr = &var; // ptr ko’rsatgichi var o’zgaruvchi adresini o’zida saqlaydi obyekt adresini belgilash uchun unar & adres olish operatori ishlatiladi. demak, agar var o’zgaruvchisi xotira xududida saqlangan bo’lsa, u xolda birinchi yacheyka adresi 4096 (yoki 212) ga teng bo’lib ptr ko’rsatgichi 4096 sonini o’zida saqlashi mumkin. mavjudligiga qarab, kompyuter xotirasini 0 dan size-1 gacha raqamlangan baytlar ketma-ketligi kabi qarash mumkin. ayrim mashinalar uchun bunday tasdiqlash juda ham sodda xarakterga ega bo’ladi, lekin bizning model uchun shuning o’zi …
4 / 18
e’tiboringizni qarating: ko’rsatkich qiymati butun son hisoblanishiga qaramasdan, ko’rsatkichning o’zi butun son hisoblanmaydi. “int nimaga yo’naltiriladi?” – noto’g’ri savol. butun sonlar emas, ko’rsatkichlar yo’naltiriladi. ko’rsatkich toifasi manzillar ustida amallarni bajarish imkonini beradi, shu vaqtning o’zida int toifasi butun sonlar ustida amallar bajarishga imkon beradi (arifmetik va mantiqiy). demak, ko’rsatkich va butun sonlarni aralashtirish mumkin emas. int i = pi; // xato: int* toifasi obyektini int toifasi obyekti bilan o’zlashtirish mumkin emas pi = 7; // xato: int toifasi obyektini int* toifasi obyektiga o’zlashtirish mumkin emas char (ya’ni char*) ga ko’rsatkich – bu int (ya’ni int*) ga ko’rsatkich emas. misol ko’ramiz. pc = pi; // oshibka: nelzya prisvoit obyekt tipa int* // obyektu tipa char* pi = pc; // oshibka: nelzya prisvoit obyekt tipa char* // obyektu tipa int* nima uchun pc o’zgaruvchini pi o’zgaruvchiga o’zlashtirish mumkin emas? bunga javob sifatida shuni aytish mumkinki — char belgi int toifasidan kichikroq. char …
5 / 18
ardi. bunday o’zlashtirish taqiqlanganligi juda yaxshi, lekin bunday mexanizmlar xavfsizligi dasturlashning quyi bosqichlarida juda kam. demak, apparat ta’minotga juda yaqinmiz. dasturchi uchun bu juda noqulay. bizning ixtiyorimizda bir nechta oddiy amallar bor va qo’llab-quvvatlovchi kutubxonalar yo’q. biroq biz bilishimiz kerak, vector sinfi kabi yuqori darajali vositalar qanday amalga oshirilishini. modomiki barcha kodlar ham yuqori darajali bo’la olmaydi, shuning uchun biz quyi darajada kod yozishni bilishimiz kerak. bundan tashqari yuqori darajali dasturlashning nisbatan ishonchligi va qulayliklarini baholash uchun, quyida darajadagi dasturlashning murakkabliklarini his qilib ko’rish kerak. bizning maqsad – ifodalangan chegaralar va qo’yilgan masala yo’l qo’yadigan abstraksiyaning yuqori darajalari bilan har doim ishlash. 5.3 bo’sh xotira va ko’rsatkichlar 5.1. bo’lim oxirida keltirilgan vector sinfini amalga oshirilishiga qaraymiz. vector sinfi o’zining elementlarini saqlash uchun qayerdan joy topadi? elem ko’rsatkichini u ularga yo’naltirilishi uchun qanday o’rnatish? qachonki c++ tilida yozilgan dasturlar bajarilishi boshlansa, kompilyator uning kodi uchun xotira (ayrim hollarda bu xotirani kod …

Хотите читать дальше?

Скачайте все 18 страниц бесплатно через Telegram.

Скачать полный файл

О "vector va bo'sh xotira"

5-ma’ruza. vektor va bo’sh xotira ma’ruza rejasi: 5.1 asosiy tushunchalar 5.2 xotira, adres va ko’rsatgich 5.3 bo’sh xotira va ko’rsatgich 5.4 bo’sh xotiraga joylashtirish 5.5 destruktorlar 5.6 elementlarga ruxsat kalit so’zlar: delete, masofa keltirish, delete[], new, indeks, this, indeksirlash, [] bo’sh xotira, void*, konteyner, ro’yxat, manzil, nolinchi ko’rchsatkich, tugun, adres olish &, bo’shatish, ko’rsatkich, virtual destruktor, xotira, xotira chiqishi, destruktor, toifani o’zlashtirish, resurslar chiqishi, a’zo destruktori. 5.1 asosiy tushunchalar juda oddiy namuna yordamida vector sinfining izchil rivojlanishini tashkil etamiz. vector age(4); // double tipiga mansub 4 ta elementdan iborat vektor age[0]=0.33; age[1]=22.0; age[2]=27.2; age[3]=54.2; guvohi bo’lganingizdek ushbu kod ...

Этот файл содержит 18 стр. в формате DOC (148,0 КБ). Чтобы скачать "vector va bo'sh xotira", нажмите кнопку Telegram слева.

Теги: vector va bo'sh xotira DOC 18 стр. Бесплатная загрузка Telegram