Standardy pro pseudo kód?

hlasů
24

Musím překládat některé Python a Java rutiny do pseudokódu pro mé diplomové práce, ale mají problém přijít s syntaxe / stylu, který je:

  • důsledný
  • snadno pochopitelné
  • není příliš upovídaný
  • ne příliš blízko k přirozenému jazyku
  • ne příliš blízko nějakého konkrétního programovacího jazyka.

Jak se vám psát pseudo kód? Existují nějaké standardní doporučení?

Položena 20/02/2010 v 10:58
zdroj uživatelem
V jiných jazycích...                            


7 odpovědí

hlasů
16

Já doporučuji při pohledu na „Úvod do algoritmů“ kniha (podle CORMEN, Leiserson a Rivestem). Vždy jsem našel její popis pseudo-code algoritmů velmi jasné a konzistentní.

Příklad:

DIJKSTRA(G, w, s)
1  INITIALIZE-SINGLE-SOURCE(G, s)
2  S ← Ø
3  Q ← V[G]
4  while Q ≠ Ø
5      do u ← EXTRACT-MIN(Q)
6         S ← S ∪{u}
7         for each vertex v ∈ Adj[u]
8             do RELAX(u, v, w)
Odpovězeno 20/02/2010 v 11:03
zdroj uživatelem

hlasů
4

V případě, že kód je procedurální normální pseudo-kód je pravděpodobně snadno (Wikipedia má několik příkladů).

Objektově orientovaný pseudo-kód může být obtížnější. Zvážit:

  • s použitím tříd diagramy UML líčit tříd / dědičnost
  • pomocí UML sekvenční diagramy pro znázornění sekvence kódu
Odpovězeno 20/02/2010 v 11:05
zdroj uživatelem

hlasů
5

Navrhuji, abyste se podívat na pevnost programovací jazyk .

Jedná se o skutečný programovací jazyk, a ne pseudokód, ale to byl navržen tak, aby byl co nejblíže k spustitelný pseudokódu jak je to možné. Zejména pro navrhování syntaxi, čtou a analyzují stovky z CS a matematické papíry, kurzů, knih a časopisů najít společné vzorce využití pro pseudocode a dalších výpočetních / matematické notace.

Můžete využít všechny ty výzkumu tím, že jen při pohledu na pevnosti zdrojový kód a oddělovat se na věci, které nepotřebují, protože vaše cílová skupina je lidská, zatímco pevnost to je kompilátor.

Zde je skutečný příklad běží pevnost kód z NAS (NASA Advanced Supercomputing) Conjugate Gradient Paralelní Benchmark . Pro zábavu zkušenosti porovnat specifikaci benchmarku s realizací v pevnosti a všimněte si, jak tam je téměř 1: 1 korespondence. Také porovnat realizaci v několika dalších jazyků, jako je C nebo Fortran, a všimněte si, jak oni nemají absolutně nic společného s specifikaci (a jsou také často řádově delší než spec).

Musím zdůraznit: toto není pseudokód, to je skutečný kód pracovní pevnost! Pevnost Příklad kódu http://ProjectFortress.Sun.Com/Projects/Community/raw-attachment/wiki/FortressQuestions/NAS-CG.png

Edit: Nad Příklad kódu link je mrtvá. Možná Podobný příklad lze nalézt zde: https://umbilicus.wordpress.com/2009/10/16/fortress-parallel-by-default/

Odpovězeno 20/02/2010 v 15:33
zdroj uživatelem

hlasů
3

Nechápu svůj požadavek na „ne příliš blízko nějakého konkrétního programovacího jazyka“.

Python je obecně považován za dobrý kandidát pro psaní pseudo-kódu. Možná poněkud zjednodušená verze Pythonu bude pracovat pro vás.

Odpovězeno 20/02/2010 v 15:39
zdroj uživatelem

hlasů
2

Pascal byl vždy tradičně nejvíce podobné pseudokódu, pokud jde o matematických a technických oborech. Nevím proč, bylo to vždycky tak.

Mám nějaké (oh, já nevím, možná 10 knih na polici, které beton tuto teorii).

Python, jak je navrženo, může být pěkné číslo, ale to může být tak nečitelné stejně, že je to zázrak sám o sobě. Starší jazyky jsou těžší, aby nečitelný - nich je „jednodušší“ (vzít s opatrností), než ty dnešní. Budou možná bude těžší pochopit, co se děje, ale čitelnější (méně syntax / funkce jazyka je nezbytné pro pochopení toho, co program dělá).

