7. Чизиқли жараёнларни дастурлаш


Download 478.36 Kb.
bet32/32
Sana28.12.2022
Hajmi478.36 Kb.
#1016431
1   ...   24   25   26   27   28   29   30   31   32
Bog'liq
С да дастурлаш 1 кисм 1 семестр

Назарий саволлар:

  1. Структура умумий кўриниши.

  2. Структуралар қандай инициализация қилинади?

  3. Структура элементларига қандай мурожаат қилинади?

18. Бирлашмалар


Режа:

  1. Бирлашмалар ҳақида маълумот

  2. Бирлашма эълон қилиш ва хотирадан ажратиладиган жой

  3. Бирлашма элементларига мурожаат

18.1. Бирлашмалар ҳақида маълумот
Структураларга якин тушунча бу бирлашма тушунчасидир. Бирлашмалар union хизматчи сузи ёрдамида киритилади. Мисол учун:
union
{
long h; int i,j;
char c[4]
} UNI;
Бирлашмаларнинг асосий хусусият шундаки унинг хамма элементлари бир хил бошлангич адресга эга бўлади. Бирлашмаларнинг асосий авфзалликларидан бири хотира бирор кисми қийматини хар хил типдаги қиймат шаклида караш мумкиндир.
Мисол учун қуйидагича бирлашма,
union
{
float f; unsigned long k;
char h[4];
} fl;
Хотирага fl.f=2.718 хақиқий сон юборсак унинг ички кўриниши кодини fl.l ёрдамида кўришимиз, ёки алохида байтлардаги қийматларни fl.h[0]; fl.h[1] ва хоказо ёрдамида куришимиз мумкин.
18.2. Бирлашма эълон қилиш ва хотирадан ажратиладиган жой
Бирлашмани эълон қилиш учун union хизматчи сўзидан фойдаланилади.
union бирлашма_номи
{
тоифа_1 ўзгарувчи_1;
тоифа_2 ўзгарувчи_2;
......
тоифа_n ўзгарувчи_n;
};
Бирлашма орқали янги маълумотлар тоифаси ҳосил қилинади. Дастурда структуралардан фойдаланиш шу тоифадаги ўзгарувчи эълон қилиш орқали амалга оширилади.
Юқоридаги мисол учун бирлашма эълон қилиш қуйидагича амалга оширилади.
union Semestr
{
int n; //тартиб рақами
char[50] fio; //Фамилияси ва исми
int sem_nat; //семестр натижаси
};
Бирлашма элементлари (майдонлари) дастурда оддий ўзгарувчилар каби эълон қилинади ва ишлатилади. Мисол учун, юқорида эълон қилинган структурамиздан ўзгарувчи эълон қиламиз.
Semestr t;
Бирлашма учун ажратилган жой ҳажмини қуйидаги амаллар ёрдамида аниқлаш мумкин:
sizeof (бирлашма_тип_номи);
sizeof (бирлашма_номи);
sizeof бирлашма_номи.
Охирги холда бирлашма номи ифода деб қаралади. Ифоданинг типи аниқланиб, ҳажми хисобланади. Мисол учун:
Sizeof (union goods);
Sizeof (tea);
Sizeof coat;
Мураккаб типлар яъни массивлар ва бирлашмали типлар учун хотирага талаб уларнинг таърифига боғлиқдир. Масалан, double array[10] таъриф хотирадан 10*sizeof байт жой ажратилишига олиб келади.
union mixture
{
int ii;
long ll;
char cc[8];
};
Бу таъриф хар бир Struct mixture типидаги объект хотирада sizeof(int)+sizeof(long)+8*sizeof(char) байт жой эгаллашини кўрсатади. Объект аниқ хажмини қуйидаги амал хисоблайди:
Sizeof(union mixture);
18.3. Бирлашма элементларига мурожаат
Конкрет бирлашма таърифланганда массивлар каби инициализация қилиниши мумкин. Масалан
complex sigma ={1.3;12.6};
goods coats={"пиджак",40000,7.5,220, "12.01.97"};
Бир хил типдаги бирлашмаларга қиймат бериш амалини қўллаш мумкин:
Complex alfa;
alfa=sigma;
Лекин бирлашмалар учун солиштириш амаллари аниқланмаган. Бирлашмалар элементларига қуйидагича мурожаат килиш мумкин:
Структура_номи.элемент_номи.
'Нуқта амали' бирлашма элементига мурожаат қилиш амали дейилади. Бу амал қавс амаллари билан бирга энг юқори устиворликка эгадир. Мисол:
Complex alfa={1.2,-4.5},betta={5.6,-7.8},sigma;
Sigma.real=alfa.real+betta.real;
Sigma.imag=alfa.imag+betta.imag;
Конкрет бирлашмалар элементлари дастурда алоҳида киритилиши ва чиқарилиши зарурдир. Қуйидаги мисолда хизматчи бирлашмаси киритилади:
#include
using namespace std;
struct employee
{
char name [64];
long employee_id;
float salary;
char phone[10];
int office_number;
} worker;
void show_emploee(employee worker)
{
cout << "Ismi: " << worker.name << endl;
cout << "Telefon: " << worker.phone << endl;
cout << "Nomer: " << worker.employee_id << endl;
cout << "Oylik: " << worker.salary << endl;
cout << "Ofis: " << worker.office_number << endl;
};
int main()
{
worker.employee_id = 12345;
worker.salary = 25000.00;
worker.office_number = 102;
cout<<"\n ismi:"; cin>> worker.name;
cout<<"\n telefon:"; cin>>worker.phone;
cout<
show_emploee(worker);
return 0;
}
Назарий саволлар:

  1. Бирлашмалар умумий кўриниши.

  1. Бирлашмалар қандай инициализация қилинади?

  2. Бирлашма элементларига қандай мурожаат қилинади?


МУНДАРИЖА


~ ~



Download 478.36 Kb.

Do'stlaringiz bilan baham:
1   ...   24   25   26   27   28   29   30   31   32




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