MUSTAQIL ISHNI BAJARISH UCHUN NAMUNA Har bir mavzu bo’yicha mustaqil ish hisobotlari quyidagi tarkibga ega bo’lishi tavsiya etiladi. № Mazmuni Taxminiy hajmi 1 Mustaqil ish uchun tavsiya etilgan mavzu bo’yicha nazariy 4-5 bet ma’lumotlar 2 Mavzuga doir amaliy topshiriqlarining yechimlari bo’yicha 7-10 ma’lumotlar: betgacha Masalaning qo’yilishi; Masalaning matematik modeli; Yechish algoritmi; Algoritm tahlili; Dasturlash tilidagi kod matni va dastur natijalari; Natijalar tahlili (dastur otladkasi). 3 Mustaqil ish mavzusi bo‘yicha xulosalar. O’z-o’zini tekshirish 1-1.5 bet va baholash bo’yicha nazorat savollariga javoblar tayyorlash. JAMI: 12-15 bet Mavzular bo‘yicha qo‘llaniluvchi didaktik va texnik vositalar filial kutubxonasi va kafedra qoshidagi kompyuter sinflarida mavjud bo‘lib, unda kafedra professor-o‘qituvchilari tomonidan “Algoritmlarni loyihalash” fanidan tayyorlangan o‘quv qo‘llanmalar, uslubiy ko‘rsatmalar, elektron darsliklardan foydalanish tavsiya etiladi. Mustaqil ta’lim ishi hisoboti titul varag‘i quyidagi ko‘rinishda bo‘lishi kerak: O‘ZBEKISTON RESPUBLIKASI RAQAMLI TEXNOLOGIYALAR VAZIRLIGI MUHAMMAD AL-XORAZMIY NOMIDAGI TOSHKENT AXBOROT TEXNOLOGIYALARI UNIVERSITETI SAMARQAND FILIALI "Dasturiy injiniring" kafedrasi № мustaqil ta’lim ish hisoboti Fan “ Algoritmlarni loyihalash” Guruh Talaba Rahbar Samarqand-202_ y. MUSTAQIL ISHNI BAJARISH NA’MUNASI 1-Mustaqil ish. 1-mavzu: “Algoritmlarni loyihalash va tahlil qilish. Chiziqli va tarmoqlanuvchi algoritmlar” bo‘yicha mustaqil ish topshiriqlari. 1- TOPSHIRIQ: Quyidagi nazariy savollarga nazariy javob bering 1. Algoritmlarni baholash kriteriyalari haqida ma’lumot bering 2. Algoritmni asimtotik baholash haqida aytib bering 3. O(n) va O(n2) murakkablikdagi baholashlarni taqqoslang 4. Algoritm murakkabligini static va dinamik o’lchovlari haqida ma’lumot bering. 5. Vaqt va hajm bo’yicha qiyinchiliklar haqida ma’lumot bering 6. Algoritmlarni eng yomon va o’rtacha holatlarda baholash haqida ma’lumot bering 7. Taqribiy integrallash usuli va aniqligi bo’yicha hisoblash 2- TOPSHIRIQ: Quyidagi masalalar uchun algoritm va dastur tuzing Amaliy masalalar 1- masala. Ikkita butun musbat a va b sonlar berilgan. Ularning eng katta umumiy bo’luvchisini topish talab qilinadi. Ya’ni, eng katta butun musbat son topish kerakki, unga a va b ni bo’lganda butun son chiqsin. 2- masala. Butun sonlardan iborat n ta son berilgan. Shu sonlarni elementlar miqdori kamayish tartibida chiqarish algoritmi va dasturini tuzing. t/r Element soni va miqdori Tartiblangan massiv 1 5 23 45 34 56 25 56 45 36 25 23 2 10 5 3 -2 -5 0 1 0 5 8 7 8 7 5 5 3 1 0 0 -2 -5 NAZARIY SAVOLLARGA JAVOBLAR 1- nazariy savol: Algoritmlarni baholash kriteriyalari haqida ma’lumot bering. Javobi: Algoritmlar sifatini baholash uchun mezonlarni ko’raylik. Mavjud mezonlar juda taxminlashgan. Masalan, algoritmni bajarishda bajaruvchining xotira uskunalari hajmi yetarli bo’lmasa, u algoritm yomon deb hisoblanadi. Boshqa mezon sifatida algoritmning bajarilishi uchun talab qilinadigan vaqtni ko’rsatish mumkin. Vaqtni baholash bajaruvchining fizik xarakteristikalari hisobga olinishi kerak. Chunki har bir operatsiya har xil o’zgaruvchilar bilan bajarilganda vaqt ham har xil bo’ladi. Bunchalik aniq ma’lumotni har bir foydalanuvchi uchun yig’ib bo’lmaganligi sababli odatda o’rtacha tezkorlik qabul qilinadi. Ketma-ket bajarilayotgan operatsiyalar sonini aniqlab, uni o’rtacha tezkorlikka ko’paytirsa, algoritm bajarilishining amalga yaqin bo’lgan vaqtini topishimiz mumkin. Demak, algoritmlarni baholash uchun ikkita asosiy kretiriya mavjud ekan: 2 - Algoritmni ishlash vaqti bo’yicha baholash; - Algoritmni bajarish uchun xotiradan egallagan hajmi bo’yicha baholash. 2- nazariy savol: Algoritmni asimtotik baholash haqida aytib bering. Javobi: Algoritmlarni asimptotik (O()) baholash – algoritmda kiruvchi ma’lumotlarning bajariladigan amallar soniga ma’lum bir qonuniyatlar asosida mos qo’yilishidir. Bu qonuniyatlar kvadratik, factorial, logarifmik bo’lishi mumkin. Agar kiruvchi ma'lumotlarning o'lchamlari oshsa, algoritmning bajarilish vaqti f(N) funksiyasi bilan bir xil tezlikda oshsa, algoritmda O(f(n)) murakkablik bor. Agar kiruvchi ma'lumotlarning o'lchamlari oshsa, algoritmning bajarilish vaqti f(N) funksiyasi kvadratik tezlikda oshsa, algoritmda O(f(n^2)) murakkablik bor. Uch asimptotik belgilar asosan algoritmlarning vaqt murakkabligini ifodalash uchun ishlatiladi : 1) Θ-notation (teta); 2) O-notation (O); 3) Ω-notation (Omega). Hisoblash mashinalar tezligi oshishiga qaramasdan, ular yordamida yechilayotgan masalalar kattaligini oshishini algoritm qiyinligini tahlil orqali aniqlaydi. 3- nazariy savol: Javobi: va hakozo shu tarzda barcha nazariy savollarga javob berilgandan keyin amaliy masalalarni yeshimlarini quyidagicha bayon qilamiz. Amaliy masalalar 1-masala. Ikkita butun musbat a va b sonlar berilgan. Ularning eng katta umumiy bo’luvchisini topish talab qilinadi. Ya’ni, eng katta butun musbat son topish kerakki, unga a va b ni bo’lganda butun son chiqsin. Yechimi: 1. Masalaning qo‘yilishi: Ikkita butun musbat a va b sonlar berilgan. Ularning eng katta umumiy bo’luvchisini topish talab qilinadi. Ya’ni, eng katta butun musbat son topish kerakki, unga a va b ni bo’lganda butun son chiqsin. 2. Matematik modeli: Berilgan masalaning yechimi uchun matematik usullar qo’llaniladi. Bular, sonlarni tub ko‘paytuvchilarga ajratish usuli yoki Evklid usuli. Dasturlashda samarali bo‘lganligi uchun ushbu masalaga Evklid usulini qo‘llaymiz. Buni quyidagi video ishlanmadan ko‘rib olish mumkin: https://youtu.be/0AxkgGfEkgA?si=8zwG61_REFSTK9wH . 3. Algoritmni ishlab chiqish. Samarali algoritmni ishlab chiqish modelni to’g’ri tanlashga bog’liqdir. Algoritm to’g’ri ishlashi mumkin, lekin u vaqt va xotira bo’yicha ham samarali bo’lishi kerak. 3 Demak, yuqorida ta’kidlaganimizdek, berilgan masala uchun Evklid algoritmidan foydalanamiz. Algoritmning asosiy g‘oyasi, berilgan sonlarning kattasini ketma-ket kichigiga bo’lishga asoslanadi. Ya’ni Evklid algoritmi quyidagicha: 1-qadam. Berilgan sonlarni toqqoslab ularning kattasini aniqlang; 2-qadam. Katta sonni kichigiga qoldiqli bo‘ling; 3- qadam. Agar qoldiq 0 ga teng bo‘lsa, berilgan sonlarning kichigini EKUB deb oling va 5-qadamga o‘ting. 4- qadam. Katta son bilan kichik sonni va kichik son bilan qoldiqni joyini almashtiring va 2-qadamga qayting. 5- qadam. Natijani chop qiling. (Algoritmni blok-sxema ko’rinishida tasvirlash ham mumkin) 4. Algoritmni to’g’riligini tekshirish. Shu algoritmni tadqiq qilib ko’raylik. m=119, n=544 butun sonlar berilgan bo‘lsin. 1-qadamda n>m; 2-qadamda n%m = r (544%119=68), ya’ni r=68; 3- qadamda r nolga teng bo‘maganligi uchun 4-qadamga o‘tamiz; 4- qadamda n=m, m=r almashtirishni bajaramiz va 2-qadamga qaytamiz: - 2-qadamda n%m = 119%68 = 51, ya’ni r = 51; - yana 4-qadamda n=m, m=r almashtirishni bajaramiz; - n%m = 68 % 51 = 17, ya’ni r=17; - yana 4-qadamda n=m, m=r almashtirishni bajaramiz; - n%m = 51 % 17 = 0, ya’ni r=0; - oxirgi bo‘lishda qoldiq 0 ga teng bo‘lgani uchun natijani chop qilamiz. Natija EKUB(119,544) = 17. 5) Dastur Kodi #include <iostream> using namespace std; int main() { int m, n; cout << "m = "; cin >> a; cout << "n = "; cin >> b; while (a != b) { if (m > n) m %= n; else n %= m; if (a == 0) a = b; if (b == 0) b = a; } 4 cout << a << endl; return 0; } Dasturni tekshirish (Yechim olish) Xuddi shu tarzda berilgan barcha amaliy masalarning yechimlari keltiriladi. Xulosalar Adabiyotlar 5