Pseudocode — algorithm 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
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:
- request processing;
- retry;
- scheduling;
- transaction;
- cache invalidation;
- access control
mantiqini tushuntirish uchun ishlatiladi.
U implementation o‘zgarganda yangilanmasa, eskirgan hujjatga aylanadi.
Pseudocode va haqiqiy kod
Pseudocode:
- compiler tomonidan bajarilmaydi;
- type va syntaxni to‘liq tekshirmaydi;
- library detailini yashiradi;
- algorithm fikrini ko‘rsatadi.
Haqiqiy kod:
- exact syntax;
- error handling;
- data type;
- performance;
- integration;
- test
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