Algoritm va ma'lumotlar tuzulmasi.
Algoritm - jarayon yoki aniq belgilangan ko'rsatmalar to'plami sifatida qarash mumkin. Odatda algoritm biror muammolarni hal qilish yoki muayyan turdagi hisoblashlarni amalga oshirish uchun qo'laniladi.
Algoritm deganda, ijrochi uchun qo'yilgan masalani yechishga qaratilgan aniq va tushunarli ko'rsatmalarning chekli ketmaketligi tushuniladi.
Oddiyroq tushuntirganda inson ko'rsatma yoki buyruqlar ketma-ketligini bajarish orqali ko'zlagan maqsadiga erishishi Algoritm hisoblanadi. Algoritmdagi har bir ko'rsatma yoki buyruq biror amalni bajarishni ko'zda tutadi. Algoritmdagi amallarni bajaradigan obyektni ijrochi deb atash mumkin.
Algoritm so'zi va tushunchasi IX asrda yashab ijod etgan buyuk alloma Abu Abdulloh Muhammad ibn Muso al-Xorazmiy (783 - 850) nomi bilan uzviy bog'liq. Algoritm so'zi al-Xorazmiy nomini yevropa olimlari tomonidan buzib talaffuz qilinishidan kelib chiqqan. Al-Xorazmiy arifmetikaga bag'ishlangan “Al-kitob al-muxtasar fi hisob al-jabr va almuqobala” nomli risolasida birinchi bo'lib o'nlik sanoq sistemasining prinsiplari va undagi to'rt amalni bajarish qoidalarini asoslab bergan.
Algoritm xususiyatlari.
- Aniqlik - algoritmlarda beriladiga ko'rsatmalar aniq bo'lishi kerak.
- Tushunarlilik - algoritm uni bajaruvchisi uchun tushunarli buyruqlardan iborat bo'lishi shart.
- Yakunlanishi - algoritm albatta chekli qadamdan so'ng yakunlashishi lozim.
Algoritm turlari.
- Chiziqli algoritm - barcha ko'rsatmalari hech qanday shartsiz, faqat ketma-ket bajariladigan jarayonlar.
- Tarmoqlanuvchi algoritm - hisoblash jarayoni qandaydir berilgan shartning bajarilishiga qarab turli tarmoqlar bo'yicha davom ettiriladigan va hisoblash jarayonida har bir tarmoq faqat bir marta bajariladigan jarayonlar.
- Takrorlanuvchi algoritm - biron bir shart tekshirilishi yoki qandaydir parametrning har xil qiymatlari asosida algoritmda takrorlanish yuz beradigan jarayonlar.
- Aralash (kombinatsiyalashgan) algoritm — tarkibida bir necha turdagi algoritmlar qatnashgan algoritm.
Algoritmlarni tasvirlash.
Algoritmlarni turli usullarda tasvirlash mumkin. Quyida biz algoritmlarni tasvirlashning eng keng tarqalgan usullari bilan tanishib chiqamiz.
- so'z bilan ifodalash;
- formulalarda ifodalash;
- blok-sxemalarda tasvirlash;
- dastur shaklida ifodalash.
Algoritmlarni blok-sxema ko'rinishda tasvirlash qulay va tushunarli bo'lgani uchun eng ko'p ishlatiladi. Bunda algoritmdagi har bir ko'rsatma o'z shakliga ega bo'lib quyida blok-sxemalarni tuzishda foydalaniladigan asosiy sodda geometrik figuralar keltirilgan.

Endi yuqroda ko'rsatib o'tagn blok-sxemaga misol ko'ramiz.
Misol: Uchburchak tomonlarining uzunligi berilgan. Uchburchakga ichki va tashqi chizilgan aylanalar radiuslari va uzunliklari hisoblansin. Ichki chizilgan aylana radiusi r=2S/(a+b+c), tashqi chizilgan aylananing radiusi esa R=4S/abc formulalar orqali hisoblanadi. Bu yerda S – uchburchakning yuzi, a, b, c – uchburchak tomonlarining uzunliklari.
Ushbu masalaning blok-sxemasi quyidagicha bo'ladi:

