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.
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: Scratch (vizual) → C → Python.
12. Nima uchun Scratch?
Scratch — vizual dasturlash. MIT Media Lab yaratgan.
Foydalari:
- Sintaksis xatosi yo'q (bloklar)
- Vizual va qiziqarli
- Algoritmik fikrlashga e'tibor
- 8 yoshli boladan kattalargacha — hamma ishlata oladi
CS50'da ham birinchi hafta — Scratch. Keyin C.
13. CS o'rganish reja (6 oy)
Hozir: algoritmik fikrlash + Scratch + Git/GitHub. Keyingi: real kod (C tilida).
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 |
| Scratch | Vizual dasturlash dasturi |