Wann würde ich Pseudocode anstelle von Flussdiagramm verwenden?


9

Ich bin ein Student, der mit verschiedenen Programmiertechniken arbeitet, und ich bin auf Pseudocode und Flussdiagramm gestoßen. Ich weiß, dass beide verwendet werden, um das Problem vor dem eigentlichen Programmieren zu durchdenken, aber ich habe ein paar Fragen dazu.

  1. Wann würde ich Pseudocode zum Planen verwenden und wann würde ich Flussdiagramme verwenden? Oder ist es besser, beides zu tun, bevor Sie tatsächlich programmieren. Besonders für ein kleines Arcade-Spiel in JAVA, da dies mein nächstes Projekt ist.
  2. Ich habe festgestellt, dass der Pseudocode dem tatsächlichen Code und nicht den Flussdiagrammen sehr ähnlich ist. Würde dies die Pseudocodierung verbessern, da Sie den Pseudocode im Wesentlichen kopieren / in Ihr Programm einfügen (natürlich müssen Sie ihn an die Sprache anpassen. Ich verstehe diesen Teil).
  3. Ist es praktisch, beide beim Programmieren zu verwenden? Besonders das gleiche Spiel, das zuvor erwähnt wurde. Vielen Dank.

Offensichtlich würden Sie keine Flussdiagramme verwenden, in denen Sie keinen Fluss haben - dh für fast alle deklarativen Entitäten.
SK-Logik

1
Ich kann mich nicht erinnern, wann ich das letzte Mal ein Codierungsflussdiagramm gesehen habe. Klassen- und Datenflussdiagramme, Anwendungsfalldiagramme, ja. Aber keine Flussdiagramme. Vielleicht sind sie in der Spieleentwicklung häufiger anzutreffen.
Robert Harvey

@ RobertHarvey, FSM-Diagramme (die im Wesentlichen Flussdiagramme sind) werden ziemlich häufig im Hardware-Design verwendet
SK-Logik

Antworten:


7

Flussdiagramme und Pseudocode haben oft die gleiche Ausdruckskraft, unterscheiden sich jedoch in der Linearisierung. Pseudocode ist linear (dh eine Folge von Zeilen mit Anweisungen), ein Flussdiagramm nicht. Daher sind Flussdiagramme eine höhere Abstraktionsebene, die vor dem Schreiben von Pseudocode oder zur Dokumentation verwendet wird.

Flussdiagramme haben meiner Meinung nach zwei starke Vorteile gegenüber Pseudocode: Erstens sind sie grafisch. Viele nicht-technische Leute haben starke Angst vor strukturiertem Text, aber nicht vor grafischen Beschreibungen, so dass Flussdiagramme viel besser zu ihnen passen. Zweitens können Flussdiagramme Meta-Überlegungen wie die Darstellung der Hauptausführungslinie im Gegensatz zu Verzweigungen viel besser ausdrücken.

Ihre Fragen im Detail:

  1. Für ein wirklich kompliziertes Problem würden Sie zuerst Flussdiagramme und dann Pseudocode verwenden. Beide sind optional, wenn Sie sich sicher genug fühlen.
  2. Ja, Pseudocode hat den Vorteil, dass er mit echtem Code zusammengeführt werden kann. Steve McConnell empfiehlt beispielsweise dringend, zuerst Methoden im Pseudocode zu schreiben und dann den Pseudocode als Kommentare im Code zu belassen.
  3. Ich hatte immer das Gefühl, dass die Notwendigkeit, während des Entwurfs ein Flussdiagramm zu zeichnen, eine unzureichende Aufteilung Ihres Problems zeigt. Nicht triviale Flussdiagramme weisen auf eine verschlungene Logik hin, die mit hohen Kosten vermieden werden sollte.

1
Flussdiagramme sind auch eine gute Möglichkeit, um sicherzustellen, dass jeder Entscheidungspunkt die Aktionen sowohl für den / die weniger gebräuchlichen als auch für den am häufigsten verwendeten Pfad definiert. So stellen Sie sicher, dass Sie wissen, was zu tun ist, wenn die Genehmigung verweigert oder die Bestellung storniert wird! Es gibt oft mehr Fehler in den Randfällen, weil die Leute vergessen, sie zu machen, oder sie in Eile während der Qualitätssicherung machen, wenn Tests sie finden.
HLGEM

