Kitob uchta qismdan iborat. "Strukturali dasturlash", "Obyektli-yo’nalishli dasturlash", "Standart kutubxonalar"



Download 333,2 Kb.
bet37/90
Sana10.07.2022
Hajmi333,2 Kb.
#770437
1   ...   33   34   35   36   37   38   39   40   ...   90
Bog'liq
C majmua

Bit maydonlar
Bit maydonlar – bu struktura maydonlarining maxsus turi. Ular ma'lumotlarni zich joylashtirish uchun ishlatiladi, masalan, ha / yo'q tipidagi bayroqchalar. Minimal adreslanadigan xotira yacheykasi – 1 bayt bayroqchani saqlash uchun bit yetarli. Bit maydonlarni tavsiflashda nomdan so'ng ikki nuqta orqali maydon uzunligi bitlarda ko’rsatiladi (butun musbat konstanta):

struct Options{


bool centerX:1;
bool centerY:1;
unsigned int shadow:2;
unsigned int palette:4;
};

Bit maydonlar ixtiyoriy butun tipda bo'lishi mumkin. Maydon nomi bo'lmasligi mumkin, bunday maydonlar apparat chegarasiga to'g'rilash uchun xizmat qiladi. Maydoncha kirish oddiy usul bilan amalga oshadi – nom bo'yicha. Maydon adresini olish mumkin emas, lekin qolgan hollarda bit maydonlarni strukturaning maydonlari kabi foydalanish mumkin. Alohida bitlar bilan amallar ancha samarasiz amalga oshadi, chunki kompilyator maxsus kodlarni hosil qilish va o'zgaruvchiga xotirani tejash dastur kodi hajmining oshishiga olib keladi. Bit maydonlar xotirada joylashtirish kompilyator va apparaturaga bog'liq.




Birlashmalar (union)
Birlashmalar (union) struktura xususiy holi bo'lib, uning barcha maydonlari bitta adresga joylashadi. Tavsiflash formati strukturadagi kabi faqat struct tayanch so'zi o'rniga union so'zi ishlatiladi. Birlashma uzunligi uning maydonlari uzunliklari eng kattasiga teng har bir vaqt momentida birlashma tipidagi o'zgaruvchida faqat bitta qiymat saqlanadi va undan to'g'ri foydalanish ma'suliyati dasturchi zimmasiga tushadi.
Birlashmalar xotirani tejash uchun bittadan ko'p maydon talab qilinmaydigan hollarda qo'llaniladi:

#include


int main () {
enum paytype {CARD, CHECK};
paytype ptype;
union payment {
char card[25];
long check;
} info;
/* присваивание значений info и ptype */
switch (ptype) {
case CARD: cout << "Kartadan to'lash: " << info.card; break;
case CHECK: cout << "Chekni to'lash: " << info.check; break;
}
return 0;
}

Birlashmalar ko'pincha struktura maydoni sifatida foydalaniladi, bunda strukturaga birlashgan qanday elementi har bir momentda foydalanilayotganligi aniqlovchi qo'shimcha maydonni kiritish qulay. Birlashmalar nomini ko'rsatish shart emas, bu esa uning maydonlariga bevosita murojaat qilishga imkon beradi:


#include
int main () {
enum paytype {CARD, CHECK};
srtuct{
paytype ptype;
union{
char card[25];
long check;
};
} info;
… /* присваивание значений info */
switch (info.ptype) {
case CARD: cout << "Kartadan to'lash: " << info.card; break;
case CHECK: cout << "Chekni to'lash: " << info.check; break;
}
return 0;
}
Birlashmalar bir xil bit tasvirlashning turlicha talqini uchun qo'llaniladi (lekin, odatda, bu holda tiplarni almashtirish oshkora amallardan foydalanish yaxshi). Misol sifatida bit maydonlar o'z ichiga oluvchi struktura bilan ishlashni qaraymiz:

struct Options{


bool centerX:1;
bool centerY:1;
unsigned int shadow:2;
unsigned int palette:4;
};
union{
unsigned char ch;
Options bit;
}option = {0xC4};
cout << option.bit.palette;
option.ch &= 0xF0; // maskalar qiymati

Strukturalarga qaraganda birlashmalarga ba'zi cheklovlar qo'yiladi. Ularning ba'zilari ma'nosi keyinchalik tushunarli bo'ladi:



  • birlashma faqat uning birinchi elementi bilan initsializatsiyalanishi mumkin;

  • birlashma bir maydonlarni o'z ichiga ololmaydi;

  • birlashma virtual usullarni, konstruktorlarni, destruktorlarni va qiymat berishni o'z ichiga olomaydi;

  • birlashma sinflar iyerarxiyasiga kira olmaydi.



Download 333,2 Kb.

Do'stlaringiz bilan baham:
1   ...   33   34   35   36   37   38   39   40   ...   90




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