Bosh sahifa Wiki Pseudocode

Pseudocode

Pseudocodealgorithm yoki dastur mantiqini aniq bir dasturlash tili syntaxiga bog‘lamasdan yozish usuli.

U tabiiy til va programming konstruksiyalarini birlashtiradi. Maqsad kodning kompilyatsiya qilinishi emas, algorithmning odam tomonidan tez tushunilishi.

Pseudocode dars, texnik hujjat, algorithm loyihalash va code review oldidan ishlatiladi.

Xususiyatlari

Pseudocode:

  • tilga bog‘liq emas;
  • qat’iy universal syntaxga ega emas;
  • qadamlarni aniq ifodalaydi;
  • ortiqcha texnik detallarni yashiradi;
  • input, output va control flowni ko‘rsatadi;
  • keyinchalik kodga aylantiriladi.

Oddiy misol

Ikki sonning kattasini topish:

FUNCTION Maximum(A, B)
    IF A > B
        RETURN A
    ELSE
        RETURN B
END FUNCTION

Bu yozuv Python, Java yoki C syntaxining aynan o‘zi emas, ammo mantiq tushunarli.

Assignment

Qiymat berish uchun:

sum ← 0

yoki:

sum = 0

ishlatilishi mumkin.

Taqqoslash va assignment aralashmasligi uchun belgisi qulay.

Input va output

READ name
PRINT "Hello", name

Yoki:

name ← INPUT()
OUTPUT(name)

Loyiha ichida bitta uslub izchil saqlanadi.

Shart

IF score >= 90
    grade ← "A"
ELSE IF score >= 80
    grade ← "B"
ELSE
    grade ← "C"
END IF

Indentation block chegarasini ko‘rsatadi.

END IF yozish murakkab nested shartlarda aniqlikni oshiradi.

For loop

FOR i ← 1 TO 10
    PRINT i
END FOR

Massiv elementlarini yurish:

FOR EACH item IN items
    PROCESS item
END FOR

While loop

WHILE balance > 0
    balance ← balance - payment
END WHILE

Loop ichida shartga ta’sir qiluvchi progress bo‘lishi kerak.

Repeat-until

REPEAT
    value ← READ()
UNTIL value > 0

Bu loop tanasi kamida bir marta bajariladi.

Funksiya

FUNCTION Square(number)
    RETURN number × number
END FUNCTION

Procedure natija qaytarmasligi mumkin:

PROCEDURE SaveReport(report)
    WRITE report TO FILE
END PROCEDURE

Array

numbers ← [4, 8, 15, 16, 23, 42]
PRINT numbers[0]

Index 0 yoki 1dan boshlanishi aniq ko‘rsatiladi. Universal pseudocode standardi yo‘q.

Record va object

user.name ← "Farrukh"
user.active ← TRUE

Murakkab data strukturani faqat algorithm uchun kerakli fieldlar bilan ifodalash yetarli.

Stack amali

PUSH stack, value
value ← POP stack

Queue:

ENQUEUE queue, value
value ← DEQUEUE queue

Standard atama data structurenig ma’nosini tez yetkazadi.

Error handling

IF file DOES NOT EXIST
    RETURN ERROR "File not found"
END IF

Yoki:

TRY
    data ← READ FILE
CATCH error
    LOG error
    RETURN FAILURE
END TRY

Pseudocode faqat happy path bilan cheklanmasligi kerak, agar error algorithmning muhim qismi bo‘lsa.

Precondition va postcondition

PRECONDITION: numbers is sorted
POSTCONDITION: returns index or NOT_FOUND

Bu function qaysi shartda to‘g‘ri ishlashini aniq qiladi.

Binary search misoli

FUNCTION BinarySearch(numbers, target)
    left ← 0
    right ← LENGTH(numbers) - 1

    WHILE left <= right
        middle ← FLOOR((left + right) / 2)

        IF numbers[middle] = target
            RETURN middle
        ELSE IF numbers[middle] < target
            left ← middle + 1
        ELSE
            right ← middle - 1
        END IF
    END WHILE

    RETURN NOT_FOUND
END FUNCTION

Precondition — numbers sorted bo‘lishi kerak.

Recursion

Factorial:

FUNCTION Factorial(n)
    IF n <= 1
        RETURN 1
    END IF

    RETURN n × Factorial(n - 1)
END FUNCTION

Base case va recursive progress ko‘rinib turadi.

Pseudocode darajasi

Pseudocode juda umumiy bo‘lishi mumkin:

VALIDATE request
SAVE data
SEND notification

Yoki batafsil:

IF request.email is empty
    RETURN validation error
END IF

Kerakli detail darajasi auditoriyaga bog‘liq.

Til syntaxini ko‘chirmaslik

Pseudocode aniq bir til kodiga juda o‘xshab ketsa, boshqa til biladigan o‘quvchi uchun ortiqcha syntax paydo bo‘ladi.

Masalan, memory management, import, annotation va framework methodlari algorithm mohiyatiga kerak bo‘lmasa yozilmaydi.

Tabiiy til bilan muvozanat

Juda tabiiy matn noaniq bo‘lishi mumkin:

Ma’lumotlarni yaxshilab tekshir.

Yaxshiroq:

FOR EACH record
    IF record.id is empty
        MARK record AS invalid
    END IF
END FOR

Naming

O‘zgaruvchi nomlari ma’noli bo‘ladi:

  • totalPrice;
  • currentNode;
  • isValid;
  • retryCount.

x, a1, temp2 faqat matematik yoki juda lokal ma’noda ishlatiladi.

Indentation

Indentation control structure’larni ko‘rsatadi.

IF user is active
    FOR EACH role IN user.roles
        PRINT role
    END FOR
END IF

Noto‘g‘ri indentation algorithm talqinini o‘zgartirishi mumkin.

Comment

Murakkab qaror qisqa izoh bilan tushuntiriladi:

// Eng kichik hali tanlanmagan masofani olamiz
node ← EXTRACT_MIN(queue)

Comment qadamning o‘zini takrorlamaydi, sababini tushuntiradi.

Algorithm tahlili

Pseudocode time va space complexity hisoblash uchun qulay.

Nested loop:

FOR i ← 1 TO n
    FOR j ← 1 TO n
        PROCESS(i, j)

O(n²) amal bajaradi.

Pseudocode va flowchart

Jihat Pseudocode Flowchart
Format Matn Diagramma
Version control Qulay Qiyinroq
Katta algorithm Ixcham Katta bo‘lib ketadi
Vizual yo‘l Kamroq Kuchli
Kodga aylantirish Oson Qo‘shimcha talqin

Hujjatlash

Pseudocode architecture documentda:

mantiqini tushuntirish uchun ishlatiladi.

U implementation o‘zgarganda yangilanmasa, eskirgan hujjatga aylanadi.

Pseudocode va haqiqiy kod

Pseudocode:

Haqiqiy kod:

talab qiladi.

Tekshirish

Pseudocode ko‘rib chiqilganda:

  • barcha input holati;
  • termination;
  • shart chegarasi;
  • empty collection;
  • duplicate;
  • error;
  • return value;
  • complexity;
  • naming

tekshiriladi.

Noaniq qadam kod yozishdan oldin aniqlashtiriladi.

Bog‘liq tushunchalar

Algorithm, Flowchart, Control flow, Function, Loop, Condition, Recursion, Time complexity, Data structure