2

Auf Pseudocode

Um ehrlich zu sein, benutze ich nicht viel Pseudocode. Normalerweise ist es schneller, nur den Code zu schreiben. Wenn ich mit meinem Code fertig bin, ist es der tatsächliche Code. In einigen Fällen kann Pseudocode hilfreich sein, aber Sie arbeiten im Allgemeinen an etwas sehr Komplexem und versuchen nur, die Struktur einer Methode oder etwas anderem aufzubrechen. In diesen Fällen verwende ich Kommentare in meiner IDE, um die Struktur so zu gestalten, dass ich alles richtig mache. Dann gehe ich hinein und schreibe den eigentlichen Code in die Kommentare. Dies hilft mir ein paar Dinge zu tun:

  • Ich kann Bereiche sehen, die ich implementiert habe und nicht implementiert habe, indem ich die Kommentare lese und offensichtliche Lücken darin sehe.
  • Wenn ich den richtigen Code ausfülle, habe ich Kommentare, die auf Englisch erklären, was ich tue. (Sie werden es wahrscheinlich brauchen, wenn es so kompliziert ist, dass ich zuerst Pseudocode schreiben muss).

Auf Flussdiagrammen

Der Code ändert sich normalerweise so stark, dass Flussdiagramme nur für ein größeres, systemweiteres Architekturdesign oder eine Dokumentation hilfreich sind. In diesen Fällen werde ich nur ein Diagramm auf ein Whiteboard setzen, um den Kern der Dinge zu erfahren oder um es jemand anderem im Team zu zeigen. Wenn Sie nicht wirklich ein Flussdiagramm benötigen, um es besser zu verstehen, brauchen Sie sie nicht wirklich, um die Software richtig zu "machen". Heutzutage gibt es viele Plugins für IDEs , die Flussdiagramme aus dem Code selbst generieren, sowie Klassendiagramme und andere (und umgekehrt ). Die einzige Echtzeit, die Sie benötigen, um ein wirklich genaues Flussdiagramm zu erstellen, ist, wenn Sie nicht die gesamte Architektur und die Funktionsweise der Dinge auf einmal in Ihrem Kopf behalten können und über etwas Visuelles sprechen müssen, um Knicke zu erkennen.


0

Im Allgemeinen schreibe ich keine Flussdiagramme, während ich an persönlichen Projekten arbeite (da Projekte nicht sehr groß sind) und die meisten Eingaben, Ausgaben und Prozesse sind klar.

Da Sie jedoch anfangen werden, an komplexen großen Projekten mit verschiedenen Eingabequellen zu arbeiten, sind flache Dateien, Datenbanken, manuelle Schnittstellen usw. Flussdiagramme praktisch.

Ich würde Ihnen empfehlen, Pseudocode und UML-Digramme zu schreiben, da diese Tools Ihnen helfen, bessere Klassen, Methoden usw. zu finden. Manchmal finden Sie beim Schreiben von Pseudocode verschiedene und effizientere Möglichkeiten, ein Programm zu lösen.


0

Pseudocode dient dazu, eine Idee schnell für diejenigen darzustellen, die zumindest die Grundlagen des Codes verstehen. Flussdiagramme zeichnen hübsche Bilder, damit alle anderen das Gleiche verstehen.

Flussdiagramme werden häufig zu Dokumentationszwecken verwendet, da viele verschiedene Personen diese Dokumentation verwenden und Flussdiagramme für Nicht-Programmierer einfacher zu befolgen sind als Pseudocode. In einem Projekt, an dem Sie selbst arbeiten, ist das Festhalten an Pseudocode in Ordnung, da es weitaus nützlicher und einfacher zu erstellen ist, da Sie nur einen Texteditor benötigen.


0

Flussdiagramme bieten einen hohen Abstraktionsgrad, mit dem Sie beispielsweise planen können, wie die Dinge ablaufen sollen

Wenn x stirbt, gewinnt y

Sie müssen nicht davon abhängen, wie Sie das Programm in Bezug auf Klassen und Methoden entwerfen. Pseudocode bietet andererseits eine niedrigere Abstraktionsebene (obwohl dies wirklich davon abhängt).

if (isdead (s)) y.win ()

