Во информатиката, псевдокодот е опис на чекорите во алгоритам со користење на природен јазик и/или мешавина од знаци на програмски јазици (како оператор за доделување или „=“, условен оператор, loop и др. ).[1] [2] Иако псевдокодот споделува карактеристики со редовните програмски јазици, тој е наменет за читање од луѓе, а не од компјутерот. [3]Целта на користењето на псевдокодот е полесно да го разберат луѓето од кодот на програмскиот јазик и дека е и ефикасен. Најчесто се користи во учебници и научни публикации за документирање на алгоритми и при планирање на софтвер и други алгоритми.

Употреба

уреди

Учебниците и научните публикации поврзани со компјутерски науки и бројчаното (нумеричко) пресметување често користат псевдокод во описот на алгоритмите, така што сите програмери можат да ги разберат, дури и ако не ги знаат сите исти програмски јазици.

Програмер кој треба да имплементира специфичен алгоритам, особено непознат, често ќе започне со опис на псевдокод, а потоа ќе го „преведе“ тој опис во целниот програмски јазик и ќе го измени за правилно да раководи со остатокот од програмата.

Синтакса

уреди

Псевдокодот генерално не ги почитува синтаксните правила на било кој јазик; не постои основна и стандардна форма. [4] [5] Некои синтаксни извори вклучуваат Fortran, Pascal, BASIC, C, C++, Java, Lisp и ALGOL . Одредувањето на променливите обично се испуштаат. Блоковите од код, како што е кодот содржан во „loop" (циклус), често се заменуваат со реченица од природен јазик.

Пример за псевдокод (од играта „fizz buzz“)

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) и структура на избор во еден израз:

Return  

Почести математички симболи

уреди
Вид на работа Симбол Пример
Доделување ← или := c ← 2π r, c := 2π r
Споредба =, ≠, <, >, ≤, ≥
Аритметика +, −, ×, /, mod
Под/таван -тип загради ⌊, ⌋, ⌈, ⌉ a ← ⌊ b ⌋ + ⌈ c
Логично and, or
Суми, производи Σ Π h ← Σ aA 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

Наводи

уреди
  1. Reisig 2007.
  2. 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"
  3. Ulate-Caballero, Bryan Alexander; Berrocal-Rojas, Allan; Hidalgo-Céspedes, Jeisson (2021). „Concurrent and Distributed Pseudocode: A Systematic Literature Review“. 2021 XLVII Latin American Computing Conference (CLEI). стр. 1–10. doi:10.1109/CLEI53233.2021.9640222. ISBN 978-1-6654-9503-5.
  4. McConnell, Steve (2004). Code Complete. Pearson Education. стр. 54. ISBN 978-0-7356-1967-8. Avoid syntactic elements from the target programming language
  5. Invitation to Computer Science, 8th Edition by Schneider/Gersting, "Keep statements language independent" as quoted in this stackexchange question