Skip to content

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 max

Flowchart

Shakl va strelkalar bilan chiziladigan diagramma — bugungi darsning ikkinchi qismida batafsil.

2. Pseudocode qoidalari

Pseudocode — qat'iy qoida yo'q

Pseudocode — erkin format. Asosiysi:

  1. Aniq bo'lsin
  2. Tushunarli bo'lsin
  3. 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 ism

3. 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 narsa

5. Funksiya

FUNCTION qoshish(a, b):
    RETURN a + b

CALL qoshish(5, 3)  →  natija: 8

3. 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:", average

Natija: 79.8

4. Algoritm naqshlari (patterns)

CS'da takrorlanadigan asosiy naqshlar bor:

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_FOUND

Misol: 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 3

Binary 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_FOUND

Misol: 7 ni topish — [1, 3, 5, 7, 9, 11, 13]

left=0, right=6, middle=3 → ro'yxat[3]=7 == 7  →  RETURN 3

Atigi 1 ta tekshirish!

Taqqoslash

Algoritm1000 element1,000,000 element
Linear1000 tekshirish1,000,000 tekshirish
Binary10 tekshirish20 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'yxat

Misol: [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:

IterationHolat
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 count

Misol: [-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 result

Misol: [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 result

Misol: [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

ShaklVazifasi
Oval / YumaloqBoshlanish (Start) va Tugash (End)
To'rt burchakAmal (action, jarayon)
Romb / OlmosShart (if-else)
ParallelogramInput / Output (kiruvchi / chiquvchi)
StrelkaYo'nalish
Aylanali strelkaSikl (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. Qadam

Selection — tanlov

Shart bo'yicha tanlov:

AGAR shart ROST bo'lsa:
    A qadamni qil
AKS HOLDA:
    B qadamni qil

Iteration — sikl

Takrorlash:

TAKRORLA 10 marta:
    A qadamni qil

TOKI shart ROST bo'lsa (while):
    A qadamni qil

13. 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"
ABA AND B
ROSTROSTROST
ROSTYOLG'ONYOLG'ON
YOLG'ONROSTYOLG'ON
YOLG'ONYOLG'ONYOLG'ON

OR (yoki)

Kamida bittasi rost bo'lsa (masalan: IF (soat == 6) OR (soat == 7) — ertalab):

ABA OR B
ROSTROSTROST
ROSTYOLG'ONROST
YOLG'ONROSTROST
YOLG'ONYOLG'ONYOLG'ON

NOT (emas)

Teskari:

IF NOT (ish kuni):
    PRINT "Dam olamiz"
ANOT A
ROSTYOLG'ON
YOLG'ONROST

Murakkab shartlar

AGAR (yosh >= 18 AND yosh <= 30) AND (ball >= 80 OR tajriba >= 2):
    Qabul qiling

Tarjima: 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:

DasturTavsif
Draw.ioBepul, brauzerda (app.diagrams.net)
MermaidMarkdown'da kod bilan diagramma
ExcalidrawBepul, 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 result

Flowchart

Trace (n = 4)

iresultshart
11 × 1 = 1ROST
21 × 2 = 2ROST
32 × 3 = 6ROST
46 × 4 = 24ROST
5YOLG'ON

Natija: 4! = 24

16. Muammodan kodgacha

Yaxshi dasturchi flowchart va pseudocode'ni birga ishlatadi:

  1. Avval o'ylab — qog'ozda
  2. Flowchart — vizual qiling
  3. Pseudocode — qadamlarini yozing
  4. Kod — real dasturlash tilida

Darsdagi topshiriqlar

Topshiriq 1 — O'rtacha va median

2 ta algoritm yozing:

  1. O'rtacha (mean): yig'indi / soni
  2. 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]

  1. Linear Search: necha qadamda topdingiz?
  2. 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:

  1. Yoshi 18 dan 30 gacha VA universitetda o'qigan
  2. Toshkentlik YOKI Samarqandlik VA dasturchi
  3. Erkak EMAS (ya'ni ayol)
  4. Hafta oxiri EMAS VA soat 9-17 oralig'ida (ish vaqti)
  5. 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)

TerminQisqacha izoh
PseudocodeDastur tili-simon yozish usuli
VariableO'zgaruvchi
Input / OutputKiruvchi / chiquvchi
LoopSikl (FOR, WHILE)
ConditionShart (IF, ELSE)
FunctionFunksiya
Linear SearchKetma-ket qidiruv
Binary SearchYarim-yarimga qidiruv
Bubble SortPufakcha saralash
SwapIkki qiymatni almashtirish
MODQoldiq (modulo)
APPENDRo'yxatga qo'shish
LENGTHHajm (uzunlik)
FlowchartOqim diagrammasi
SequenceKetma-ket struktura
SelectionTanlov struktura
IterationSikl struktura
AND / OR / NOTBoolean operatorlar
True / False (Rost / Yolg'on)Mantiqiy qiymatlar
TraceAlgoritmni qadam-baqadam kuzatish
Draw.ioDiagramma chizish vositasi
MermaidMarkdown ichida diagramma

Keyingi dars

4-dars: Terminal va buyruq qatori →

Master IT o'quv markazi — o'qitish rejasi