Somit kann Pseudocode nun basierend auf der von Ihnen verwendeten Sprache in ein tatsächliches Programm übersetzt werden.

Für ein Spiel würde ich empfehlen, zuerst ein Flussdiagramm zu verwenden, dann die Klassen und Methoden zu entwerfen, Pseudocode zu schreiben und diesen schließlich in ein Programm umzuwandeln


0

Ich würde die Art des Codes berücksichtigen, den Sie schreiben. Wenn es so ist:

  1. Sehr iterativ / rekursiv
  2. Zweige auf komplizierte Weise
  3. Implementiert in mehreren Systemen, die Sie darstellen möchten

In den ersten beiden Fällen ist der Pseudocode zunehmend schwerer zu lesen als ein Gesamtdiagramm. Auf der anderen Seite macht Code, der größtenteils linear ist, unglaublich langweilige Diagramme, die den Prozess tatsächlich schwerer verständlich machen, weil er ihn in die Luft jagt.

Im dritten Fall können Flussdiagramme Prozesse besser darstellen, die Systemgrenzen überschreiten und den gesamten Prozess darstellen.


0
  1. Sie sollten alles verwenden, mit dem Sie sich wohl fühlen. Mein Eindruck ist jedoch, dass Flussdiagramme heutzutage nicht häufig verwendet werden, um die Programmsteuerung zu skizzieren. Zum einen sind sie im Vergleich zum Pseudocode typischerweise unstrukturiert. Es ist üblicher, Klassenabhängigkeitsdiagramme wie UML zu verwenden, um Ihre Architektur auf einer viel höheren Ebene zu beschreiben. Wenn Ihre Anwendung über eine Zustandsmaschine verfügt, ist das Zeichnen eines (Flussdiagramm-ähnlichen) Zustandsmaschinendiagramms unerlässlich.
  2. Ich denke du bist hier richtig. Eine Möglichkeit besteht darin, Ihren Pseudocode zunächst als Kommentar in Ihre Quelldatei zu schreiben und die eigentlichen Implementierungszeilen dazwischen einzufügen.
  3. Verwenden Sie wieder alles, womit Sie sich wohl fühlen. Wenn Sie sich nicht sicher sind, probieren Sie beide aus. Ich gehe davon aus, dass Ihre Praxis schnell zu dem konvergiert, was für Sie am nützlichsten ist. Ich persönlich finde Flussdiagramme nur dann nützlich, wenn ich versuche, eine besonders komplizierte Ausführungsreihenfolge zu entwirren.

0

Warum Pseudocode schreiben, wenn Sie Java schreiben können? Ich habe festgestellt, dass Java, eine gute IDE, und Javadoc der einfachste Weg sind, ein Programmierproblem zu erfassen - zumindest ein objektorientiertes . (Und ein Arcade-Spiel sollte OO sein.) Die Sprache wurde von Grund auf dafür entwickelt. Es ist einfach und unkompliziert. (Für viele Zwecke vielleicht zu einfach, aber das Beste, was ich dafür gesehen habe.) Der Hypertext im Javadoc und über eine IDE im Code selbst ergibt ein verständlicheres "Diagramm", als Sie selbst heranziehen könnten ein großes Blatt Papier. Java-Code ist so einfach wie jeder Pseudocode und viel strenger. Und sobald Sie es "grafisch" und "pseudo" codiert haben, wird das Programm tatsächlich ausgeführt!


1
Java und andere können langwierig sein. "public static void main .." oder "system.out.println" oder lange Bezeichner mit Camelback-Notation, dort langwierig. Dann können Ausnahmen, die 2b abgefangen haben. Und das Aufrufen von Bibliotheken kann sein Ich erinnere mich, dass ich vor 10 Jahren eine Datei geöffnet habe. so etwas wie neuer BufferedReader (neuer InputStreamReader (System.in)); anscheinend jetzt einfacher mkyong.com/java/… Aber wirklich jede Bibliothek, die Sie aufrufen, könnte langwierig sein, nicht wie ein Pseudocode, der so
präzise sein

