I-bosqich ki-12-22 guruh talabasi shavkatov sirojbek ning “dasturlash2
Download 340.29 Kb.
|
O-3XWxhqJ4kseNw9IGwHXz8oEzECnwoh
- Bu sahifa navigatsiya:
- 2.Raqamli sinflar va ular bilan ishlash (complex, vallaray, slice,gslice va b.sh) 3.Murakkab saralash algoritmlari. 4.Juda katta raqamlar bilan ishlash.
O’ZBEKISTON RESPUBLIKASI RAQAMLI TEXNOLOGIYALARI VAZIRLIGI MUHAMMAD AL-XORAZMIY NOMIDAGI TOSHKENT AXBOROT TEXNOLOGIYALARI UNIVERSITETI QARSHI FILIALI KOMPYUTER INJINIRINGI FAKULTETI DASTURIY INJINIRING YO’NALISHI I-BOSQICH KI-12-22 GURUH TALABASI SHAVKATOV SIROJBEK NING “DASTURLASH2” FANIDAN TAYYORLAGAN 3-MUSTAQIL ISHI Bajardi: SHAVKATOV SIROJBEK Qabul qildi: QARSHI-2023 REJA: 1.Xotirani taqsimlash va unga qo`yiladigan talablar. Standart taqsimlash 2.Raqamli sinflar va ular bilan ishlash (complex, vallaray, slice,gslice va b.sh) 3.Murakkab saralash algoritmlari. 4.Juda katta raqamlar bilan ishlash. 5.Large sinfi qo`llash. 1.Xotirani taqsimlash va unga qo`yiladigan talablar. Xotirani boshqarish - Memory management "Xotira ajratish" bu erga yo'naltiriladi. Miyada xotirani ajratish uchun qarang Xotirani neyronal taqsimlash. Ushbu maqola an manzil maydoni. Jismoniy xotirani boshqarish uchun qarang Xotirani boshqarish (operatsion tizimlar).
Xotirani boshqarish shaklidir resurslarni boshqarish uchun qo'llaniladi kompyuter xotirasi. Xotirani boshqarishning muhim talabi shundan iboratki, dasturlarga ularning talabiga binoan xotira qismlarini dinamik ravishda taqsimlash va kerak bo'lmaganda uni qayta ishlatish uchun bo'shatish. Bu bitta kompyuterdan ko'proq bo'lgan har qanday rivojlangan kompyuter tizimi uchun juda muhimdir jarayon har qanday vaqtda bo'lishi mumkin.[1] Xotirani boshqarish samaradorligini oshiradigan bir necha usullar ishlab chiqilgan. Virtual xotira tizimlar ajratib turadi xotira manzillari protsessni ajratish va hajmini oshirishga imkon beradigan haqiqiy jismoniy manzillardan jarayon tomonidan foydalaniladi virtual manzil maydoni mavjud miqdordan tashqari Ram foydalanish xotira yoki almashtirish ikkilamchi saqlash. Virtual xotira menejerining sifati umumiy tizimga katta ta'sir ko'rsatishi mumkin ishlash. Mundarija 1 Tafsilotlar 1.1 Xotirani dinamik ravishda taqsimlash 1.1.1 Samaradorlik 1.1.2 Amaliyotlar 1.1.2.1 Ruxsat etilgan o'lchamdagi bloklarni taqsimlash 1.1.2.2 Buddy bloklari 1.1.2.3 Plitalarni ajratish 1.1.2.4 Stekni taqsimlash 1.2 Avtomatik o'zgaruvchilar 1.2.1 Axlat yig'ish 2 Virtual xotiraga ega tizimlar 3 OS / 360 da xotirani boshqarish va vorislar 4 Shuningdek qarang 5 Izohlar 6 Adabiyotlar 7 Qo'shimcha o'qish 8 Tashqi havolalar Tafsilotlar Ba'zi operatsion tizimlarda, masalan, DOS / 360 va vorislari, OS / 360 va vorislari,[2]:74 manzil maydonida saqlashni ajratish operatsion tizim tomonidan amalga oshiriladi; masalan, Unixga o'xshash operatsion tizimlar, ichida ajratish manzil maydoni dastur darajasida. Manzil maydonidagi xotirani boshqarish odatda avtomatik ravishda boshqarishni o'z ichiga olgan avtomatik xotira boshqaruvi deb tasniflanadi axlat yig'ish, yoki xotirani qo'lda boshqarish. Xotirani dinamik ravishda taqsimlash Kirish Oliy matematk kursida komleks sonlar bilan tanishgansizlar. Ta’rif. Tartiblangan ikkita haqiqiy sonlar juftligi bolib, asosan standart ko’rinisda a+bi (Dekart koorditalar tisimida) yoki (a,b) beriladi. Bu erda: a – uning butun qismi, bo’lib, haqiqiy sonlar to’plamiga tegishli; b – uning mavhum qismi bo’lib, haqiqiy sonlar to’plamiga tegishli; i – qiymati ga teng bo’lgan irratsional son; Komplex sonnig qutb koordinatalar tizimidagi ko’rinishi: z= p(cosα+isinα) Bu erda: p – complex sonning absolyut qiymati deyiladi, va ; α – vektorning Ox o’qi bilan hosil qilgan burchagi i – qiymati ga teng bo’lgan irratsional son; Komplex sonlar ustida to’rtta arifmetik amallar quyidagi algoritm (formulalar) yordamida amalga oshiriladi: z1=a+bi va z2=c+di 2 ta complex son uchun - 1) z1+z2=(a+c)+(b+d)i= ((a+c),(b+d)) - qo’shish 2) z1-z2=(a-c)+(b-)i= ((a-c),(b-d)) - ayirish 3) z1·z2=(ac-bd) +(ad+bc)i=((ac-bd),(ad+bc)) - ko’paytirish 4) – bo’lish C ++ standart kutubxonasining kompleks son sinfi ob'ekt modelidan foydalanishning yaxshi namunasidir. Ortiqcha arifmetik operatsiyalar tufayli ushbu klass ob'ektlari o'rnatilgan ma'lumotlar turlaridan biriga tegishlicha ishlatiladi. Bundan tashqari, o'rnatilgan arifmetik turdagi o'zgaruvchilar va murakkab raqamlar bir vaqtning o'zida bunday operatsiyalarda ishtirok etishlari mumkin. 1. Raqamli sinflar va ular bilan ishlash. C ++ standart kutubxonasining kompleks son sinfi ob'ekt modelidan foydalanishning yaxshi namunasidir. Ortiqcha arifmetik operatsiyalar tufayli ushbu sinf ob'ektlari o'rnatilgan ma'lumotlar turlaridan biriga tegishlicha ishlatiladi. Bundan tashqari, o'rnatilgan arifmetik turdagi o'zgaruvchilar va kompleks sonlar bir vaqtning o'zida bunday operatsiyalarda ishtirok etishlari mumkin. (E'tibor bering, bu erda biz murakkab sonlar matematikasining umumiy masalalariga murojaat qilmaymiz. Qarang [PERSON68] yoki matematikaga oid biron bir kitob.) Masalan:
comp1ex< double > a; comp1ex< double > b; // ... complex< double > с = a * b + a / b; Kompleks va arifmetik turlarni bitta ifoda bilan aralashtirishga ruxsat beriladi: complex< double > complex_obj = a + 3.14159; Xuddi shunday, kompleks sonlar arifmetik tur bilan initsializatsiya qilinadi va ularga quyidagicha qiymat berilishi mumkin: double dval = 3.14159; complex_obj = dval; yoki int ival = 3; complex_obj = ival; Masalan, quyidagi ifoda kompilyatsiya xatosiga olib keladi: // xato: arifmetik turga aniq konversiya qilinmaydi double dval = complex_obj; Kompleks sonning qaysi qismini - haqiqiy yoki mavhum - biz muntazam raqamga belgilashni xohlayotganimizni aniq ko'rsatishimiz kerak. Kompleks sonlar sinfi mos ravishda haqiqiy va mavhum qismlarni qaytaradigan ikkita funksiyaga ega. Biz ularga sinf a'zolariga kirish uchun sintaksis yordamida kirishimiz mumkin: double re = complex_obj.real(); double im = complex_obj.imag(); yoki shunga o'xshash funktsiyani chaqirish sintaksisi: double re = real(complex_obj); double im = imag(complex_obj); Kompleks son sinfi to'rtta kompozitsion tayinlash operatorlarini qo'llab-quvvatlaydi: + =, - =, * = va / =. Shunday qilib, complex_obj += second_complex_obj; Kompleks sonlarni Qo'llab-quvvatlaydigan kirish / chiqish . Chiqish operatori vergul bilan ajratilgan haqiqiy va mavhum qismlarni qavs ichiga bosib chiqaradi. Masalan, chiqish bayonotlarini bajarish natijasi complex< double > complex0( 3.14159, -2.171 ); comp1ex< double > complex1( complexO.real() ); cout << complexO << " " << complex1 << endl; quyidagicha: ( 3.14159, -2.171 ) ( 3.14159, 0.0 ) Kirish operatori quyidagi formatlarning istalganini tushunadi. // kompleks sonlarni kiritish uchun ruxsat etilgan tiplari // 3.14159 ==> comp1ex( 3.14159 ); // ( 3.14159 ) ==> comp1ex( 3.14159 ); // ( 3.14, -1.0 ) ==> comp1ex( 3.14, -1.0 ); // sifatida o'qish mumkin // cin >> a >> b >> с // bu yerda a, b, с – kompleks sonlar 3.14159 ( 3.14159 ) ( 3.14, -1.0 ) Ushbu operatsiyalarga qo'shimcha ravishda, kompleks sonlar sinfida quyidagi a'zo funksiyalariga ega: sqrt(), abs(), polar(), sin(), cos(), tan(), exp(), log(), log10() va pow(). Mashq 4.9 Biz uchun mavjud bo'lgan C ++ standart kutubxonasining joriy etilishi, agar to'g'ri operand kompleks son bo'lmasa, murakkab tarkibiy operatsiyalarini qo'llab-quvvatlamaydi. Masalan, shunga o'xshash yozuv haqiqiy emas: complex_obj += 1; (C ++ standartiga binoan, bunday ifoda to'g'ri bo'lishi kerak, ishlab chiqaruvchilar ko'pincha standartga rioya qilmaydilar.) Bunday operatsiyani bajarish uchun biz o'z operatorimizni aniqlay olamiz. Bu yerda complex #include inline complex operator+=( complex { return cval += complex } Ushbu misoldan foydalanib, complex #include #include // определения операций... int main() { complex< double > cval ( 4.0, 1.0 ); cout << cval << endl; cval += 1; cout << cval << endl; cval -= 1; cout << cval << endl; cval *= 2; cout << cval << endl; cout /= 2; cout << cval << endl; } 5. Shift (): —Ushbu funksiya elementlarni argument sifatida ko'rsatilgan raqamga o'tkazgandan so'ng, yangi valarray ni qaytaradi. Agar raqam musbat bo'lsa, chap siljish qo'llaniladi, agar salbiy bo'lsa, o'ng tomonga siljish qo'llaniladi. 6. CSHIFT (): — Ushbu funktsiya argument sifatida ko'rsatilgan raqam bo'yicha elementlarni aylantirgan (aylantirgan) dan keyin yangi valarrayni qaytaradi. Agar raqam musbat bo'lsa, chap siljish va aylana qo'llaniladi, agar son salbiy bo'lsa, chap siljish qo'llaniladi. // Ishni namoyish qilish uchun C ++ kodi // shift () и cshift () #include #include using namespace std; int main() { // valarray ni ishga tushurish valarray // yangi valarrayni e’lon qilish valarray // elementlarni chapga siljitish uchun shift () foydalaniladi // valarray ni 2ta o’ringa surish varr1 = varr.shift(2); //elementlar surilgan keyin valarray ko’rinishi cout << "The new valarray after shifting is : "; for ( int&x : varr1) cout << x << " "; cout << endl; // elementlarni o'ngga aylantirish uchun cshift () dan foydalaning // 3 ta o'ringa siljitish varr1 = varr.cshift(-3); // Dumaloq aylanishdan keyin valarray elementlarini ko’rish cout << "The new valarray after circular shifting is : "; for ( int&x : varr1) cout << x << " "; cout << endl; return 0; }
The new valarray after shifting is : 20 1 30 0 0 The new valarray after circular shifting is : 20 1 30 10 2 2.Complex, valarray, slice, gslice sonli sinflar Kompleks sonlar sinf complex standart kutubxonaning yana bir sinfidir. Odatdagidek, siz foydalanish uchun sarlavha faylini kiritishingiz kerak: #include complex Kompleks son ikki qismdan iborat - haqiqiy va mavhum. Mavhum qism manfiy sonning kvadrat ildizidir. Kompleks son odatda quyidagicha yoziladi 2 + 3i Bu yerda 2 – haqiqiy qism, 3i esa mavhum. Complex tipida obyektlarni aniqlash quyida keltirilgan: // sof mavhum raqam: 0 + 7-i complex double purei( 0, 7 ); // mavhum qism nolga teng: 3 + Oi complex float rea1_num( 3 ); // haqiqiy va mavhum qism nolga teng: 0 + 0-i complex long double zero; // bir kompleks sonni boshqasi bilan ishga tushurish complex double purei2( purei ); Kompleks, vektor singari, shablon bo'lgani uchun, uni yuqoridagi misollardagi kabi, float, double va long double turlari bilan belgilashimiz mumkin. Shuningdek, siz turdagi kompleks elementlarining qatorini aniqlashingiz mumkin: complex double conjugate[ 2 ] = { complex double ( 2, 3 ), complex double ( 2, -3 ) }; Mana bundan aniqlanadi kompleks sonlarga ko’rsatgich va havolalar: complex double *ptr = conjugate[0]; complex double ref = *ptr; Kompleks sonlar qo'shilishi, ayirilishi, ko'paytirilishi, bo'linishi, taqqoslanishi, haqiqiy va mavhum qismlarning qiymatlarini olish mumkin. Massiv qiymatlari sizga vektorlar va matritsalar bilan ishlashni osonlashtirishi mumkin, chunki u juda muhim xususiyatga ega - yozishning soddaligi xususiyati. Massiv qiymatlaridan biror bir to’plamni ajratib olish mumkin bo’lib, quyidagi qism dasturni qaraymiz. 1 slice(0, 10, 2) slice () - bu to’plam osti qism hisoblanib, biror usulda qayta ishlanadigan massivning oraliq qiymatlarini aniqlaydigan funktsiya. Slice () funktsiyasi uchta parametrga ega birinchi —tanlash orqali amalga oshirilgan massiv elementining indeksi, masalan indek nolga teng bo’lsa, demak tanlov massivning birinchi elementidan boshlanganini bildiradi. Ikkinchi – massivdagi elementlar soni Uchinchi — tanlov qadami, masalan qadam 2 ga teng bo’lsa, har ikkinchi element to’plamga qo’shilishini anglatadi. Bundan tashqari, ushbu funktsiyani kvadrat qavs ichida chaqirish kerakligini bilishingiz kerak, masalan: Download 340.29 Kb. Do'stlaringiz bilan baham: |
ma'muriyatiga murojaat qiling