Псевдокод
Во информатиката, псевдокодот е опис на чекорите во алгоритам со користење на природен јазик и/или мешавина од знаци на програмски јазици (како оператор за доделување или „=“, условен оператор, loop и др. ).Предлошка:Sfn [1] Иако псевдокодот споделува карактеристики со редовните програмски јазици, тој е наменет за читање од луѓе, а не од компјутерот. [2]Целта на користењето на псевдокодот е полесно да го разберат луѓето од кодот на програмскиот јазик и дека е и ефикасен. Најчесто се користи во учебници и научни публикации за документирање на алгоритми и при планирање на софтвер и други алгоритми.
Употреба
Учебниците и научните публикации поврзани со компјутерски науки и бројчаното (нумеричко) пресметување често користат псевдокод во описот на алгоритмите, така што сите програмери можат да ги разберат, дури и ако не ги знаат сите исти програмски јазици.
Програмер кој треба да имплементира специфичен алгоритам, особено непознат, често ќе започне со опис на псевдокод, а потоа ќе го „преведе“ тој опис во целниот програмски јазик и ќе го измени за правилно да раководи со остатокот од програмата.
Синтакса
Псевдокодот генерално не ги почитува синтаксните правила на било кој јазик; не постои основна и стандардна форма. [3] [4] Некои синтаксни извори вклучуваат Fortran, Pascal, BASIC, C, C++, Java, Lisp и ALGOL . Одредувањето на променливите обично се испуштаат. Блоковите од код, како што е кодот содржан во „loop" (циклус), често се заменуваат со реченица од природен јазик.
|
Pascal стил: procedure fizzbuzz;
for i := 1 to 100 do
print_number := true;
if i is divisible by 3 then begin
print "Fizz";
print_number := false;
end;
if i is divisible by 5 then begin
print "Buzz";
print_number := false;
end;
if print_number, print i;
print a newline;
end
|
C стил: fizzbuzz() {
for (i = 1; i <= 100; i++) {
print_number = true;
if (i is divisible by 3) {
print "Fizz";
print_number = false;
}
if (i is divisible by 5) {
print "Buzz";
print_number = false;
}
if (print_number) print i;
print a newline;
}
}
|
Python стил: def fizzbuzz():
for i in range(1,101):
print_number = true
if i is divisible by 3:
print "Fizz"
print_number = false
if i is divisible by 5:
print "Buzz"
print_number = false
if print_number: print i
print a newline
|
Псевдокод во математички стил
Кај бројчаното (нумеричко) пресметување, псевдокодот се состои најчесто од теории на матрици и множества, а можеби и од описи на природни јазици и често се употребува како начин за опишување на математички алгоритми . На пример, операторот „збир“ (sum) ( голема сигма буква ) или операторот на производ ( голема пи буква ) може да претставува за-циклус (for-loop) и структура на избор во еден израз:
Предлошка:Безпрелом
Почести математички симболи
| Вид на работа | Симбол | Пример |
|---|---|---|
| Доделување | ← или := | c ← 2π r, c := 2π r
|
| Споредба | =, ≠, <, >, ≤, ≥ | |
| Аритметика | +, −, ×, /, mod | |
| Под/таван -тип загради | ⌊, ⌋, ⌈, ⌉ | a ← ⌊ b ⌋ + ⌈ c ⌉
|
| Логично | and, or | |
| Суми, производи | Σ Π | h ← Σ a ∈ A 1/ a
|
Пример
Следното е пример за псевдокод во математички стил, за Форд-Фулкерсоновиот алгоритам :
algorithm ford-fulkerson is
input: Graph G with flow capacity c,
source node s,
sink node t
output: Flow f such that f is maximal from s to t
(Note that f(u,v) is the flow from node u to node v, and c(u,v) is the flow capacity from node u to node v)
for each edge (u, v) in GE do
f(u, v) ← 0
f(v, u) ← 0
while there exists a path p from s to t in the residual network Gf do
let cf be the flow capacity of the residual network Gf
cf(p) ← min{cf(u, v) | (u, v) in p}
for each edge (u, v) in p do
f(u, v) ← f(u, v) + cf(p)
f(v, u) ← −f(u, v)
return f
Наводи
- ↑ An often-repeated definition of pseudocode since at least 2003 is "a detailed yet readable description of what a computer program or algorithm must do, expressed in a formally-styled natural language"
- ↑ Предлошка:Наведена книга
- ↑ Предлошка:Наведена книга
- ↑ Invitation to Computer Science, 8th Edition by Schneider/Gersting, "Keep statements language independent" as quoted in this stackexchange question