1-dars: Computer Science nima va algoritm tushunchasi
Dars haqida
Davomiyligi: 90 daqiqa Maqsad: Talaba Computer Science ning umumiy tushunchasini, algoritmik fikrlashni va dasturlash mantig'ini tushunishi kerak. Bu — Foundation 2-bosqichining poydevoridir.
O'tgan oyda AI vositalari bilan ishladingiz — Claude Code yordamida sayt yasadingiz, Gemini va Veo bilan kontent yaratdingiz. AI sizga kodni yozib beradi, lekin uni tushunish, tekshirish va boshqarish uchun kompyuter fanining poydevori kerak. Shu darsdan boshlab aynan o'sha poydevorni quramiz.
1. Computer Science nima?
Computer Science (CS) — kompyuter va hisoblash haqidagi fan.
Diqqat: CS ≠ dasturlash. Dasturlash — CS'ning bir qismi. CS bu — quyidagilarni o'rganadi:
CS bu nima emas
- CS bu — faqat dasturlash emas
- CS bu — kompyuterni ta'mirlash emas
- CS bu — Microsoft Office'ni o'rgatish emas
CS bu — muammolarni yechishga sistematik yondashuv, dasturlash uning vositasi.
2. CS asosida nima yotadi?
Asosiy savol: Muammoni qanday yechish mumkin?
CS uchun 3 ta narsa muhim:
Misol 1: Kalkulyator
- Input: 2 + 3
- Algorithm: qo'shish amali
- Output: 5
Misol 2: Spam filter
- Input: email matni
- Algorithm: spam belgilarini qidirish
- Output: SPAM yoki INBOX
Misol 3: Yo'l ko'rsatkich (Yandex Maps)
- Input: hozirgi joy, manzil
- Algorithm: eng qisqa yo'lni topish
- Output: yo'l ko'rsatkichi
3. Algoritm nima?
Algoritm — muammoni yechish uchun aniq, ketma-ket qadamlar to'plami.
Algoritm — hayotda
Siz har kuni algoritmlarni ishlatasiz, lekin payqamasdan.
- Choy tayyorlash — algoritm
- Mashinaga kirib qo'zg'atish — algoritm
- Maktabga borish yo'li — algoritm
- Ovqat pishirish (retsept) — algoritm
4. Algoritm misoli: Choy tayyorlash
Algoritm: "Choy tayyorlash"
Qadam 1: Choynakka suv quy
Qadam 2: Choynakni gazga qo'y
Qadam 3: Gazni yoq
Qadam 4: Suv qaynashini kuzat
Qadam 5: Agar suv qaynagan bo'lsa:
- Gazni o'chir
- Choynakka quruq choy sol
- Ustidan qaynoq suv quy
Qadam 6: 3-4 daqiqa kut
Qadam 7: Piyolaga quy
Qadam 8: Tayyor!5. Algoritmning xususiyatlari
| Xususiyat | Tushuntirish |
|---|---|
| Aniq qadamlar | Har qadam — bir narsa |
| Tugashi kafolat | Algoritm cheksiz aylanmasin |
| Cheklangan vaqt | Yechim ma'qul vaqtda topiladi |
| Kiruvchi/chiquvchi | Nima qabul qiladi, nima beradi |
| Samaradorlik | Iloji boricha tez |
| Qaytariluvchi | Har safar bir xil natija |
6. Algoritmlar — kundalik misollar
Misol 1: Eng kichik raqamni topish
Algoritm: 10 ta raqamdan eng kichigini topish
Qadam 1: Birinchi raqamni "eng kichik" deb belgila
Qadam 2: Keyingi raqamni ol
Qadam 3: Agar yangi raqam "eng kichik"dan kichikroq bo'lsa,
yangi raqamni "eng kichik" qil
Qadam 4: Hamma raqamlar tekshirilmaguncha 2-3 qadamni qaytar
Qadam 5: "Eng kichik"ni javob sifatida berMisol 2: Telefon kitobida ism qidirish
Eski usul (sekin):
1. Birinchi sahifadan boshla
2. Har bir ismni o'qib chiq
3. Mos kelsa — to'xtaYangi usul (tez — binary search):
1. Kitobning o'rtasini och
2. Agar qidirilayotgan ism shu sahifada bo'lsa — topdik
3. Agar alifboda oldin bo'lsa — kitobning chap yarmiga o'tib qayta
4. Agar alifboda keyin bo'lsa — o'ng yarmiga o'tib qaytaEski usul 1000 ismda 500 sahifa o'qish. Yangi usul — atigi 10 sahifa.
Algoritm tezligi muhim — keyingi darslarda batafsil.
7. Pseudocode
Pseudocode — algoritmni odam tushunadigan tilda yozish (lekin tuzilma — dasturlash kabi).
Misol: Eng katta raqamni topish
O'zbek tilida:
"10 ta raqamdan eng kattasini topamiz.
Birinchisini eng katta deb belgilaymiz.
Qolganlarini birma-bir tekshiramiz.
Agar yangi raqam katta bo'lsa, uni eng katta qilamiz.
Oxirda eng kattaning qiymatini chiqaramiz."Pseudocode shaklida:
SET max = numbers[0]
FOR each number in numbers:
IF number > max:
SET max = number
PRINT maxPseudocode foydasi
- Dastur tilini bilmasdan ham yozish mumkin
- Mantiqiy fikrlashni rivojlantiradi
- Keyinroq real kodga osongina aylantirish mumkin
- Boshqalar bilan muhokama qilish uchun qulay
8. Algoritmik fikrlash
Algoritmik fikrlash — har muammoni quyidagicha ko'rish:
- Decomposition — Katta muammoni kichik qismlarga bo'lish
- Pattern recognition — O'xshashliklarni topish
- Abstraction — Kerakli ma'lumotni ajratish
- Algorithm design — Qadamlar yaratish
9. Misol: Algoritmni yaxshilash
Vazifa: 100 ta talaba ichidan eng yuqori ballini topish.
Algoritm 1 (sekin):
Har talaba ballini boshqa hammasi bilan taqqoslang.
Eng yuqori bo'lganini ayting.
Amaliyot soni: 100 × 100 = 10,000Algoritm 2 (tezroq):
Birinchi talabaning ballini eng yuqori deb belgila.
Qolgan 99 ta bilan taqqoslang.
Agar yuqori chiqsa — yangilang.
Amaliyot soni: 99100x tezroq! Algoritm muhim.
10. Algoritm samaradorligi (Big O — kirish)
Algoritmlar uchun vaqt o'lchovi.
| Belgi | Nomi | Misol |
|---|---|---|
| O(1) | Constant | Massiv'ning birinchi elementini olish |
| O(log n) | Logarithmic | Binary search |
| O(n) | Linear | Linear search |
| O(n log n) | Linearithmic | Merge sort |
| O(n²) | Quadratic | Bubble sort |
| O(2^n) | Exponential | Brute force |
Hozircha
Bu mavzu 5-oyda batafsil. Hozir — faqat tushuncha. Yaxshi algoritm — tez algoritm.
11. Dasturlash tushunchasi
Dasturlash — algoritmni kompyuter tushunadigan tilda yozish.
Dasturlash tillari (qisqacha)
| Til | Foydalanish |
|---|---|
| Python | Boshlovchi, AI, ma'lumot tahlili |
| JavaScript | Web sayt |
| C / C++ | Tizim, o'yin, samaradorlik |
| Java | Korxona, Android |
| C# | Microsoft, o'yin (Unity) |
| Go | Server, parallel dasturlash |
| Rust | Tizim, xavfsizlik |
| Swift | iOS |
| Kotlin | Android |
Foundation'da: algoritm va flowchart → C → Python.
12. Nima uchun C tilidan boshlaymiz?
C — 50 yildan beri ishlatiladigan klassik til. Harvard'ning mashhur CS50 kursi ham aynan C'ni tanlagan.
Sabablari:
- Qat'iy sintaksis — har bir belgi muhim, bu aniq va toza fikrlashni o'rgatadi
- Kompyuter qanday ishlashini yaqindan ko'rsatadi (xotira, turlar)
- C'ni tushungan odam boshqa tillarni tez o'zlashtiradi
- C'dan keyin Python juda oson tuyuladi
Shu oyning o'zida C bilan tanishamiz, keyingi oylarda chuqurlashamiz.
13. CS o'rganish reja (4-6 oylar)
Hozir (4-oy): algoritmik fikrlash + terminal + Git/GitHub + C boshlanishi. Keyingi: C'da chuqurlashish, so'ng Python.
Darsdagi topshiriqlar
Topshiriq 1 — Hayotiy algoritmlar
5 ta kundalik vazifa uchun algoritm yozing (qadamma-qadam):
- Tish yuvish
- Maktabga / ishga borish
- Sendvich tayyorlash
- Mashinaga kirib qo'zg'atish
- Telefon zaryadlash
Har biri kamida 5–7 qadam. Aniq va tushunarli.
Topshiriq 2 — Eng katta raqam
Quyidagi vazifa uchun pseudocode yozing:
"Sinfdagi 30 ta talabaning ballari berilgan. Ulardan eng katta ball va eng kichik ball ni toping."
Pseudocode shaklida:
SET max = ?
SET min = ?
FOR each ball in ballar:
IF ball > max:
...
IF ball < min:
...
PRINT max
PRINT minPseudocode'ni daftarga yozing.
Topshiriq 3 — Ovqat algoritmi
Sevimli ovqatingiz retseptini algoritm shaklida yozing:
- Kamida 10 qadam
- Har qadam aniq
- "Agar..." (shartlar) ham ishlating
- "X marta takrorlang" (sikllar) ham ishlating
Misol:
Qadam 1: Qozonga suv quy (1 litr)
Qadam 2: Suv qaynaguncha kut
Qadam 3: Tuz qo'sh
Qadam 4: Makaron sol
Qadam 5: 10 daqiqa qaynat
Qadam 6: Agar makaron yumshoq bo'lsa - keyingi qadamga
Aks holda - 2 daqiqa kut
Qadam 7: Suvini to'k
Qadam 8: Sous quy
...Topshiriq 4 — Qidiruv algoritmi
1000 sahifali telefon kitobida "Toshpulatov" familiyasini qidirish uchun 2 ta algoritm yozing:
- Linear search (sahifa-sahifa)
- Binary search (yarim-yarim)
Har biri uchun:
- Pseudocode
- Qancha sahifa ochish kerak (taxminan)
- Qaysi tezroq?
Topshiriq 5 — Decomposition
"Online o'quv markazi sayti yaratish" vazifasini 5–7 ta kichik qismga ajrating.
Har qism — alohida vazifa. Misol:
- Talabalar ro'yxati
- O'qituvchilar
- Darslar
- ...
Har birini batafsil yozib chiqing (3–4 jumla).
Topshiriq 6 — Algoritmik fikrlash
Hayotiy muammo tanlang va 4 qadam algoritmik fikrlash bilan ishlang:
Muammo misollari:
- "Vaqtim yetmaydi" — kunlik vazifalarni boshqarish
- "Pul tejash" — oyiga ma'lum summa tejash
- "Sport bilan shug'ullanish" — har kuni 30 daqiqa
Tahlil:
- Decomposition: Muammoni kichik qismlarga
- Pattern recognition: Boshqalar qanday yechgan?
- Abstraction: Eng zarur qismlar
- Algorithm design: Aniq qadamlar
Asosiy tushunchalar (lug'at)
| Termin | Qisqacha izoh |
|---|---|
| Computer Science (CS) | Kompyuter va hisoblash fani |
| Algorithm | Muammoni yechish qadamlari |
| Pseudocode | Odam tilida yozilgan dastur tarkibi |
| Input | Kiruvchi ma'lumot |
| Output | Chiquvchi ma'lumot |
| Decomposition | Bo'laklash |
| Pattern recognition | O'xshashliklarni topish |
| Abstraction | Eng zaruri ajratish |
| Linear search | Ketma-ket qidiruv |
| Binary search | Yarim-yarimga qidiruv |
| Big O | Algoritm samaradorligi o'lchovi |
| Programming | Algoritmni kompyuter tilida yozish |
| Flowchart | Algoritmning chizma ko'rinishi |