Pseudo kód - Pseudocode

Ve vědě o počítačích , pseudokód je prostý jazyk popis kroků k algoritmu nebo jiného systému. Pseudokód často používá strukturální konvence běžného programovacího jazyka , ale je určen spíše pro čtení člověkem než pro strojové čtení. Obvykle vynechává detaily, které jsou nezbytné pro strojové porozumění algoritmu, například deklarace proměnných a kód specifický pro jazyk. Programovací jazyk je doplněn o detaily popisu přirozeného jazyka , kde je to vhodné, nebo o kompaktní matematický zápis . Účelem používání pseudokódu je to, že je lidem srozumitelnější než konvenční kód programovacího jazyka a že je to efektivní a na prostředí nezávislý popis klíčových principů algoritmu. Běžně se používá v učebnicích a vědeckých publikacích k dokumentaci algoritmů a při plánování softwaru a dalších algoritmů.

Neexistuje žádný široký standard pro syntaxi pseudokódů , protože program v pseudokódu není spustitelný program, nicméně existují určité omezené standardy (například pro akademické hodnocení). Pseudokód připomíná kostrové programy , které lze kompilovat bez chyb. Vývojové diagramy , drakonové diagramy a grafy UML ( Unified Modeling Language ) lze považovat za grafickou alternativu k pseudokódu, ale potřebují více místa na papíře. Jazyky, jako je HAGGIS, překlenují propast mezi pseudokódem a kódem napsaným v programovacích jazycích.

aplikace

Učebnice a vědecké publikace související s počítačovou vědou a numerickými výpočty často používají pseudokód při popisu algoritmů, takže jim mohou porozumět všichni programátoři, i když všichni neznají stejné programovací jazyky. V učebnicích je obvykle průvodní úvod vysvětlující konkrétní používané konvence. Úroveň podrobnosti pseudokódu se v některých případech může blížit formalizovaným obecným jazykům.

Programátor , který potřebuje realizovat specifický algoritmus, obzvláště neznámý, bude často začínat popisem pseudokódu, a pak „překládat“ ten popis do cílového programovacího jazyka a modifikovat to správně komunikovat se zbytkem programu. Programátoři mohou také zahájit projekt načrtnutím kódu v pseudokódu na papíře před jeho napsáním v jeho skutečném jazyce, jako strukturační přístup shora dolů , s procesem kroků, které je třeba dodržovat.

Syntax

Pseudokód obecně ve skutečnosti nedodržuje pravidla syntaxe žádného konkrétního jazyka; neexistuje systematický standardní formulář. Někteří autoři si půjčují styl a syntaxi z řídicích struktur z nějakého konvenčního programovacího jazyka, i když se to nedoporučuje. Některé zdroje syntaxe zahrnují Fortran , Pascal , BASIC , C , C ++ , Java , Lisp a ALGOL . Deklarace proměnných se obvykle vynechávají. Volání funkcí a bloky kódu, jako je kód obsažený ve smyčce, jsou často nahrazeny jednořádkovou větou v přirozeném jazyce.

V závislosti na autorovi se proto pseudokód může velmi lišit stylem, od téměř přesné imitace skutečného programovacího jazyka v jednom extrému až po popis blížící se formátované próze v druhém.

Toto je příklad pseudokódu (pro fizz buzz matematické hry ):

Pseudokód ve stylu Fortran:

program fizzbuzz
  Do i = 1 to 100 
    set print_number to true
    If i is divisible by 3
      print "Fizz"
      set print_number to false
    If i is divisible by 5
      print "Buzz" 
      set print_number to false
    If print_number, print i
    print a newline
  end do

Pseudokód ve stylu Pascal:

procedure fizzbuzz
  For i := 1 to 100 do
    set print_number to true;
    If i is divisible by 3 then
      print "Fizz";
      set print_number to false;
    If i is divisible by 5 then
      print "Buzz";
      set print_number to false;
    If print_number, print i;
    print a newline;
  end

