3-dars: Algoritm, pseudocode va flowchart
Dars haqida
Davomiyligi: 90 daqiqa Maqsad: Talaba algoritmlarni chuqurroq tushunishi, pseudocode yozishi, asosiy algoritm naqshlarini (qidiruv, saralash) bilishi hamda flowchart (oqim diagrammasi) chizib, shart va sikl strukturalarini vizual ifodalay olishi kerak.
1. Algoritmni qayta ko'rib chiqamiz
Algoritm — muammoni yechish uchun ketma-ket qadamlar.
Bugungi darsda algoritm yozishni o'rganamiz — keyingi darslarda terminal, Git va C tilida amalga oshiramiz.
Algoritmni yozishning 3 ta usuli bor:
Natural language (oddiy til)
"Birinchi raqamni eslab qoling.
Keyingi raqamni tekshiring.
Agar u kattaroq bo'lsa — uni eslab qoling.
Hammasi tugaguncha takrorlang."Pseudocode
SET max = numbers[0]
FOR each number in numbers:
IF number > max:
SET max = number
PRINT maxFlowchart
Shakl va strelkalar bilan chiziladigan diagramma — bugungi darsning ikkinchi qismida batafsil.
2. Pseudocode qoidalari
Pseudocode — qat'iy qoida yo'q
Pseudocode — erkin format. Asosiysi:
- Aniq bo'lsin
- Tushunarli bo'lsin
- Real kodga aylantirish oson bo'lsin
Tipik pseudocode tuzilmalari
1. O'zgaruvchilarni belgilash
SET age = 18
SET name = "Akmal"
SET ballar = [85, 92, 78, 65, 90]2. Input va Output
INPUT yosh
INPUT ism
PRINT "Salom!"
PRINT ism3. Shart (if-else)
IF yosh >= 18:
PRINT "Kattalar"
ELSE:
PRINT "Bola"4. Sikl (loop)
FOR i FROM 1 TO 10:
PRINT i
WHILE shart IS TRUE:
bajar narsa
REPEAT 5 TIMES:
bajar narsa5. Funksiya
FUNCTION qoshish(a, b):
RETURN a + b
CALL qoshish(5, 3) → natija: 83. Algoritm misoli: O'rtacha hisoblash
Vazifa: 10 ta raqam berilgan. O'rtachasini topish.
Oddiy til:
"Hamma raqamlarni qo'shing.
10 ga bo'ling.
Natija — o'rtacha."Pseudocode:
SET numbers = [85, 92, 78, 65, 90, 75, 88, 70, 95, 60]
SET sum = 0
SET count = LENGTH(numbers)
FOR each n in numbers:
SET sum = sum + n
SET average = sum / count
PRINT "O'rtacha:", averageNatija: 79.8
4. Algoritm naqshlari (patterns)
CS'da takrorlanadigan asosiy naqshlar bor:
5. Naqsh 1: Qidiruv (Search)
Linear Search (chiziqli qidiruv)
Eng oddiy: ro'yxatdagi har elementni navbat bilan tekshirish.
ALGORITHM: Linear Search
INPUT: ro'yxat, qidirilayotgan element
OUTPUT: pozitsiya yoki NOT_FOUND
FOR i FROM 0 TO LENGTH(ro'yxat) - 1:
IF ro'yxat[i] == qidirilayotgan element:
RETURN i
RETURN NOT_FOUNDMisol: 5 raqamini topish — [3, 7, 1, 5, 9]
i=0: 3 ≠ 5
i=1: 7 ≠ 5
i=2: 1 ≠ 5
i=3: 5 == 5 → RETURN 3Binary Search (ikkilik qidiruv)
Tezroq: ro'yxat sortlangan bo'lsa.
ALGORITHM: Binary Search
INPUT: sortlangan ro'yxat, qidirilayotgan
OUTPUT: pozitsiya yoki NOT_FOUND
SET left = 0
SET right = LENGTH(ro'yxat) - 1
WHILE left <= right:
SET middle = (left + right) / 2
IF ro'yxat[middle] == qidirilayotgan:
RETURN middle
ELSE IF ro'yxat[middle] < qidirilayotgan:
SET left = middle + 1
ELSE:
SET right = middle - 1
RETURN NOT_FOUNDMisol: 7 ni topish — [1, 3, 5, 7, 9, 11, 13]
left=0, right=6, middle=3 → ro'yxat[3]=7 == 7 → RETURN 3Atigi 1 ta tekshirish!
Taqqoslash
| Algoritm | 1000 element | 1,000,000 element |
|---|---|---|
| Linear | 1000 tekshirish | 1,000,000 tekshirish |
| Binary | 10 tekshirish | 20 tekshirish |
Binary juda tezroq — lekin ro'yxat sortlangan bo'lishi kerak.
6. Naqsh 2: Saralash (Sort) — Bubble Sort
Eng oddiy saralash usuli. Qo'shni elementlarni almashtirish.
ALGORITHM: Bubble Sort
INPUT: ro'yxat
OUTPUT: sortlangan ro'yxat
FOR i FROM 0 TO LENGTH(ro'yxat) - 1:
FOR j FROM 0 TO LENGTH(ro'yxat) - 2 - i:
IF ro'yxat[j] > ro'yxat[j+1]:
SWAP ro'yxat[j] AND ro'yxat[j+1]
RETURN ro'yxatMisol: [3, 1, 4, 1, 5]
Iteration 1:
[3,1,4,1,5] → [1,3,4,1,5] → [1,3,4,1,5] → [1,3,1,4,5] → [1,3,1,4,5]
Iteration 2:
[1,3,1,4,5] → [1,3,1,4,5] → [1,1,3,4,5] → ...
Yakuniy: [1,1,3,4,5]Bubble Sort — sekin
Bubble Sort — o'rganish uchun yaxshi, lekin amaliyotda sekin.
1000 element → ~1,000,000 amaliyot.
Real dunyoda: Quick Sort, Merge Sort (keyingi oylarda).
Trace — qadam-baqadam kuzatish
Yaxshi algoritm — trace qila olish (har qadamda nima bo'lishini ko'rsatish). Bubble Sort'ni qo'lda trace qilamiz:
| Iteration | Holat |
|---|---|
| Boshlang'ich | [5, 2, 8, 1, 9] |
| 1-iteration | [2, 5, 1, 8, 9] |
| 2-iteration | [2, 1, 5, 8, 9] |
| 3-iteration | [1, 2, 5, 8, 9] |
| Tugadi | [1, 2, 5, 8, 9] ✓ |
Algoritmni qog'ozda yozing
Real koddan oldin doim qog'ozda algoritmni yozing. Tekshiring. Keyin kodga aylantiring.
Bu — professional dasturchi odati.
7. Boshqa naqshlar: sanash, filtrlash, aylantirish
Jamlash (aggregation) naqshini 3-bo'limda ko'rdik — yig'indi va o'rtacha. Qolganlari:
Sanash (Counting)
ALGORITHM: Necha ta musbat raqam bor
SET count = 0
FOR each n in raqamlar:
IF n > 0:
SET count = count + 1
RETURN countMisol: [-3, 5, -2, 8, 0, 1] → 3 ta musbat
Filtrlash (Filter)
ALGORITHM: Faqat juft raqamlarni olish
SET result = []
FOR each n in raqamlar:
IF n MOD 2 == 0: // qoldiqsiz 2 ga bo'linadi
APPEND n TO result
RETURN resultMisol: [1, 2, 3, 4, 5, 6] → [2, 4, 6]
Aylantirish (Transformation)
ALGORITHM: Har raqamni 2 ga ko'paytirish
SET result = []
FOR each n in raqamlar:
APPEND (n * 2) TO result
RETURN resultMisol: [1, 2, 3, 4] → [2, 4, 6, 8]
8. Flowchart nima?
Flowchart (oqim diagrammasi) — algoritmni vizual ko'rsatish vositasi. Shakl va strelka bilan.
Foydalari:
- Vizual — bir qarashda tushunish oson
- Hamma tushunadi — dasturchi va biznes odam
- Hujjatlash — keyinroq qaytadan o'qish oson
9. Flowchart belgilari
| Shakl | Vazifasi |
|---|---|
| Oval / Yumaloq | Boshlanish (Start) va Tugash (End) |
| To'rt burchak | Amal (action, jarayon) |
| Romb / Olmos | Shart (if-else) |
| Parallelogram | Input / Output (kiruvchi / chiquvchi) |
| Strelka | Yo'nalish |
| Aylanali strelka | Sikl (loop) |
10. Ketma-ket va shartli flowchartlar
Eng oddiy: ikki raqamni qo'shish
Shart (conditional): talaba o'tdimi?
Ko'p shart bo'lsa — romblar ketma-ket ulanadi: birinchi shart yolg'on bo'lsa, keyingi romb tekshiriladi (masalan, ball → A/B/C/D/F harf baho).
11. Sikl (loop) flowchartlari
1 dan 10 gacha raqamlarni chiqarish
Sikl ichida shart: 1 dan 20 gacha faqat juft raqamlar
12. 3 ta asosiy struktura
Sequence — ketma-ket
Bitta keyin biri:
1. Qadam
2. Qadam
3. QadamSelection — tanlov
Shart bo'yicha tanlov:
AGAR shart ROST bo'lsa:
A qadamni qil
AKS HOLDA:
B qadamni qilIteration — sikl
Takrorlash:
TAKRORLA 10 marta:
A qadamni qil
TOKI shart ROST bo'lsa (while):
A qadamni qil13. Boolean operatorlar: AND, OR, NOT
Shartlarda logik operatorlar ishlatiladi.
AND (va)
Ikki shart ham rost bo'lsa:
IF (yosh >= 18) AND (yosh <= 60):
PRINT "Ishlash mumkin"| A | B | A AND B |
|---|---|---|
| ROST | ROST | ROST |
| ROST | YOLG'ON | YOLG'ON |
| YOLG'ON | ROST | YOLG'ON |
| YOLG'ON | YOLG'ON | YOLG'ON |
OR (yoki)
Kamida bittasi rost bo'lsa (masalan: IF (soat == 6) OR (soat == 7) — ertalab):
| A | B | A OR B |
|---|---|---|
| ROST | ROST | ROST |
| ROST | YOLG'ON | ROST |
| YOLG'ON | ROST | ROST |
| YOLG'ON | YOLG'ON | YOLG'ON |
NOT (emas)
Teskari:
IF NOT (ish kuni):
PRINT "Dam olamiz"| A | NOT A |
|---|---|
| ROST | YOLG'ON |
| YOLG'ON | ROST |
Murakkab shartlar
AGAR (yosh >= 18 AND yosh <= 30) AND (ball >= 80 OR tajriba >= 2):
Qabul qilingTarjima: Yoshi 18-30 oralig'ida, VA (ball 80+ YOKI 2+ yil tajriba).
14. Flowchart chizish vositalari va Mermaid
Flowchartni qog'ozga chizish — birinchi qadam. Lekin rasmiy hujjatlar uchun maxsus dasturlar:
| Dastur | Tavsif |
|---|---|
| Draw.io | Bepul, brauzerda (app.diagrams.net) |
| Mermaid | Markdown'da kod bilan diagramma |
| Excalidraw | Bepul, oddiy uslub |
Draw.io — tavsiya
Boshlovchi uchun draw.io eng yaxshi:
- Bepul
- O'rnatish kerak emas
- Google Drive bilan integratsiya
- Eksport: PDF, PNG, SVG
app.diagrams.net — kiring va boshlang.
Mermaid syntax (qisqacha)
Bu hujjatdagi diagrammalar — Mermaid bilan chizilgan. Markdown ichida kod yozish:
flowchart TD
A([Boshla]) --> B[Amal]
B --> C{Shart?}
C -->|Ha| D[Natija]
C -->|Yo'q| E[Boshqa]Belgilar:
[Matn]— to'rt burchak([Matn])— oval{Matn}— romb (shart)[/Matn/]— parallelogram (input/output)-->— strelka
GitHub'da, GitLab'da, ko'p platformalarda Mermaid ishlaydi.
15. To'liq misol: Faktorial
Vazifa: Faktorial topish (5! = 5 × 4 × 3 × 2 × 1 = 120)
Pseudocode
INPUT: n
SET result = 1
FOR i FROM 1 TO n:
SET result = result * i
PRINT resultFlowchart
Trace (n = 4)
| i | result | shart |
|---|---|---|
| 1 | 1 × 1 = 1 | ROST |
| 2 | 1 × 2 = 2 | ROST |
| 3 | 2 × 3 = 6 | ROST |
| 4 | 6 × 4 = 24 | ROST |
| 5 | — | YOLG'ON |
Natija: 4! = 24 ✓
16. Muammodan kodgacha
Yaxshi dasturchi flowchart va pseudocode'ni birga ishlatadi:
- Avval o'ylab — qog'ozda
- Flowchart — vizual qiling
- Pseudocode — qadamlarini yozing
- Kod — real dasturlash tilida
Darsdagi topshiriqlar
Topshiriq 1 — O'rtacha va median
2 ta algoritm yozing:
- O'rtacha (mean): yig'indi / soni
- Median: sortlab, o'rtadagi qiymat
Misol uchun [1, 5, 3, 9, 7]:
- O'rtacha: (1+5+3+9+7)/5 = 5
- Sortlangan: [1, 3, 5, 7, 9]
- Median: 5 (o'rtadagi)
Har biri uchun pseudocode yozing.
Topshiriq 2 — Linear va Binary Search
Linear Search va Binary Search pseudocode'lari yuqorida berilgan.
Quyidagi ro'yxatda 23 raqamini qidiring va har qadamni qog'ozga yozib chiqing:
[3, 7, 12, 15, 18, 23, 28, 35, 42, 50]
- Linear Search: necha qadamda topdingiz?
- Binary Search: necha qadamda topdingiz?
Topshiriq 3 — Bubble Sort qo'lda
Quyidagi ro'yxatni Bubble Sort bilan sortlang. Har iteration'ni qog'ozga yozing:
[7, 3, 9, 1, 5, 8, 2]
Har iteration (raund) oxirida ro'yxat holati qanday bo'ladi?
Topshiriq 4 — Hayotiy algoritm
Quyidagi vazifa uchun batafsil pseudocode yozing:
"Sinfdagi 30 ta talaba ballari berilgan. Quyidagilarni hisoblang:
- Jami yig'indi
- O'rtacha
- Eng yuqori va eng past ball
- 60+ ball olganlar soni
- 90+ ball olganlar foizi"
Bitta algoritm — hammasini hisoblasin.
Topshiriq 5 — Yosh shart flowchart
Quyidagi vazifa uchun flowchart chizing:
"Yoshni kiriting:
- 6 dan kichik — Bola
- 6-17 — Maktab yoshi
- 18-25 — Yoshlar
- 26-60 — Kattalar
- 60+ — Keksa"
Draw.io'da chizing va Drive'ga saqlang.
Topshiriq 6 — Boolean operatorlar
Quyidagi shartlarni AND, OR, NOT ishlatib yozing:
- Yoshi 18 dan 30 gacha VA universitetda o'qigan
- Toshkentlik YOKI Samarqandlik VA dasturchi
- Erkak EMAS (ya'ni ayol)
- Hafta oxiri EMAS VA soat 9-17 oralig'ida (ish vaqti)
- Tug'ilgan kuni bugun YOKI kecha
Har biri uchun:
- Mantiqiy ifoda yozing
- Flowchart belgilari (romb) bilan ko'rsating
Topshiriq 7 — Sikl flowchart
1 dan 100 gacha bo'lgan raqamlardan 5 ga qoldiqsiz bo'linadigan raqamlarni chiqaring.
(5, 10, 15, 20, ..., 100)
Flowchart chizing.
Pseudocode'sini ham yozing.
Topshiriq 8 — Bank ATM
ATM funksionali uchun flowchart yarating:
Imkoniyatlar:
- PIN kod tasdiqlash (3 marta xato bo'lsa — bloklash)
- Balans ko'rish
- Pul olish (limit: 5,000,000 so'm)
- Pul kiritish
- O'tkazma
- Chiqish
To'liq flowchart draw.io'da chizing.
Drive'ga PNG/PDF eksport.
Asosiy tushunchalar (lug'at)
| Termin | Qisqacha izoh |
|---|---|
| Pseudocode | Dastur tili-simon yozish usuli |
| Variable | O'zgaruvchi |
| Input / Output | Kiruvchi / chiquvchi |
| Loop | Sikl (FOR, WHILE) |
| Condition | Shart (IF, ELSE) |
| Function | Funksiya |
| Linear Search | Ketma-ket qidiruv |
| Binary Search | Yarim-yarimga qidiruv |
| Bubble Sort | Pufakcha saralash |
| Swap | Ikki qiymatni almashtirish |
| MOD | Qoldiq (modulo) |
| APPEND | Ro'yxatga qo'shish |
| LENGTH | Hajm (uzunlik) |
| Flowchart | Oqim diagrammasi |
| Sequence | Ketma-ket struktura |
| Selection | Tanlov struktura |
| Iteration | Sikl struktura |
| AND / OR / NOT | Boolean operatorlar |
| True / False (Rost / Yolg'on) | Mantiqiy qiymatlar |
| Trace | Algoritmni qadam-baqadam kuzatish |
| Draw.io | Diagramma chizish vositasi |
| Mermaid | Markdown ichida diagramma |