Uploaded by xudayqulovadhambek

dasturlash asoslar

advertisement
Mirzo Ulug’bek nomidagi O’zbekiston Milliy universiteti
Jizzax filliali “Amaliy matematika” fakulteti “Axborot
xavfsizligi” yo’nalishi 181-23 guruh talabasi
XUDAYQULOV ADHAM ning “Dasturlash asoslari”
fanidan bajargan 3- mustaqil ishi.
Qabul qildi:
Kayumov Oybek
Mavzu: Algoritmlar kutubxonasi.Sonli hisoblash funksiyalarining
kutubxonasi.
Reja:
1.Algaritm haqida tushuncha.
2.Algaritm kutubxonasi.
3.Sonli hisoblash funksiyalarning kutubxonasi.
Algoritm – berilgan natijaga erishish uchun qilinishi kerak boʻlgan aniq koʻrsatmalar
ketma-ketligi. Algoritm keng maʼnoda faqat kompyuterga oid atama boʻlmay, balki unda
berilgan koʻrsatmalarni bajara oluvchi har qanday narsaga oiddir.
Algoritm — maʼlum bir turga oid masalalarni yechishda ishlatiladigan amallarning
muayyan tartibda bajarilishi haqidagi aniq qoida (dastur). Kibernetika va matematikaning
asosiy tushunchalaridan biri.
Algoritm so’zi Al – Xorazmiy nomining lotincha talaffuzidan kelib chiqqan bo’lib.
Muxammad Muso Al-Xorazmiyning X asrda yaratilgan qo’llanmasida keltirilgan o’nlik
sanoq sistemasida arifmetik amallarni bajarish qoidalari soddaligi tufayli yevropada ham
o’nlik sanoq sistemasi qo’llanishiga turtki bo’ldi. Bu qoidalar tarjimasida xar bir qoida “AlXorazmiy aytadiki” deb boshlangan va bora-bora talaffuz tufayli algoritm tarzida ifodalanib
kelgan.
Hozirgi paytda algoritm sifatida biror masalani ishlash yoki biror ishni bajarish uchun
qilinishi kerak bo’lgan tartiblangan chekli sondagi aniq bir qiymatli ko’rsatmalar ketmaketligi tushiniladi. Algoritm tushunchasi keng ma’noda tahlil qilish mumkin.
Biz asosan hisoblash algoritmlari haqida so’z yuritamiz. Algoritmlarga xos bo’lgan belgi va
talablarni sanab o’tamiz. Har qanday algoritm quyidagi asosiy xususiyatlarga ega bo’lishi
kerak:
Determinantlik sifati
Berilgan boshlangich qiymatlarda bir qiymatli javob olinishi;
Ommaviylik sifati
Ma’lum turdagi masalalar uchun turli boshlangich qiymatlarda yechim olish mumkin
bo’lishi;
Diskretlilik sifati
Algoritmni EHM(Elektron Hisoblash Mashinalari) yoki inson tomonidan bajarilishi
mumkinligi shubxasiz bo’lgan ayrim-ayrim sodda bosqichlarga bo’lish mumkinligi.
Natijaviylik sifati
Har qanday boshlangich qiymatlarda ham javobning mavjudligi, bunda «bu holda yechim
yo’q» singari axborot ham algoritmning ishlash natijasi deb qabul qilinadi;
Keltirilgan sifatlardan kelib chiqqan xolda algoritmni ifodalash va bajarish qoidalari xaqida
so’z yuritish mumkin. Amaliyotda algoritmni ifodalashning uchta asosiy usullari
fodalaniladi. Bular matnli ko’rinishi, sxematik(grafik) ko’rinishi, biror algoritmik tildagi
(dasturiy) ifodasi.Algoritmning asosiy xossalari.Algoritmning 5-ta asosiy xossasi bor:
Diskretlilik (Cheklilik). Bu xossaning mazmuni algoritmlarni doimo chekli qadamlardan
iborat qilib bo‘laklash imkoniyati mavjudligida. Ya’ni uni chekli sondagi oddiy ko‘rsatmalar
ketma-ketligi shaklida ifodalash mumkin. Agar kuzatilayotgan jarayonni chekli
qadamlardan iborat qilib qo‘llay olmasak, uni algoritm deb bo‘lmaydi.
Tushunarlilik. Biz kundalik hayotimizda berilgan algoritmlar bilan ishlayotgan elektron
soatlar, mashinalar, dastgohlar, kompyuterlar, turli avtomatik va mexanik qurilmalarni
kuzatamiz.
Ijrochiga tavsiya etilayotgan ko‘rsatmalar, uning uchun tushinarli mazmunda bo‘lishi
shart, aks holda ijrochi oddiygina amalni ham bajara olmaydi. Undan tashqari, ijrochi har
qanday amalni bajara olmasligi ham mumkin.
Har bir ijrochining bajarishi mumkin bo‘lgan ko‘rsatmalar yoki buyruqlar majmuasi
mavjud, u ijrochining ko‘rsatmalar tizimi (sistemasi) deyiladi. Demak, ijrochi uchun
berilayotgan har bir ko‘rsatma ijrochining ko‘rsatmalar tizimiga mansub bo‘lishi lozim.
Ko‘rsatmalarni ijrochining ko‘rsatmalar tizimiga tegishli bo‘ladigan qilib ifodalay bilishimiz
muhim ahamiyatga ega. Masalan, quyi sinfning a’lochi o‘quvchisi "son kvadratga
oshirilsin" degan ko‘rsatmani tushinmasligi natijasida bajara olmaydi, lekin "son o‘zini
o‘ziga ko‘paytirilsin" shaklidagi ko‘rsatmani bemalol bajaradi, chunki u ko‘rsatma
mazmunidan ko‘paytirish amalini bajarish kerakligini anglaydi.
Aniqlik. Ijrochiga berilayotgan ko‘rsatmalar aniq mazmunda bo‘lishi zarur. Chunki
ko‘rsatmadagi noaniqliklar mo‘ljaldagi maqsadga erishishga olib kelmaydi. Odam uchun
tushinarli bo‘lgan "3-4 marta silkitilsin", "5-10 daqiqa qizdirilsin", "1-2 qoshiq solinsin",
"tenglamalardan biri yechilsin" kabi noaniq ko‘rsatmalar robot yoki kompyuterni qiyin
ahvolga solib qo‘yadi.
Bundan tashqari, ko‘rsatmalarning qaysi ketma-ketlikda bajarilishi ham muhim
ahamiyatga ega. Demak, ko‘rsatmalar aniq berilishi va faqat algoritmda ko‘rsatilgan
tartibda bajarilishi shart ekan.
Ommaviylik. Har bir algoritm mazmuniga ko‘ra bir turdagi masalalarning barchasi uchun
ham o‘rinli bo‘lishi kerak. YA’ni masaladagi boshlang‘ich ma’lumotlar qanday bo‘lishidan
qat’iy nazar algorim shu xildagi har qanday masalani yechishga yaroqli bo‘lishi kerak.
Masalan, ikki oddiy kasrning umumiy mahrajini topish algoritmi, kasrlarni turlicha
o‘zgartirib bersangiz ham ularning umumiy mahrajlarini aniqlab beraveradi. Yoki
uchburchakning yuzini topish algoritmi, uchburchakning qanday bo‘lishidan qat’iy nazar,
uning yuzini hisoblab beraveradi.
Natijaviylik. Har bir algoritm chekli sondagi qadamlardan so‘ng albatta natija berishi shart.
Bajariladigan amallar ko‘p bo‘lsa ham baribir natijaga olib kelishi kerak. Chekli qadamdan
so‘ng qo‘yilgan masala yechimga ega emasligini aniqlash ham natija hisoblanadi. Agar
ko‘rilayotgan jarayon cheksiz davom etib natija bermasa, uni algoritm deb atay olmaymiz.
Algoritmning tasvirlash usullari .Yuqorida ko‘rilgan misollarda odatda biz masalani yechish
algoritmini so‘zlar va matematik formulalar orqali ifodaladik. Lekin algoritm boshqa
ko‘rinishlarda ham berilishi mumkin. Biz endi algoritmlarning eng ko‘p uchraydigan turlari
bilan tanishamiz.
1.Algoritmning so‘zlar orqali ifodalanishi. Bu usulda ijrochi uchun beriladigan har bir
ko‘rsatma jumlalar, so‘zlar orqali buyruq shaklida beriladi.
2. Algoritmning formulalar bilan berilish usulidan matematika, fizika, kimyo kabi aniq
fanlardagi formulalarni o‘rganishda foydalaniladi. Bu usulni ba’zan analitik ifodalash
deyiladi.
3. Algoritmlarning grafik shaklida tasvirlanishida algoritmlar maxsus geometrik figuralar
yordamida tasvirlanadi va bu grafik ko‘rinishi blok-sxema deyiladi.
4. Algoritmning jadval ko‘rinishda berilishi. Algoritmning bu tarzda tasvirlanishdan ham
ko‘p foydalanamiz. Masalan, maktabda qo‘llanib kelinayotgan to‘rt xonali matematik
jadvallar yoki turli xil lotereyalar jadvallari. Funksiyalarning grafiklarini chizishda ham
algoritmlarning qiymatlari jadvali ko‘rinishlaridan foydalanamiz. Bu kabi jadvallardan
foydalanish algoritmlari sodda bo‘lgan tufayli ularni o‘zlashtirib olish oson.
Algoritm kutubxonasi tomonidan taqdim etilgan funktsiyalar odatda uchta toifaga kiradi:
Tekshiruvchilar - konteynerdagi ma'lumotlarni (o'zgarishsiz) ko'rish uchun foydalaniladi
(masalan, qidiruv operatsiyasi yoki hisoblash jarayoni).
Mutatorlar - konteynerdagi ma'lumotlarni o'zgartirish uchun ishlatiladi (masalan,
elementlarni saralash yoki qayta tartiblash).
Fasilitatorlar - ma'lumotlar elementlari qiymatlari (masalan, qiymatlarni ko'paytiradigan
ob'ektlar yoki elementlar juftligini qaysi tartibda saralash kerakligini aniqlaydigan
ob'ektlar) asosida natija yaratish uchun foydalaniladi.
Ushbu algoritmlar algoritmlar kutubxonasida joylashgan (algoritm sarlavhali fayl). Ushbu
qo'llanmada biz ba'zi keng tarqalgan algoritmlarni ko'rib chiqamiz.
Izoh: Ushbu algoritmlarning barchasi takrorlanuvchilardan foydalanadi.
Std :: find () algoritmi va qiymat bo'yicha elementni topish
Std :: find () funktsiyasi konteynerni berilgan qiymatning birinchi marta paydo bo'lishini
qidiradi. Std :: find () argument sifatida 3 parametrni oladi:
ketma-ketlikdagi boshlang'ich element uchun iterator;
ketma-ketlikdagi so'nggi element uchun iterator;
qidirish uchun qiymat.
Natijada, iterator kerakli elementga (agar topilgan bo'lsa) yoki konteynerning oxiriga
(agar bunday element c bo'lmasa) ishora qilgan holda qaytariladi, Izoh: Ushbu darsdagi
barcha misollarning to'g'ri ishlashi uchun kompilyatoringiz sizning IDE-ning C ++ 17
funksiyalaridan foydalanish bo'yicha tafsilotlar, bu erda o'qing.
Element topilgan misol:
Qidirish va almashtirish uchun qiymatni kiriting:5 234
13 90 99 234 40 80
Element topilmaydigan misol:
Qidirish va almashtirish uchun qiymatni kiriting: 0 234
0 topilmadi
13 90 99 5 40 80
Std :: find_if () algoritmi va shartli elementlarni qidirish
Ba'zan biz konteynerda ba'zi bir shartlarga mos keladigan qiymatga ega ekanligini
ko'rishni xohlaymiz (masalan, berilgan pastki qatorni o'z ichiga olgan qator).
Bunday holatlarda std :: find_if () funktsiyasi mukammal yordamchi bo'ladi. Bu std ::
find () funktsiyasiga o'xshash ishlaydi, lekin qidirish uchun qiymatni berish o'rniga biz
qo'ng'iroq qilinadigan ob'ektga o'tamiz, masalan funktsiya ko'rsatgichi (yoki lambda - bu
haqda keyinroq), agar u tekshirilsa gugurt topildi. Std :: find_if () funktsiyasi har bir
element uchun ushbu ob'ektni qidiradigan elementni topguncha chaqiradi (yoki idishda
tekshirish uchun element qolmagan).
Ro‘yxatdan zarur axborotni qidirish - nazariy dasturlashning fundamental masalalaridan
biri hisoblanadi. Qidiruv algoritmini tahlil qilishda, qidirilayotgan axborot kompyuterda
ma‘lumotlar massivi ko‘rinishida joylashgan deb faraz qilamiz. Yozuvlar yoki ro‘yxat
elementlari massivda ketma-ket joylashadi va ular o‘rtasida bo‘shliq yo‘q. Ro‘yxatdagi
yozuvlar 1 dan N gacha tartiblangan bo‘ladi. Aslida yozuvlar maydonlardan tashkil
topgan bo‘ladi, bizni kalit deb ataluvchi maydonlardan bittasining qiymati qiziqtiradi.
Ro‘yxatlar kalit maydonlari qiymati bo‘yicha tartiblangan yoki tartiblanmagan bo‘lishi
mumkin. Aniq qiymatni qidirish masalasi biror elementni tanlash masalasi bilan bog‘liq.
Aytaylik, bizga kattaligi bo‘yicha beshinchi element, oxiridan yettinchi yoki o‘rta qiymatli
element kerak.
Qidiruv - bu kompyuter xotirasida ma‘lumotlarni qayta ishlash jarayonida qo‘llaniladigan
asosiy amallardan biri hisoblanadi. Bu amalning mazmuni shundan iboratki, berilgan
argument bo‘yicha massiv elementlari orasidan shu argumentga mos ma‘lumotni
(elementni) aniqlashdan iborat.
Ixtiyoriy ma‘lumot (yoki tuzilma) elementi qandaydir belgisi bilan boshqasidan farq
qiladi. Ushbu belgi kalit deyiladi. Kalit takrorlanmas bo‘lishi mumkin, ya‘ni tuzimadagi
mavjud bitta element uchun aynan shu kalit qo‘llaniladi. Bunday kalit birlamchi deb
ataladi. Elementlarning ma‘lum guruhi uchun takrorlanishi mumkin bo‘lgan kalit
ikkilamchi kalit deyiladi, ushbu kalit bo‘yicha ham qidiruv tashkil qilish mumkin.
Ma‘lumot elementlarining kalitlari alohida joyda to‘plangan (boshqa jadvalda) bo‘lishi
yoki o‘zi alohida yozuvdagi biror bir maydonda saqlanishi mumkin.Bunday ajratib
olingan yoki alohida faylda saqlanadigan tashqi kalit deyiladi. Agar kalit yozuvda
joylashgan bo‘lsa, u holda ichki kalit deyiladi.
Berilgan argument bo‘yicha qidiruv berilgan argument kaliti bilan aniqlangan algoritm
deyiladi. Qidiruv algoritmi ishlashi natijasi ushbu ma‘lumotda joylashishi mumkin yoki u
jadvalda mavjud bo‘lmasligi mumkin. Ma‘lumotning mavjud bo‘lmaslik holati ikkita
amalda yuz berishi mumkin:
berilgan qiymatning yo‘qligini aniqlashda;
berilgan qiymatni jadvalga qo‘yishda.
Masalan, bizga ro‘yxat elementi kaliti sifatida k berilgan bo‘lsin. Har bir k(i) kalitda r(i)ma‘lumot mavjud. Qidiruv argumenti - Key. Unga yozuv ma‘lumoti rec mos keladi.
Jadvalda ma‘lumotlar tuzilmasiga bog‘liq holda qidiruvning bir nechta shakllari
farqlanadi.
Bu masalani yechish uchun ikki xil yondoshuv mavjud: ketma-ket qidiruv va
indeksli ketma-ket qidiruv. Ushbu qidiruv algoritmlarini o‘rganib chiqamiz.
Ketma-ket qidiruv algoritmi
Qidiruv algoritmlarida biror aniq elementni mavjud ro‘yxat elementlarini birma-bir qarab
chiqish orqali qidirib topish masalasi hal qilinadi. Ketma-ket qidiruv algoritmida
ro‘yxatning saralanganligi ahamiyatga ega bo‘lmasa-da, lekin saralangan ro‘yxatda eng
yaxshi natijaga erishiladi. Odatda qidiruv kerakli elementning ro‘yxatda bor yoki
yo‘qligini shunchaki tekshirish uchun emas, balki shu kalit-qiymatga ega bo‘lgan
ma‘lumotni ajratib olish uchun ham qo‘llaniladi.
Download