Pseudokód ve stylu C:

void function fizzbuzz {
  for (i = 1; i <= 100; i++) {
    set print_number to true;
    If i is divisible by 3 {
      print "Fizz";
      set print_number to false; }
    If i is divisible by 5 {
      print "Buzz";
      set print_number to false; }
    If print_number, print i;
    print a newline;
  }
}

Strukturovaný základní styl pseudokódu:

Sub fizzbuzz()
  For i = 1 to 100
    print_number = True
    If i is divisible by 3 Then
      Print "Fizz"
      print_number = False
    End If
    If i is divisible by 5 Then
      Print "Buzz"
      print_number = False
    End If
    If print_number = True Then print i
    Print a newline
  Next i
End Sub

Pseudokód v matematickém stylu

V numerických výpočtech se pseudokód často skládá z matematického zápisu , typicky z množinové a maticové teorie, smíchaného s řídicími strukturami konvenčního programovacího jazyka a možná také s popisy přirozeného jazyka . Jedná se o kompaktní a často neformální zápis, kterému rozumí široká škála matematicky vyškolených lidí a často se používá jako způsob popisu matematických algoritmů . Například operátor součtu ( značení kapitál-sigma ) nebo součin operátor ( zápis velkého písmene ) může představovat smyčku pro a výběrovou strukturu v jednom výrazu:

Return 

Obvykle se pro matematické rovnice používá sazba, která není ASCII , například pomocí značkovacích jazyků, jako je TeX nebo MathML , nebo proprietárních editorů vzorců .

Pseudokód v matematickém stylu je někdy označován jako pidgin kód , například pidgin ALGOL (původ konceptu), pidgin Fortran , pidgin BASIC , pidgin Pascal , pidgin C a pidgin Lisp .

Běžné matematické symboly

Typ operace Symbol Příklad
Úkol ← nebo: = c ← 2πr, c := 2πr
Srovnání =, ≠, <,>, ≤, ≥
Aritmetický +, -, ×, /, mod
Podlaha/strop ⌊, ⌋, ⌈, ⌉ a ← ⌊b⌋ + ⌈c
Logický a , nebo
Částky, produkty Σ Π h ← ΣaA 1/a

Příklad

Následuje delší příklad pseudokódu v matematickém stylu pro algoritmus Ford – Fulkerson :

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

Strojová kompilace jazyků ve stylu pseudokódů

Gramatika přirozeného jazyka v programovacích jazycích

Různé pokusy o vnesení prvků gramatiky přirozeného jazyka do počítačového programování přinesly programovací jazyky jako HyperTalk , Lingo , AppleScript , SQL , Inform a do jisté míry Python . V těchto jazycích jsou závorky a další speciální znaky nahrazeny předložkami, což má za následek docela hovorný kód. Tyto jazyky jsou typicky dynamicky zadávány , což znamená, že deklarace proměnných a další standardní kód lze vynechat. Takové jazyky mohou člověku bez znalosti jazyka usnadnit porozumění kódu a možná i jeho osvojení. Podobnost s přirozeným jazykem je však obvykle spíše kosmetická než skutečná. Pravidla syntaxe mohou být stejně přísná a formální jako v konvenčním programování a nemusí nutně usnadňovat vývoj programů.

Matematické programovací jazyky

Alternativou k použití matematického pseudokódu (zahrnujícího notaci teorie množin nebo maticových operací) pro dokumentaci algoritmů je použití formálního matematického programovacího jazyka, který je kombinací jiných než ASCII matematických zápisů a struktur řízení programu. Potom může být kód analyzován a interpretován strojem.

Několik jazyků formální specifikace obsahuje notaci teorie množin pomocí speciálních znaků. Příklady jsou:

Některé programovací jazyky pole obsahují vektorizované výrazy a maticové operace jako vzorce jiné než ASCII, smíchané s konvenčními řídicími strukturami. Příklady jsou:

Viz také

Reference

Další čtení

externí odkazy