Auch in Java oder einer anderen Sprache stoßen Sie beim Kompilieren auf Fehler. nichts davon mit Pseudocode. Sie können sich ohne Ablenkung auf Design konzentrieren. Kommentare zu Pseudocode können viel kürzer sein, da Pseudocode für den Verstand klarer ist als für den Verstand. Sie sind nicht darauf beschränkt, nur in einer Sprache zu denken, und Sie werden vielleicht sehen, dass ich diese andere Sprache verwenden werde. Das Schreiben ist schneller und weniger schmerzhaft (es sind keine Kompilierungen erforderlich - selbst die sehr fließenden Kompilierungsfehler werden angezeigt), und weniger Zeit zum Schreiben erleichtert das Redesign.
Barlop

@barlop: Es funktioniert für mich, aber es funktioniert möglicherweise nicht für alle. Ich lasse viel Code (z. B. "BufferedReader") aus meinen Klassen, bis ich ihn brauche oder wissen muss, ob ich ihn zum Laufen bringen kann. Selbst wenn ich es habe, ist es in Klassen, die ich bei der Betrachtung des Gesamtdesigns nicht beachten muss, gut versteckt. Compiler - Fehler sind leicht behoben und können wichtige Konstruktionsfehler vermeiden, wie zum Beispiel der falsche Klasse an einem Punkt mit dem Sie nicht einmal erhalten eine Instanz der richtigen Klasse. Ich gebe zu , ich habe „designed“ auf diese Weise Software, kann nur in Java geschrieben werden, aber die OP ist mit Hilfe von Java.
RalphChapin

Angenommen, Sie möchten eine Datei öffnen. Sehen Sie, wie der Pseudocode von openfile ("c: \ blah \ file") kürzer ist als Java, um dies zu tun? oder ist dieser druck "dfdfd" kürzer als der java um es zu tun? Ich habe (noch) keine Seiten mit Pseudocode und mehreren Klassen erstellt. teils, weil ich seit Ewigkeiten keine großen Programme mehr geschrieben habe b) teils, weil ich nicht glaube, dass ich würde, ich denke, ich würde einen Pseudocode schreiben und ihn dann implementieren lassen. Jeder andere Pseudocode, falls vorhanden, wäre höher. Ich könnte eine Liste aller Klassen und Methoden einschließlich Konstruktoren haben. Also weiß ich, welche Klassen was sind und dass ich eine Instanz davon bekommen kann.
Barlop

Ich wäre also nicht in der Lage, die falsche Klasse zu verwenden, aber wenn es mein Programm wäre, hätte ich in meinen Notizen notiert, welche Klasse was ist. Klassen sind ziemlich hoch. Ich hätte eine Notiz dazu, wenn ich mich nicht daran erinnern kann. Und bei Pseudocode dreht sich alles um das, was man meint. Wenn Sie also eine Instanz der Klasse blah erstellen wollten und bleh geschrieben haben, dann ist dies nur ein Tippfehler, der Ihr Design jedoch nicht behindert. (Wenn du für dich selbst schreibst, weil du weißt, was du meinst, und du hast es wie ein bla benutzt).
Barlop

0

Sie könnten ein Flussdiagramm verwenden, wenn Sie durch if-Anweisungen wirklich verwirrt sind und versuchen, dies zu verstehen. Wenn Sie versuchen, eine Schleife zu verstehen, sehen Sie sich die Wirkung von Zählern an. Wenn Sie lernen, kann es viel helfen.

Es kann sich etwas restriktiv anfühlen, weil Sie kurze Aussagen in Kästchen setzen müssen. Und wenn Ihr Programm sehr linear ist und Ihre Schleifen und Wenns trivial sind, dann sehe ich keine Verwendung dafür.

Pseudocode ist nützlich für das Entwerfen eines Programms. Ohne die Ablenkung, die Syntax richtig einstellen zu müssen, und ohne die Langeweile, die manche Sprachen mit sich bringen können. Die Tatsache, dass das Schreiben schneller ist, erleichtert auch das Neugestalten von Code. Und Sie können so präzise sein, wie es Ihr Verstand wünscht, es ist angenehm zu schreiben, erfordert weniger mentale Anstrengungen, um es zum Laufen zu bringen (da kein oder viel weniger Debugging) und mehr Fähigkeit, sich auf das Gesamtbild und das Design zu konzentrieren.

Also nützlich für dich.

Sie können auch zur Kommunikation mit anderen verwendet werden.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.