Programmablaufplan: Unterschied zwischen den Versionen

Aus KGS-Wiki
K (Link hinzugefügt)
Keine Bearbeitungszusammenfassung
 
(2 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
{{Thumbnailbox|INHALT=<graphviz>digraph G {
{{Thumbnailbox|INHALT=<graphviz format="svg">digraph PAP {
   node [ fontname="Source Sans Pro" ];
   node [ fontname="Source Sans Pro" ];
   edge [ fontname="Source Sans Pro" ];
   edge [ fontname="Source Sans Pro" ];
  splines=false;
layout="neato"
 
start[label="Start", shape="ellipse", pos="0,1.5!"];
  draw [
traurig[label="Bin ich\ntraurig?", shape="diamond", pos="0,0!"];
    label = "Start";
korn[label="Trinke\neinen Korn", shape="rectangle", pos="2.5,0!"];
    shape = oval;
ende[label="Ende", shape="ellipse", pos="-2.5,0!"];
  ];
inv1[shape="point", width="0", height="0", style="invis", pos="2.5,-1!"];
  win [
inv2[shape="point", width="0", height="0", style="invis", pos="0,-1!"];
    label = "Ende";
start -> traurig;
    shape = oval;
traurig -> korn [label="Ja"];
  ];
korn -> inv1 [arrowhead="none"];
  guess [
inv1 -> inv2 [arrowhead="none"];
    label = "Bin ich \ntraurig?";
inv2 -> traurig;
    shape = diamond;
traurig -> ende [label="Nein"];
  ];
}
  point [
</graphviz>
    label = "Trinke\neinen Korn";
    shape = rect;
  ];
 
  draw -> guess;
  win -> guess [ label = "Nein"; dir=back ];
  guess -> point [ label = "Ja" ];
 
  {
    rank=same;
    guess; point; win;
  }
 
  {
    rank=same;
    guess2; point2;
  }
 
  guess2 [
      label = "               ";
      color= white ;
  ];
  point2 [
      label = "                 ";
      color=white;
  ];
 
  point:s -> point2:n [ arrowhead = none ];
  guess2:n -> point2:n [ arrowhead = none ];
  guess2:n -> guess:s;
}</graphviz>
|CAPTION=Ein Programmablaufplan zum [https://www.youtube.com/watch?v=ngwsPE5SV7I Erhardt-Algorithmus]}}
|CAPTION=Ein Programmablaufplan zum [https://www.youtube.com/watch?v=ngwsPE5SV7I Erhardt-Algorithmus]}}
[[Programmablaufplan|Programmablaufpläne (PAPs)]] sind ein Diagrammtyp, mit dem der [[Kontrollfluss|Ablauf]] von [[Algorithmus|Algorithmen]] visualisiert werden kann.
[[Programmablaufplan|Programmablaufpläne (PAPs)]] sind ein Diagrammtyp, mit dem der [[Kontrollfluss|Ablauf]] von [[Algorithmus|Algorithmen]] visualisiert werden kann.
Zeile 55: Zeile 24:
# Es ist leichter, kleine elementare Anweisungen in eine Programmiersprache zu übersetzen, als komplexe Ideen.
# Es ist leichter, kleine elementare Anweisungen in eine Programmiersprache zu übersetzen, als komplexe Ideen.
# Wenn man den Ablauf auf Papier neben sich liegen hat, verliert man das große Ganze, an dem man gerade sitzt, nicht so schnell aus dem Blick und verzettelt sich nicht.
# Wenn man den Ablauf auf Papier neben sich liegen hat, verliert man das große Ganze, an dem man gerade sitzt, nicht so schnell aus dem Blick und verzettelt sich nicht.
# Wenn man alle Abläuft auf Papier festgehalten hat, kann man die Umsetzung leichter delegieren
# Wenn man alle Abläufe auf Papier festgehalten hat, kann man die Umsetzung leichter delegieren


== Syntaxelemente ==
== Syntaxelemente ==

Aktuelle Version vom 23. September 2024, 15:37 Uhr

Ein Programmablaufplan zum Erhardt-Algorithmus

Programmablaufpläne (PAPs) sind ein Diagrammtyp, mit dem der Ablauf von Algorithmen visualisiert werden kann.

Indem man sich das, was man programmieren möchte, zunächst analog und schriftlich veranschaulicht, kann man sich eine Menge Programmieraufwand ersparen:

  1. Der Ablauf des Algorithmus kann schon vor der Implementierung, etwa mit Trace-Tabellen händisch getestet werden.
  2. Es ist leichter, kleine elementare Anweisungen in eine Programmiersprache zu übersetzen, als komplexe Ideen.
  3. Wenn man den Ablauf auf Papier neben sich liegen hat, verliert man das große Ganze, an dem man gerade sitzt, nicht so schnell aus dem Blick und verzettelt sich nicht.
  4. Wenn man alle Abläufe auf Papier festgehalten hat, kann man die Umsetzung leichter delegieren

Syntaxelemente

flowchart TD node["Anweisung"]

flowchart TD node{"Bedingung"}

flowchart TD node[/"Ein-/Ausgabe"/]

flowchart TD node[["Unterprogramm"]]

flowchart LR start(["Start"]) ende(["Ende"])

Ein Programmablaufplan besteht aus den einzelnen Ablaufelementen, die mit Pfeilen verbunden sind. Der besseren Lesbarkeit halber ist ein Programmablaufplan typischerweise von oben nach unten angeordnet. Davon darf aber abgewichen werden, das Ziel sollte immer die bestmögliche Lesbarkeit sein.

Die einzelnen Ablaufelemente sind

Anweisung

Einfache Anweisungen wie lösche die Ausgabe oder x := x * 2 werden in ein Rechteck gesetzt. Von jeder Anweisung darf nur ein weiterer Pfeil ausgehen, sonst wäre der Ablauf des Algorithmus nicht mehr eindeutig.

Bedingung

Bedingungen wie x > 2? oder name = "Hans Meier"? werden in Rauten gesetzt, die auf der Spitze stehen. Von jeder Bedingung müssen zwei Pfeile ausgehen, die mit ja und nein beschriftet sind. Diese Pfeile dürfen auch auf vorhergehende Stellen im Plan zeigen.

Bedingungen enden immer mit einem Fragezeichen.

Ein- und Ausgabe

Ein- und Ausgaben wie x := Eingabe oder Gib y aus werden in Parallelogramme gesetzt. Der Übersichtlichkeit halber kann man in die untere rechte Ecke ein kleines E für Eingaben oder ein A für Ausgaben setzen, muss man aber nicht.

Unterprogramme

Um PAPs übersichtlicher zu halten, können einzelne Programmteile in Unterprogramme ausgelagert werden. Für jedes Unterprogramm wird ein eigener PAP gezeichnet. Der Aufruf eines Unterprogramms wird in ein Rechteck mit doppelten senkrechten Linien gesetzt.

Start und Ende

Jeder PAP beginnt mit einem Startknoten, der typischerweise ganz oben steht, und endet mit einem Endknoten, der typischerweise ganz unten steht. Dies dient aber nur der Lesbarkeit und ist keine feste Vorschrift.