T e X t o u t ( X, y, s ) (Х, у) координатали нуқтадан s сатрини чиқаради
Download 279.5 Kb.
|
4-tayyor
§2.2. Birlashmalar
Birlashmalar xotiraning bitta sohasida (bitta adres bо‘yicha) har xil turdagi bir nechta berilganlarni saqlash imkonini beradi. Birlashma e’loni union kalit sо‘zi, undan keyin identifikator va blok ichida xar xil turdagi elementlar e’lonidan iborat bо‘ladi, masalan: union Birlashma { int n; unsigned long N; char Satr[10]; }; Birlashmaning bu e’lonida kompilyator tomonidan Birlashma uchun uning ichidagi eng kо‘p joy egallovchi elementning - Satr satrining о‘lchamida, ya’ni 10 bayt joy ajratiladi. Vaqtning har bir momentida birlashmada, e’lon qilingan maydonlarning faqat bittasining turidagi berilgan mavjud deb hisoblanadi. Yuqoridagi misolda, Birlashma ustida amal bajarilishida uning uchun ajratilgan xotirada yoki int turidagi n yoki unsigned long turidagi N yoki Satr qiymati joylashgan deb hisoblanadi. Birlashma maydonlariga xuddi struktura maydonlariga murojaat qilgandek ‘.’ orqali murojaat qilinadi. Strukturalardan farqli ravishda birlashma e’lonida faqat uning birinchi elementiga boshlangich qiymat berish mumkin: union Birlashma { int n; unsigned long N; char Satr[10]; } birlashma=[25]; Bu misolda birlashmasining n maydoni boshlangich qiymat olgan hisoblanadi. Birlashma elementi sifatida strukturalar kelishi mumkin va ular odatda yaxlit berilganni «bо‘laklarga» bо‘lish yoki «bо‘laklardan» yaxlit berilganni hosil qilish uchun xizmat kiladi. Misol uchun sо‘zni baytlarga, baytlarni tetradalarga (4 bitga) ajratish (birlashtirish) mumkin. Quyida baytni katta va kichik yarim baytlarga ajratishda birlashma va strukturadan foydalanilgan programmani matni keltirilgan. #include union BCD {unsigned char bayt; Struct {unsigned char lo:4; unsigned char hi:4; }bin }bcd; int main() { bcd.bayt=127; cout<<”\n Katta yarim bayt : ”<<(int)bcd.bin.hi; cout<<”\n Kichik yarim bayt : ”<<(int)bcd.bin.lo; return 0; } Programma bosh funksiyasida bcd birlashmasining bayt о‘lchamida bayt maydoniga 127 qiymati beriladi va uning katta va kichik yarim baytlari chop etiladi. Programma ishlashi natijasida ekranga quyidagi natijalar chiqadi: Katta yarim bayt: 7 Kichik yarim bayt: 15 Masala. Haqiqiy turdagi sonning kompyuter xotirasidagi ichki kо‘rinishini chop qilish. Haqiqiy son float turida deb hisoblanadi va u xotirada 4 bayt joy egallaydi (1 – ilovaga qarang). Qо‘yilgan masalani yechish uchun birlashma xususiyatdan foydalaniladi, ya’ni xotiraning bitta adresiga haqiqiy son va belgilar massivi joylashtiriladi. haqiqiy son xotiraga о‘qilib, belgilar massivining har bir elementi-baytlarning ikkilik kо‘rinishlari chop etiladi. Programma matni: #include const unsigned char bitlar_soni=7; const unsigned char format=sizeof(float); void Belgi_2kodi(unsigned char blg); union Son_va_Belgi { float son; unsigned char belgi[format]; }; int main() { Son_va_Belgi son_va_belgi cin>> son_va_belgi.son; for(int b=format-1;b>=0;b--); Belgi_2kodi(son_va_belgi.belgi[b]); return 0; } void Belgi_2kodi(unsigned char blg); { unsigned char 10000000=128; for(int i=0; i if(blg&10000000)cout<<’1’; else cout<<’0’; blg=blg<<1; } cout<<’ ’; } Programmada Son_va_Belgi birlashmasini e’lon qilish orkali float turidagi x о‘zgaruvchisi va 4 ta (float turi formatining baytlardagi uzunligi) belgidan iborat belgi massivini xotiraning bitta joyiga joylashuviga erishiladi. Bosh funksiyada birlashma turidagi, son_va_belgi uzgaruvchisi e’lon qilinadi va uning x maydoniga klaviaturadan haqiqiy son о‘qiladi. Keyin belgilar massividagi har bir elementning ikkilik kodi chop etiladi. Ikkilik kodni chop etish 8 marta baytni 7 razryadidagi sonni chop etish va bayt razryadlarini bittaga chapga surish orqali amalga oshiriladi. Shunga e’tibor berish kerakki, belgilar massividagi elementlarning ikkilik kodlarini chop qilish о‘ngdan chap tomonga bajarilgan. Bunga sabab, son ichki formatidagi baytlarning xotirada «kichik bayt - kichik adresda» qoidasiga kо‘ra joylashuvidir. Programmaga -8.5 soni kiritilsa, ekranda 11000001 00001000 00000000 00000000 kо‘rinishidagi ikkilik sonlari ketma-ketligi paydo bо‘ladi. C ++ tilida foydalanuvchi tomonidan nafaqat struktura yoki birlashma turlari, balki ayni paytda mavjud (aniqlangan) turlar asosida yangi turlarni yaratishi mumkin. Foydalanuvchi tomonidan aniqlanadigan tur typedef kalit sо‘zi bilan boshlanadi, undan keyin mavjud tur kо‘rsatiladi va identifikator yoziladi. Oxirida yozilgan identifikator - yangi yaratilgan turning nomi hisoblanadi. Masalan, typedef unsigned char byte; ifodasi byte deb nomlanuvchi yangi turni yaratadi va о‘z mazmuniga kо‘ra unsigned char turi bilan ekvivalent bо‘ladi. Keyinchalik, programmada xotiradan bir bayt joy egallaydigan va [0..255] oraliqdagi qiymatlarni qabul qiladigan byte turidagi о‘zgaruvchi (о‘zgarmaslarni) e’lon qilish mumkin: byte c=65 byte Byte=0xFF; Massiv kо‘rinishidagi foydalanuvchi tomonidan aniqlanuvchi tur e’loni quyidagicha bо‘ladi: typedef char Ism[30]; Ism ism; Ism turidagi ism о‘zgaruvchisi e’loni - bu 30 belgidan iborat massiv (satr) e’lonidir. Odatda yechilayotgan masalaning predmet sohasi terminlarida ishlash uchun strukturalar qayta nomlanadi. Natijada murakkab tuzilishga ega bо‘lgan va zarur xususiyatlarni о‘ziga jamlagan yangi turlarni yaratishga muvofiq, bо‘linadi. Masalan, kompleks son haqidaga ma’lumotlarni о‘z ichiga oluvchi Compex turi quyidagicha aniqlanadi: typedef struct { double re; double im; } Complex; Endi kompleks son e’lonini Complex KSon; yozish mumkin va uning maydonlariga murojaat qilish mumkin: KSon.re=5.64; Kson.im=2.3; XULOSA Ushbu “ C++ tilida aralash tipli ma’lumotlar bilan ishlash” mavzusidagi kurs ishni bajarish davomida quyidagi natijalarga erishildi: 1. Kurs ishning asosiy maqsadi va vazifasidan kelib, chiqqan holda C++ algoritmik tilining turli tiplarga tegishli ma’lumotlarni qayta ishlash imkoniyatlari va ularning ma’lumotlar jamlanmasi ustida turli operatsiyalar bajarish amalga oshirildi. 2. C++ algoritmik tilida turli tipga tegishli ma’lumotlarning dinamik strukturalari bilan ishlash uchun dasturlar ishlab chiqildi. 3. C++ algoritmik tilida dinamik strukturalar yordamida ma’lumot-larning har xil strukturalari: chiziqli rо‘yxat, stek va navbatlarni qayta ishlash uchun dasturlar yaratildi. 4. Aralash tiplardan iborat bо‘lgan ma’lumotlar jamlanmasini tashkil etish uchun dasturi ishlab chiqildi. 5. Yuqorida olingan natijalarni ta’lim sohasida aralash tipga oid ma’lumotlarni qayta ishlash uchun dasturlar yaratish va informatika fanlarida ma’lumotlar jamlanmasi va ular bilan bog‘liq mavzularni о‘qitish va о‘qitishni takomillashtirishda foydalanish mumkin. 6. Ishlab chiqilgan dasturlarni turli sohalarda: matematika, iqtisodiyot va boshqa fanlarning har xil tipga tegishli ma’lumotlarini qayta ishlaashda qо‘llash mumkin. FOYDALANILGAN ADABIYOTLAR RО‘YXATI 1. Podbelskiy V.V. Yazik C++.- M.; Finansi i statistika- 2003 562s. 2. Alekseyev A.P. Informatika. 2001. M., SOLON-R, 2001, 364 s 3. Informatika. Bazovoy kurs. Uchebnik dlya Vuzov., Sank-Peterburg, 2001. pod redaksiyey S.V.Simonovicha. 4. Madraximov SH.F., Gaynazarov S.M. C++ tilida programmalash asoslari. Uslubiy qо‘llanma, О‘zMU, 2009-196 b. 5. Informatika va programmalsh.O’quv qo’llanma. Mualliflar: A.A.Xaldjigitov, Sh.F.Madraximov, U.E.Adamboev, O’zMU, 2005 yil, 145 bet. web saytlar 6. http://www.edu.uz 7. http://dastur.uz 8. http://www.intuit.ru 9. http://www.exponenta.ru Download 279.5 Kb. Do'stlaringiz bilan baham: |
ma'muriyatiga murojaat qiling