Yaxshi algoritm
Algoritmlar muammoga to'g'ri va optimal samarali yechim berishi kerak. Biror muamo uchun ishlab chiqilgan algoritmlar har doim bir xil ishlashi zarur.
Yaxshi algoritm belgilari
- Kirish (muammo) va chiqish (yechim) aniq berilgan bo'lishi kerak.
- Algoritmning har bir bosqichi aniq va ravshan bo'lishi kerak.
- Algoritm muammoni hal qilishning turli usullari orasida eng samaralisi bo'lishi kerak.
- Algoritm kompyuter kodi bo'lmasligi kerak. Buning o'rniga algoritm turli dasturlash tillarida ishlatilishi mumkin bo' lgan qoida tarzida yozilishi kerak.
Algoritmlashni o'rganish nima uchun kerak?
Har xil murakkab algoritmlarni o'rganish Dasturchi uchun kerakmi degan savol ko'pchilik yangi dasturchilarda paydo bo'ladi, buning sababi dasturlashga yangi kirgan payt ko'plab tayyor kutubxona va frameworklardan foydalanishadi natijada shuncha tayyor yechimlar bor ekanku nima qilaman o' rganib degan hayolga borishadi. Quyida o'rganish uchun asosli sabablarni keltirib o'tmoqchiman.
- Algoritmlar dasturlash asosi.
- Mantiqiy fikrlashni oshiradi.
- Tayyor yechimlar va Frameworklar asosini tushunishga yordam beradi.
- Yangi masalalarga yechimini topa olish qobilyatini rivojlantiradi.
Info
Dasturlashni o'rganish jarayoni bu bir martalik jarayon emas, muntazam o'rganish va izlanishdan iborat bo'lgan jarayon. Kundan-kun dasturchilarga talab ortib bormoqda shu bilan birga dasturchidan talab qilinadigan bilimlarga ham talab ortgan. Endi siz biror kursni tugatib dasturchi bo'lolmaysiz(junior ham bo'lolmaysiz), kursni tugatib usha kursni bitiruvchisi bo'lasiz xolos. Dasturchi har doim yangi bilimlar o'rganishi lozim.
Ma'lumotlar tuzilmasi

Info
“Yomon dasturchilar o'zlarining kodlari haqida qayg'urishadi, yaxshi dasturchilar esa ma'lumotlar tuzilmalari va ularning bog'lanishlari haqida bosh qotirishadi.” — Linus Torvalds`
Ma'lumotlar tuzilmasi - ma'lumotlarni samarali o'qish va o'zgartirish imkonini beruvchi, ma'lumotlarni saqlash va boshqarishning bir formatga solingan shaklidir. Soddaroq qilib aytganda, ma'lumotlar tuzilmasi ma'lumotlarning ma'lum bir strukturaga solingan, ular o'rtasida ma'lum bir bog'lanishlar yaratilgan va ular ustida ma'lum amallar bajaruvchi funksiyalardan tashkil topgan guruh.
Asosiy ma'lumotlar tuzilmalari.
Asosiy ma'lumotlar tuzilmalarini ikki qismga ajratish mumkin.
-
Primitive - dasturlash tillari tomonidan taqdim qilinadigan ma'lumot turlari hisoblandi. Bu ma'lumot turlariga quyidagilarni misol qilish mumkin.
- Integer
- Float
- Character
- Booleans
-
Non-primitive - murakkabroq ma'lumot turlari hisoblanadi, privmative va privmative bo'lmagan ma'lumot turlarini o'z ichiga oladi. Ko'pincha dasturchilar tomonidan belgilangan ma'lumot turlari deb ham ataladi, chunki dasturchilar tomonidan qo'shilishi mumkin. Primitive bo'lmagan ma'lumot turlariga quyidagilarni misol qilish mumkin.
- Array
- Class
- String
Quyida keltirilgan ma'lumotlar tuzilmalari dasturlashda eng ko'p qo'llaniladigan tuzilmalar.
-
Massiv (Array)
-
Bog'langan ro'yhat (Linked List)
-
Navbat (Queue)
-
Stek (Stack)
-
Hash jadvallar (Hash tables)
-
Daraxtlar (Trees)
-
Graflar (Graph)
Ma'lumotlar tuzilmalari ustida asosiy bajarilishi mumkin bo'lgan amallar ro'yxati.
Ma'lumotlar tuzilmalari nima uchun kerak? Nima keragi bor? degan savollar tug'ilishi mumkin. Ma'lumot tuzilmalari ustida bajariladaigan asosiy amallarni bilib olsak yuqoridagi savollarga javob berish osonroq bo'ladi.
- Traversing
- Retrieving
- Insertion
- Deletion
- Search
- Sorting
- Merging
Turli xildagi ma'lumotlar tuzilmalarida esa yuqoridagi amallar turlicha tezlikda amalga oshadi.
Masalan oddiyroq misol olaylik, array uchun ma'lumotni o'qib olish uchun O(1) vaqt sarflansa, uni kiritish yoki o'chirish uchun O(n) vaqt sarflanadi. Linked listda esa bular aksincha. Shuning uchun sizning dasturingizda ma'lumotlar ko'p kiritilib, o'chirilsayu lekin kam o'qilsa, bunda ma'lumotlarni saqlashda arraydan foydalangandan ko'ra Linked list qulayroq hisoblanadi.
Info
Ma'lumot tuzilmalarining maqsadi, ma'lumotlardan samarali foydalanish.
- https://en.wikipedia.org/wiki/Data_structure
- https://janobmusayev.medium.com
- https://sariq.dev
- https://www.youtube.com/@virtualdars
- https://farruxnet.uz/blog/2024/02/01/algoritm-nima/
- https://farruxnet.uz/blog/2024/02/04/malumot-tuzilmalari/