Skip to content

3-dars: Algoritmlar va pseudocode

Dars haqida

Davomiyligi: 90 daqiqa Maqsad: Talaba algoritmlarni chuqurroq tushunishi, pseudocode yozishi, asosiy algoritm naqshlarini (qidiruv, sortlash) bilishi kerak.

1. Algoritmni qayta ko'rib chiqamiz

Algoritm — muammoni yechish uchun ketma-ket qadamlar.

Bugungi darsda algoritm yozishni o'rganamiz — keyingi darslarda Scratch va kodda amalga oshiramiz.

2. Algoritmni qanday yozish?

3 ta usul:

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

(Keyingi darsda batafsil)

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

INPUT yosh
INPUT ism

3. Output berish

PRINT "Salom!"
PRINT ism
DISPLAY natija

4. Shart (if-else)

IF yosh >= 18:
    PRINT "Kattalar"
ELSE:
    PRINT "Bola"

5. Sikl (loop)

FOR i FROM 1 TO 10:
    PRINT i

WHILE shart IS TRUE:
    bajar narsa

REPEAT 5 TIMES:
    bajar narsa

6. Funksiya

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

CALL qoshish(5, 3)  →  natija: 8

4. 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

5. 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.

7. Naqsh 2: Sortlash (Sort)

Bubble Sort

Eng oddiy. 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 (5-oyda).

8. Naqsh 3: Sanash (Counting)

ALGORITHM: Necha ta musbat raqam bor

INPUT: raqamlar ro'yxati
OUTPUT: musbat raqamlar soni

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

9. Naqsh 4: Filtrlash (Filter)

ALGORITHM: Faqat juft raqamlarni olish

INPUT: raqamlar ro'yxati
OUTPUT: yangi ro'yxat — faqat juft

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]

10. Naqsh 5: Jamlash (Aggregation)

ALGORITHM: Yig'indi va o'rtacha

INPUT: raqamlar
OUTPUT: sum, average

SET sum = 0
FOR each n in raqamlar:
    SET sum = sum + n

SET average = sum / LENGTH(raqamlar)

RETURN sum, average

11. Naqsh 6: Aylantirish (Transformation)

ALGORITHM: Har raqamni 2 ga ko'paytirish

INPUT: raqamlar
OUTPUT: yangi ro'yxat

SET result = []
FOR each n in raqamlar:
    APPEND (n * 2) TO result
RETURN result

Misol: [1, 2, 3, 4] → [2, 4, 6, 8]

12. Murakkab algoritm: Eng tez yo'l

Vazifa: Yandex Maps qanday eng tez yo'lni topadi?

Algoritm: Dijkstra's Algorithm (juda murakkab)

Tushuncha:

Toshkent → Angren:

  • Yo'l 1: A→D = 5 soat
  • Yo'l 2: A→B→D = 2+1 = 3 soat
  • Yo'l 3: A→C→D = 3+2 = 5 soat

Eng tez: Yo'l 2 (3 soat).

Real Yandex Maps har sekundda millionlab bunday hisoblar qiladi.

13. Algoritm tekshirish

Yaxshi algoritm — trace qila olish (har qadamda nima bo'lishini ko'rsatish).

Misol: Bubble Sort'ni qo'lda trace qiling.

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.

14. Real-world misol: Email spam filter

ALGORITHM: Spam aniqlash

INPUT: email
OUTPUT: SPAM yoki INBOX

SET spam_words = ["winner", "free", "money", "click here", "urgent"]
SET score = 0

FOR each word in email.text:
    IF word IS IN spam_words:
        SET score = score + 1

IF email.sender IS UNKNOWN:
    SET score = score + 2

IF email.subject CONTAINS uppercase letters > 50%:
    SET score = score + 1

IF score >= 3:
    RETURN SPAM
ELSE:
    RETURN INBOX

Real spam filter ko'p murakkabroq, lekin g'oya shu.

Darsdagi topshiriqlar

Topshiriq 1 — Eng katta uch ta

Pseudocode yozing:

"Ro'yxatda 100 ta raqam bor. Eng katta uch ta ni toping."

Pseudocode:

SET ro'yxat = [100 ta raqam]
SET eng_kattalar = ?

??? Algoritm yozing

Topshiriq 2 — 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 3 — 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 4 — 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 5 — 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 6 — Spam filter

O'zingizning spam filter algoritmingizni yozing:

  • Qanday so'zlar — spam belgisi?
  • Qaysi belgilar — ehtimollik oshiradi?
  • Qanday score sistemasi?
  • Qaysi chegara — SPAM/INBOX?

Pseudocode shaklida yozing.

Topshiriq 7 — Trace

Quyidagi algoritm berilgan:

SET arr = [3, 1, 4, 1, 5, 9, 2, 6]
SET total = 0
FOR each n in arr:
    IF n > 3:
        SET total = total + n
PRINT total

Trace qiling (qadam-baqadam yozing) — total qiymati qanday o'zgaradi?

Yakuniy javob qancha?

Topshiriq 8 — O'z algoritmingizni o'ylab toping

Quyidagi muammolardan biri uchun algoritm yozing:

  1. Telegram'da spam guruhlarni aniqlash
  2. YouTube'da videolarni tartiblash (eng yangi → eski)
  3. Tinder uslubidagi taqqoslash algoritmi
  4. Restoran menyusidan eng arzon to'liq ovqat (asosiy + ichimlik) tanlash
  5. GPS'da yo'l ko'rsatkichi (oddiy variant)

Pseudocode + diagram (oddiy chizmacha).

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
TraceAlgoritmni qadam-baqadam kuzatish
SwapIkki qiymatni almashtirish
MODQoldiq (modulo)
APPENDRo'yxatga qo'shish
LENGTHHajm (uzunlik)

Keyingi dars

4-dars: Flowchart va dasturlash mantig'i →

Master IT o'quv markazi — o'qitish rejasi