Texnologiyalar vazirligi muhammad al xorazmiy nomidagi toshkent axborot




Download 436,86 Kb.
Pdf ko'rish
bet2/3
Sana08.01.2024
Hajmi436,86 Kb.
#132690
1   2   3
Bog'liq
Alisher Safarov

 
Birlashmalar (union) 


 
Birlashmalar xuddi strukturalarga o‘xshash toifa hisoblanadi, farqi shuki, 
birlashmalarda bir vaqtning o‘zida faqat uning bitta elementigagina murojaat qilish 
mumkin. Birlashma toifasi quyidagicha aniqlanadi: 
union { 1-elementni tavsiflash; 
... 
n-elementni tavsiflash;
}; 
Birlashmalarning asosiy xususiyati shuki, e’lon qilingan har bir element uchun 
xotiraning bitta hududi ajratiladi, ya’ni ular bir-birini qoplaydi. Bu yerda xotiraning 
shu qismiga istalgan element bilan murojaat qilsa bo‘ladi, lekin buning uchun 
element shunday tanlanishi kerakki, olinadigan natija ma’noga ega bo‘lishi kerak.
Birlashmaning elementiga murojaat xuddi struktura elementiga murojaat kabi 
amalga oshiriladi. Birlashmalar qo‘llaniladigan xotira obyektini initsializatsiya 
qilish maqsadida ishlatiladi, agarda har bir murojaat vaqtida bir qancha obyektlardan 
faqat bittasi faollashtirilsa. 
C++ dasturlash tillarida, birlashmalar (union) ma'lumotlarni bir qatorda saqlash 
uchun ishlatiladi. Birlashma, bir nechta turdagi ma'lumotlar to'plamini (masalan, xat, 
son, float, va hokazo) bir qatorda saqlash imkonini beradi. Bunda, birlashma ichidagi 
har bir element o'z joyda birinchi elementning qiymatini saqlayadi. 
Birlashma, ma'lumotlar strukturasiga o'xshash ko'rinishda bo'ladi, lekin ularning 
asosiy farqi, birlashmada bir vaqtning o'zida faqat bir element qiymati mavjud 
bo'lishi va o'zi qaysi elementni saqlashini o'z ichiga oladi. 
Quyidagi C++ kodida birlashma namunasi ko'rsatilgan: 
#include  
using namespace std; 
union Ma'lumotlar { 
int butun_son; 
float o'nlik_son; 


char harf; 
}; 
int main() { 
Ma'lumotlar m; 
m.butun_son = 10; 
cout << "Butun son: " << m.butun_son << endl; 
m.o'nlik_son = 15.75; 
cout << "O'nlik son: " << m.o'nlik_son << endl; 
m.harf = 'A'; 
cout << "Harf: " << m.harf << endl; 
cout << "Butun son: " << m.butun_son << endl; // Bu erda qiymat o'zgarishi 
ko'rinmaydi 
cout << "O'nlik son: " << m.o'nlik_son << endl; // Bu erda ham qiymat 
o'zgarishi ko'rinmaydi, sababi, bir xil xotirada joylashgan 
cout << "Harf: " << m.harf << endl; 
return 0; 

``` 
Bu misolda, `Ma'lumotlar` nomli birlashma yaratilgan va unda `int`, `float`, va 
`char` turdagi elementlar mavjud. Birlashma ichidagi har bir element birinchi 
elementning joylashgan joyida ma'lumotlarni saqlaydi. Bu esa, birlashmada bir 
elementga qiymat berilganda, boshqa elementlar o'zgartirilgan holatda ham 
o'zgarishi mumkin. 


Birlashmalarni foydalanish paytida ehtiyot bo'lish kerak, chunki ular bilan ishlash 
paytida ma'lumotlar turi va ularga murojaat qilish tartibiga ehtiyot bo'lishingiz 
kerak. Çünki birlashma o'z ichida faqat bir qatorda ma'lumot saqlaydi va ma'lumotlar 
qaysi turda saqlanganini aniqlashda xatoliklar paydo bo'lishi mumkin. 
Birlashma toifasidagi o‘zgaruvchi uchun ajratiladigan xotira hajmi ushbu 
toifaning eng uzun elementi uchun ketadigan xotira hajmi bilan aniqlanadi. Kichik 
uzunlikdagi element ishlatilganda, birlashma toifasidagi o‘zgaruvchi uchun 
ajratilgan xotira sohasining ayrim qismi ishlatilmaydi. Birlashmaning barcha 
elementi uchun xotiraning bitta adresdan boshlanuvchi bitta sohasi ajratiladi. 
Masalan:
union { char fio[30]; 
char adres[80]; 
int yoshi; 
int telefon; } inform; 
union { int ax; 
char al[2]; } ua; 
Birlashma tipidagi inform obyektini ishlatganda qiymat qabul qilgan 
elementnigina qayta ishlash mumkin, ya’ni masalan inform.fio elementiga qiymat 
berilgandan keyin boshqa elementlarga murojaat ma’noga ega emas. ua birlashmasi 
al elementining kichik ua.al[0] va katta ua.al[1] baytlariga alohida murojaat qilish 
mumkin. Birlashma tipiga oid misol ko‘rib chiqamiz. 
#include  
using namespace std; 
int main() 
{ union Guruh{ 
int n; 
int m; 
}; 
Guruh w; 


w.n=12;// w birlashmasining n elementiga qiymat berish 
w.m=23; // w birlashmasining m elementiga qiymat berish 
cout<
m uchun 23 qiymati yozilgani sababli ekranga 23 23 javobi chiqariladi.
system("pause"); 


Download 436,86 Kb.
1   2   3




Download 436,86 Kb.
Pdf ko'rish

Bosh sahifa
Aloqalar

    Bosh sahifa



Texnologiyalar vazirligi muhammad al xorazmiy nomidagi toshkent axborot

Download 436,86 Kb.
Pdf ko'rish