Standards für Pseudo-Code?

stimmen
24

Ich brauche ein paar Python und Java-Routinen in Pseudo-Code für meine Diplomarbeit zu übersetzen, aber Schwierigkeiten haben, mit einer Syntax / Stil kommen, das ist:

  • konsistent
  • einfach zu verstehen
  • nicht zu ausführlich
  • Auch nicht in der Nähe der natürlichen Sprache
  • nicht zu nahe Sprache zu einigen konkreten Programmierung.

Wie schreiben Sie Pseudo-Code? Gibt es irgendwelche Standard-Empfehlungen?

Veröffentlicht am 20/02/2010 um 10:58
quelle vom benutzer
In anderen Sprachen...                            


7 antworten

stimmen
16

Ich empfehle Blick auf die "Introduction to Algorithms" Buch (von Cormen, Leiserson und Rivest). Ich habe immer seine Pseudo-Code-Beschreibung von Algorithmen sehr klar und konsistent gefunden.

Ein Beispiel:

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)
Beantwortet am 20/02/2010 um 11:03
quelle vom benutzer

stimmen
4

Wenn der Code prozedurale normaler Pseudo-Code ist wahrscheinlich einfach (Wikipedia einige Beispiele hat).

Objektorientierte Pseudo-Code könnte schwieriger sein. Erwägen:

  • Verwendung von UML-Klassendiagramme, die die Klassen darzustellen / inheritence
  • UML Sequenzdiagramme unter Verwendung der Sequenz von Code abzubilden
Beantwortet am 20/02/2010 um 11:05
quelle vom benutzer

stimmen
5

Ich schlage vor , Sie einen Blick auf die nehmen Fortress Programming Language .

Dies ist eine aktuelle Programmiersprache und nicht Pseudo - Code, aber es wurde entworfen , so nah an ausführbarem Pseudo - Code wie möglich zu sein. Insbesondere die Syntax für die Gestaltung, die sie lesen und analysiert Hunderte von CS und Mathematik Papiere, Kurse, Bücher und Zeitschriften zu gemeinsamen Nutzungsmuster für Pseudo - Code und andere Rechen / mathematische Notationen zu finden.

Sie können bei einem Blick auf Festung Quellcode alle, dass die Forschung nutzen und die Dinge, die Sie nicht brauchen abstrahieren, da Ihre Zielgruppe Mensch ist, während Fortress ein Compiler ist.

Hier ist ein tatsächliches Beispiel Fortress Code aus der laufenden NAS (NASA Erweitert Supercomputing) Conjugate Gradient Parallel Benchmark . Für eine lustige Erfahrung, vergleichen Sie die Spezifikation der Benchmark mit der Umsetzung in Fortress und merken , wie es fast eine 1: 1 Korrespondenz. Vergleichen Sie auch die Umsetzung in ein paar anderen Sprachen wie C oder Fortran, und merkt , wie sie absolut nichts mit der Spezifikation (und sind auch oft eine Größenordnung länger als die Spezifikation) zu tun.

Ich muss betonen: Dies ist nicht Pseudo - Code ist, ist diese tatsächliche Arbeits Fortress - Code! Fortress Codebeispiel http://ProjectFortress.Sun.Com/Projects/Community/raw-attachment/wiki/FortressQuestions/NAS-CG.png

Edit: Above Codebeispiel Link ist tot. Möglicherweise ähnliches Beispiel ist hier zu finden: https://umbilicus.wordpress.com/2009/10/16/fortress-parallel-by-default/

Beantwortet am 20/02/2010 um 15:33
quelle vom benutzer

stimmen
3

Ich verstehe nicht, Ihre Anforderung von „nicht zu nahe an einigen konkreten Programmiersprache“.

Python ist in der Regel als ein guter Kandidat als Pseudo-Code für das Schreiben. Vielleicht eine etwas vereinfachte Version von Python für Sie arbeiten würde.

Beantwortet am 20/02/2010 um 15:39
quelle vom benutzer

stimmen
2

Pascal ist seit jeher traditionell die am ähnlichsten Pseudo-Code, wenn es um die mathematischen und technischen Bereich kommt. Ich weiß nicht, warum, es war einfach immer so.

Ich habe einige (oh, ich weiß nicht, 10 vielleicht Bücher auf einem Regal, die konkrete diese Theorie).

Python, wie vorgeschlagen, kann schön Code sein, es kann aber auch so nicht lesbar sein, dass es von selbst ein Wunder ist. Ältere Sprachen sind schwerer zu unlesbar zu machen - sie ist „einfacher“ (mit Vorsicht nehmen) als die heutigen diejenigen. Sie werden vielleicht schwieriger zu verstehen, was los ist, aber leichter zu lesen (weniger Syntax / Sprache Features benötigt wird, zu verstehen, was das Programm tut).

Beantwortet am 20/02/2010 um 16:15
quelle vom benutzer

stimmen
7

Die Beantwortung meiner Frage, ich wollte nur die Aufmerksamkeit auf die folgende Webseite ziehen über Pseudo - Code in LaTeX Satz: http://www.tex.ac.uk/cgi-bin/texfaq2html?label=algorithms . Sie beschreiben eine Reihe von verschiedenen Stilen, Auflistung Vor- und Nachteile. Nebenbei bemerkt, geschieht es in der Art und Weise für das Schreiben von Pseudo - Code zwei Sheets existieren in „Introductin to Algorithms“ von Cormen verwendet wird , wie oben empfohlen: newalg und clrscode. Letztere wurde durch Cormen selbst geschrieben.

Beantwortet am 25/02/2010 um 15:08
quelle vom benutzer

stimmen
0

Dieser Beitrag ist alt, aber hoffentlich wird dies anderen helfen.

"Introduction to Algorithms" Buch (von Cormen, Leiserson und Rivest) ist ein gutes Buch über Algorithmen zu lesen, aber der "Pseudo-Code" ist schrecklich. Dinge wie Q [1 ... n] ist Unsinn, wenn man muss verstehen, was Q [1 ... n] ist wohl zu bedeuten. Welche müssen außerhalb des zu beachten, „Pseudo-Code.“ Darüber hinaus Bücher wie „Introduction to Algorithms“ wie eine mathematische Syntax zu verwenden, die einen Zweck von Pseudo-Code verstoßen.

Pseudo-Code sollte zwei Dinge tun. Auszug aus Syntax entfernt und leicht zu lesen. Wenn die tatsächliche Code beschreibender als der Pseudo-Code ist, und die tatsächliche Code ist mehr beschreibend, dann ist es nicht Pseudo-Code.

Angenommen, Sie waren ein einfaches Programm zu schreiben.

Screen-Design:

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

Variablenliste:

TOTAL:         double
SUB_TOTAL:     double
DISCOUNT:      double

Pseudo-Code:

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

Beachten Sie, dass diese sehr leicht zu lesen und Referenz keine Syntax. Dies unterstützt alle drei Bohm und Jacopini der Kontrollstrukturen.

Sequenz:

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

Auswahl:

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

Wiederholung:

while condition
    do stuff

for SOME_VALUE TO ANOTHER_VALUE
    do stuff

Vergleichen , die zu diesem N-Queens "Pseudo-Code" ( 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) 

Wenn Sie es einfach nicht erklären kann, verstehen Sie es nicht gut genug. - Albert Einstein

Beantwortet am 11/01/2019 um 15:02
quelle vom benutzer

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