Odpovězeno 20/02/2010 v 16:15
zdroj uživatelem

hlasů
7

Odpověď na mou vlastní otázku, jen jsem chtěl upozornit na následující internetové stránce o sazbu pseudo kód v LaTeXu: http://www.tex.ac.uk/cgi-bin/texfaq2html?label=algorithms . Popisují řadu různých stylů, výpis výhod a nevýhod. Mimochodem, není náhodou, že existují dva styly pro psaní pseudo kódu ve způsobu použitý v „Introductin algoritmy“ by CORMEN, jak je doporučeno výše: newalg a clrscode. Ten napsal CORMEN sám.

Odpovězeno 25/02/2010 v 15:08
zdroj uživatelem

hlasů
0

Tento příspěvek je starý, ale doufejme, že to bude pomáhat ostatním.

„Úvod do algoritmů“ kniha (o CORMEN, Leiserson a Rivestem) je dobrá kniha na čtení o algoritmech, ale „pseudo-code“ je hrozné. Věci, jako je Q [1 ... n] je nesmysl, když je třeba porozumět tomu, co Q [1 ... n] se má znamenat. Který bude muset být uvedeno mimo „pseudo-kódu.“ Navíc knihy jako „Úvod do algoritmů“ chtěli používat matematický syntaxi, která je porušuje jeden účel pseudo-kódu.

Pseudo-kód by měl udělat dvě věci. Abstrakt od syntaxe a musí být snadno čitelné. Pokud skutečný kód je výstižnější než pseudo-kódu a skutečné číslo je více popisný, pak to není pseudo-code.

Řekněme, že jste psali jednoduchý program.

Design Screen:

Welcome to the Consumer Discount Program!
Please enter the customers subtotal: 9999.99
The customer receives a 10 percent discount
The customer receives a 20 percent discount
The customer does not receive a discount
The customer's total is: 9999.99

Variable List:

TOTAL:         double
SUB_TOTAL:     double
DISCOUNT:      double

Pseudo kód:

DISCOUNT_PROGRAM

    Print "Welcome to the Consumer Discount Program!"
    Print "Please enter the customers subtotal:"
    Input SUB_TOTAL

    Select the case for SUB_TOTAL
        SUB_TOTAL > 10000 AND SUB_TOTAL <= 50000
            DISCOUNT = 0.1
            Print "The customer receives a 10 percent discount"
        SUB_TOTAL > 50000
            DISCOUNT = 0.2
            Print "The customer receives a 20 percent discount"
        Otherwise
            DISCOUNT = 0
            Print "The customer does not a receive a discount"

    TOTAL = SUB_TOTAL - (SUB_TOTAL * DISCOUNT)
    Print "The customer's total is:", TOTAL

Všimněte si, že toto je velmi dobře čitelný a neodkazuje na žádnou syntaxi. To podporuje všechny tři Böhma a Jacopini v řídicích struktur.

Sekvence:

Print "Some stuff"
VALUE = 2 + 1
SOME_FUNCTION(SOME_VARIABLE)

Výběr:

if condition
    Do one extra thing

if condition
    do one extra thing
else
    do one extra thing

if condition
    do one extra thing
else if condition
    do one extra thing
else
    do one extra thing

Select the case for SYSTEM_NAME
    condition 1
        statement 1
    condition 2
        statement 2
    condition 3
        statement 3
    otherwise
        statement 4

Opakování:

while condition
    do stuff

for SOME_VALUE TO ANOTHER_VALUE
    do stuff

porovnat, že na tuto N-královen „pseudo-kódu“ ( https://en.wikipedia.org/wiki/Eight_queens_puzzle ):

PlaceQueens(Q[1 .. n],r)

    if r = n + 1
        print Q
    else
        for j ← 1 to n
            legal ← True
            for i ← 1 to r − 1
                if (Q[i] = j) or (Q[i] = j + r − i) or (Q[i] = j − r + i)
                    legal ← False
        if legal
            Q[r] ← j
            PlaceQueens(Q[1 .. n],r + 1) 

Pokud nemůžete to vysvětlit jednoduše, vy to nechápete to dost dobře. - Albert Einstein

Odpovězeno 11/01/2019 v 15:02
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more